diff --git a/internal/model/enclosure.go b/internal/model/enclosure.go index f8b60c6b..94c02002 100644 --- a/internal/model/enclosure.go +++ b/internal/model/enclosure.go @@ -45,8 +45,11 @@ func (e *Enclosure) IsVideo() bool { func (e *Enclosure) IsImage() bool { mimeType := strings.ToLower(e.MimeType) + if strings.HasPrefix(mimeType, "image/") { + return true + } mediaURL := strings.ToLower(e.URL) - return strings.HasPrefix(mimeType, "image/") || strings.HasSuffix(mediaURL, ".jpg") || strings.HasSuffix(mediaURL, ".jpeg") || strings.HasSuffix(mediaURL, ".png") || strings.HasSuffix(mediaURL, ".gif") + return strings.HasSuffix(mediaURL, ".jpg") || strings.HasSuffix(mediaURL, ".jpeg") || strings.HasSuffix(mediaURL, ".png") || strings.HasSuffix(mediaURL, ".gif") } // EnclosureList represents a list of attachments. @@ -55,8 +58,10 @@ type EnclosureList []*Enclosure // FindMediaPlayerEnclosure returns the first enclosure that can be played by a media player. func (el EnclosureList) FindMediaPlayerEnclosure() *Enclosure { for _, enclosure := range el { - if enclosure.URL != "" && strings.Contains(enclosure.MimeType, "audio/") || strings.Contains(enclosure.MimeType, "video/") { - return enclosure + if enclosure.URL != "" { + if enclosure.IsAudio() || enclosure.IsVideo() { + return enclosure + } } } @@ -65,7 +70,7 @@ func (el EnclosureList) FindMediaPlayerEnclosure() *Enclosure { func (el EnclosureList) ContainsAudioOrVideo() bool { for _, enclosure := range el { - if strings.Contains(enclosure.MimeType, "audio/") || strings.Contains(enclosure.MimeType, "video/") { + if enclosure.IsAudio() || enclosure.IsVideo() { return true } } @@ -78,12 +83,7 @@ func (el EnclosureList) ProxifyEnclosureURL(router *mux.Router) { if proxyOption != "none" { for i := range el { if urllib.IsHTTPS(el[i].URL) { - for _, mediaType := range config.Opts.MediaProxyResourceTypes() { - if strings.HasPrefix(el[i].MimeType, mediaType+"/") { - el[i].URL = mediaproxy.ProxifyAbsoluteURL(router, el[i].URL) - break - } - } + proxifyAbsoluteURLIfMimeType(el[i], router) } } } @@ -93,11 +93,15 @@ func (e *Enclosure) ProxifyEnclosureURL(router *mux.Router) { proxyOption := config.Opts.MediaProxyMode() if proxyOption == "all" || proxyOption != "none" && !urllib.IsHTTPS(e.URL) { - for _, mediaType := range config.Opts.MediaProxyResourceTypes() { - if strings.HasPrefix(e.MimeType, mediaType+"/") { - e.URL = mediaproxy.ProxifyAbsoluteURL(router, e.URL) - break - } + proxifyAbsoluteURLIfMimeType(e, router) + } +} + +func proxifyAbsoluteURLIfMimeType(e *Enclosure, router *mux.Router) { + for _, mediaType := range config.Opts.MediaProxyResourceTypes() { + if strings.HasPrefix(e.MimeType, mediaType+"/") { + e.URL = mediaproxy.ProxifyAbsoluteURL(router, e.URL) + break } } }