mirror of
https://github.com/miniflux/v2.git
synced 2025-08-06 17:41:00 +00:00
refactor(enclosure): simplify model/enclosure.go
- Reuse isAudio and isVideo instead of re-implementing them - In IsImage, return early is the mimetype is enough, instead of systematically lowercasing the url as well. - Extract the common parts of the two ProxifyAbsoluteURL implementations into a private function, make the code smaller and clearer. - Fix a logic error where `A && B || C` was used instead of `A && (B || C)
This commit is contained in:
parent
f860daef7f
commit
50d5cb96c8
1 changed files with 19 additions and 15 deletions
|
@ -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,17 +58,19 @@ 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/") {
|
||||
if enclosure.URL != "" {
|
||||
if enclosure.IsAudio() || enclosure.IsVideo() {
|
||||
return enclosure
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
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,6 +93,11 @@ func (e *Enclosure) ProxifyEnclosureURL(router *mux.Router) {
|
|||
proxyOption := config.Opts.MediaProxyMode()
|
||||
|
||||
if proxyOption == "all" || proxyOption != "none" && !urllib.IsHTTPS(e.URL) {
|
||||
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)
|
||||
|
@ -100,4 +105,3 @@ func (e *Enclosure) ProxifyEnclosureURL(router *mux.Router) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue