Proxify video poster attribute
This commit is contained in:
parent
c595c80356
commit
1da65d97d8
2 changed files with 64 additions and 0 deletions
|
@ -61,6 +61,14 @@ func genericProxyRewriter(router *mux.Router, proxifyFunction urlProxyRewriter,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
doc.Find("video").Each(func(i int, video *goquery.Selection) {
|
||||||
|
if posterAttrValue, ok := video.Attr("poster"); ok {
|
||||||
|
if !isDataURL(posterAttrValue) && (proxyOption == "all" || !urllib.IsHTTPS(posterAttrValue)) {
|
||||||
|
video.SetAttr("poster", proxifyFunction(router, posterAttrValue))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
case "audio":
|
case "audio":
|
||||||
doc.Find("audio").Each(func(i int, audio *goquery.Selection) {
|
doc.Find("audio").Each(func(i int, audio *goquery.Selection) {
|
||||||
if srcAttrValue, ok := audio.Attr("src"); ok {
|
if srcAttrValue, ok := audio.Attr("src"); ok {
|
||||||
|
@ -85,6 +93,12 @@ func genericProxyRewriter(router *mux.Router, proxifyFunction urlProxyRewriter,
|
||||||
video.SetAttr("src", proxifyFunction(router, srcAttrValue))
|
video.SetAttr("src", proxifyFunction(router, srcAttrValue))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if posterAttrValue, ok := video.Attr("poster"); ok {
|
||||||
|
if !isDataURL(posterAttrValue) && (proxyOption == "all" || !urllib.IsHTTPS(posterAttrValue)) {
|
||||||
|
video.SetAttr("poster", proxifyFunction(router, posterAttrValue))
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
doc.Find("video source").Each(func(i int, sourceElement *goquery.Selection) {
|
doc.Find("video source").Each(func(i int, sourceElement *goquery.Selection) {
|
||||||
|
|
|
@ -377,3 +377,53 @@ func TestProxyWithImageSourceDataURL(t *testing.T) {
|
||||||
t.Errorf(`Not expected output: got %s`, output)
|
t.Errorf(`Not expected output: got %s`, output)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestProxyFilterWithVideo(t *testing.T) {
|
||||||
|
os.Clearenv()
|
||||||
|
os.Setenv("PROXY_OPTION", "all")
|
||||||
|
os.Setenv("PROXY_MEDIA_TYPES", "video")
|
||||||
|
os.Setenv("PROXY_PRIVATE_KEY", "test")
|
||||||
|
|
||||||
|
var err error
|
||||||
|
parser := config.NewParser()
|
||||||
|
config.Opts, err = parser.ParseEnvironmentVariables()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf(`Parsing failure: %v`, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
r := mux.NewRouter()
|
||||||
|
r.HandleFunc("/proxy/{encodedDigest}/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
||||||
|
|
||||||
|
input := `<video poster="https://example.com/img.png" src="https://example.com/video.mp4"></video>`
|
||||||
|
expected := `<video poster="/proxy/aDFfroYL57q5XsojIzATT6OYUCkuVSPXYJQAVrotnLw=/aHR0cHM6Ly9leGFtcGxlLmNvbS9pbWcucG5n" src="/proxy/0y3LR8zlx8S8qJkj1qWFOO6x3a-5yf2gLWjGIJV5yyc=/aHR0cHM6Ly9leGFtcGxlLmNvbS92aWRlby5tcDQ="></video>`
|
||||||
|
output := ProxyRewriter(r, input)
|
||||||
|
|
||||||
|
if expected != output {
|
||||||
|
t.Errorf(`Not expected output: got %s`, output)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestProxyFilterVideoPoster(t *testing.T) {
|
||||||
|
os.Clearenv()
|
||||||
|
os.Setenv("PROXY_OPTION", "all")
|
||||||
|
os.Setenv("PROXY_MEDIA_TYPES", "image")
|
||||||
|
os.Setenv("PROXY_PRIVATE_KEY", "test")
|
||||||
|
|
||||||
|
var err error
|
||||||
|
parser := config.NewParser()
|
||||||
|
config.Opts, err = parser.ParseEnvironmentVariables()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf(`Parsing failure: %v`, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
r := mux.NewRouter()
|
||||||
|
r.HandleFunc("/proxy/{encodedDigest}/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
||||||
|
|
||||||
|
input := `<video poster="https://example.com/img.png" src="https://example.com/video.mp4"></video>`
|
||||||
|
expected := `<video poster="/proxy/aDFfroYL57q5XsojIzATT6OYUCkuVSPXYJQAVrotnLw=/aHR0cHM6Ly9leGFtcGxlLmNvbS9pbWcucG5n" src="https://example.com/video.mp4"></video>`
|
||||||
|
output := ProxyRewriter(r, input)
|
||||||
|
|
||||||
|
if expected != output {
|
||||||
|
t.Errorf(`Not expected output: got %s`, output)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue