summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsyeopite <syeopite@syeopite.dev>2021-10-08 06:30:47 -0700
committersyeopite <syeopite@syeopite.dev>2021-11-12 03:47:57 -0800
commit83556bace29cff730d0461916cb0d9882b777f98 (patch)
tree87e3e6c7e2b50a2de32d34e0a2af9f31c678930c /src
parent814c9e6c3ae81664acec6ab91e782eaca8ed0f75 (diff)
downloadinvidious-83556bace29cff730d0461916cb0d9882b777f98.tar.gz
invidious-83556bace29cff730d0461916cb0d9882b777f98.tar.bz2
invidious-83556bace29cff730d0461916cb0d9882b777f98.zip
Allow thumbnail queries with QUIC disabled
Diffstat (limited to 'src')
-rw-r--r--src/invidious/routes/images.cr59
1 files changed, 44 insertions, 15 deletions
diff --git a/src/invidious/routes/images.cr b/src/invidious/routes/images.cr
index a10e0963..2272a941 100644
--- a/src/invidious/routes/images.cr
+++ b/src/invidious/routes/images.cr
@@ -223,7 +223,17 @@ module Invidious::Routes::Images
id = env.params.url["id"]
name = env.params.url["name"]
- headers = HTTP::Headers{":authority" => "i.ytimg.com"}
+ headers = (
+ {% unless flag?(:disable_quic) %}
+ if CONFIG.use_quic
+ HTTP::Headers{":authority" => "i.ytimg.com"}
+ else
+ HTTP::Headers.new
+ end
+ {% else %}
+ HTTP::Headers.new
+ {% end %}
+ )
if name == "maxres.jpg"
build_thumbnails(id).each do |thumb|
@@ -233,6 +243,7 @@ module Invidious::Routes::Images
end
end
end
+
url = "/vi/#{id}/#{name}"
REQUEST_HEADERS_WHITELIST.each do |header|
@@ -241,25 +252,43 @@ module Invidious::Routes::Images
end
end
- begin
- YT_POOL.client &.get(url, headers) do |response|
- env.response.status_code = response.status_code
- response.headers.each do |key, value|
- if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase)
- env.response.headers[key] = value
- end
+ request_proc = ->(response : HTTP::Client::Response) {
+ env.response.status_code = response.status_code
+ response.headers.each do |key, value|
+ if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase)
+ env.response.headers[key] = value
end
+ end
- env.response.headers["Access-Control-Allow-Origin"] = "*"
-
- if response.status_code >= 300 && response.status_code != 404
- env.response.headers.delete("Transfer-Encoding")
- break
- end
+ env.response.headers["Access-Control-Allow-Origin"] = "*"
- proxy_file(response, env)
+ if response.status_code >= 300 && response.status_code != 404
+ env.response.headers.delete("Transfer-Encoding")
+ return
end
+
+ proxy_file(response, env)
+ }
+
+ begin
+ {% unless flag?(:disable_quic) %}
+ if CONFIG.use_quic
+ YT_POOL.client &.get(url, headers) do |resp|
+ return request_proc.call(resp)
+ end
+ else
+ HTTP::Client.get("https://i.ytimg.com#{url}") do |resp|
+ return request_proc.call(resp)
+ end
+ end
+ {% else %}
+ # This can likely be optimized into a (small) pool sometime in the future.
+ HTTP::Client.get("https://i.ytimg.com#{url}") do |resp|
+ return request_proc.call(resp)
+ end
+ {% end %}
rescue ex
end
+
end
end