mirror of
https://github.com/iv-org/invidious.git
synced 2026-05-18 14:11:22 -05:00
Fix empty query separator in playlist RSS links
This commit is contained in:
parent
f914ce8040
commit
56f8935f75
26
spec/invidious/routes/feeds_spec.cr
Normal file
26
spec/invidious/routes/feeds_spec.cr
Normal file
@ -0,0 +1,26 @@
|
||||
require "../../spec_helper"
|
||||
|
||||
Spectator.describe "Feeds" do
|
||||
describe "#add_video_query_params" do
|
||||
it "does not append an empty query separator" do
|
||||
request_target = "/watch?v=7uQOBLCcp3I"
|
||||
params = HTTP::Params.parse("")
|
||||
|
||||
expect(add_video_query_params(request_target, params)).to eq(request_target)
|
||||
end
|
||||
|
||||
it "appends non-empty params to watch links" do
|
||||
request_target = "/watch?v=7uQOBLCcp3I"
|
||||
params = HTTP::Params.parse("listen=1")
|
||||
|
||||
expect(add_video_query_params(request_target, params)).to eq("#{request_target}&listen=1")
|
||||
end
|
||||
|
||||
it "leaves non-watch links unchanged" do
|
||||
request_target = "/vi/7uQOBLCcp3I/hqdefault.jpg"
|
||||
params = HTTP::Params.parse("listen=1")
|
||||
|
||||
expect(add_video_query_params(request_target, params)).to eq(request_target)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -273,6 +273,15 @@ def get_referer(env, fallback = "/", unroll = true)
|
||||
return referer
|
||||
end
|
||||
|
||||
def add_video_query_params(request_target : String, params : HTTP::Params) : String
|
||||
params = params.to_s
|
||||
|
||||
return request_target unless request_target.starts_with?("/watch?v=")
|
||||
return request_target if params.empty?
|
||||
|
||||
"#{request_target}&#{params}"
|
||||
end
|
||||
|
||||
def sha256(text)
|
||||
digest = OpenSSL::Digest.new("SHA256")
|
||||
digest << text
|
||||
|
||||
@ -320,8 +320,7 @@ module Invidious::Routes::Feeds
|
||||
case attribute.name
|
||||
when "url", "href"
|
||||
request_target = URI.parse(node[attribute.name]).request_target
|
||||
query_string_opt = request_target.starts_with?("/watch?v=") ? "&#{params}" : ""
|
||||
node[attribute.name] = "#{HOST_URL}#{request_target}#{query_string_opt}"
|
||||
node[attribute.name] = "#{HOST_URL}#{add_video_query_params(request_target, params)}"
|
||||
else nil # Skip
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user