diff options
author | 2024-08-18 20:53:19 +0200 | |
---|---|---|
committer | 2024-08-18 11:53:19 -0700 | |
commit | 810b3517725b7e1c4f66ec9e40400bf1d1cf24dd (patch) | |
tree | 90586698031cb913a44f487641aca4081d120c8c /internal/model/enclosure.go | |
parent | 89ff33ddd0125782ee6dbe075a3e21c0eacda15e (diff) | |
download | v2-810b3517725b7e1c4f66ec9e40400bf1d1cf24dd.tar.gz v2-810b3517725b7e1c4f66ec9e40400bf1d1cf24dd.tar.zst v2-810b3517725b7e1c4f66ec9e40400bf1d1cf24dd.zip |
feat: add API routes `/v1/enclosures/{enclosureID}`
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 + } + } + } +} |