diff options
Diffstat (limited to 'internal/model/enclosure.go')
-rw-r--r-- | internal/model/enclosure.go | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/internal/model/enclosure.go b/internal/model/enclosure.go index c9ec485f..0e794575 100644 --- a/internal/model/enclosure.go +++ b/internal/model/enclosure.go @@ -2,7 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 package model // import "miniflux.app/v2/internal/model" -import "strings" +import ( + "strings" + + "github.com/gorilla/mux" + "miniflux.app/v2/internal/config" + "miniflux.app/v2/internal/mediaproxy" + "miniflux.app/v2/internal/urllib" +) // Enclosure represents an attachment. type Enclosure struct { @@ -15,6 +22,10 @@ type Enclosure struct { MediaProgression int64 `json:"media_progression"` } +type EnclosureUpdateRequest struct { + MediaProgression int64 `json:"media_progression"` +} + // Html5MimeType will modify the actual MimeType to allow direct playback from HTML5 player for some kind of MimeType func (e Enclosure) Html5MimeType() string { if e.MimeType == "video/m4v" { @@ -34,3 +45,33 @@ func (el EnclosureList) ContainsAudioOrVideo() bool { } return false } + +func (el EnclosureList) ProxifyEnclosureURL(router *mux.Router) { + proxyOption := config.Opts.MediaProxyMode() + + if proxyOption == "all" || 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 + } + } + } + } + } +} + +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 + } + } + } +} |