invidious-mod/src/invidious/http_server/utils.cr

41 行
932 B
Crystal

require "uri"
module Invidious::HttpServer
module Utils
extend self
def proxy_video_url(raw_url : String, *, region : String? = nil, absolute : Bool = false)
url = URI.parse(raw_url)
# Add some URL parameters
params = url.query_params
params["host"] = url.host.not_nil! # Should never be nil, in theory
params["region"] = region if !region.nil?
if absolute
return "#{HOST_URL}#{url.request_target}?#{params}"
else
return "#{url.request_target}?#{params}"
end
end
def add_params_to_url(url : String | URI, params : URI::Params) : URI
url = URI.parse(url) if url.is_a?(String)
url_query = url.query || ""
# Append the parameters
url.query = String.build do |str|
if !url_query.empty?
str << url_query
str << '&'
end
str << params
end
return url
end
end
end