summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2024-11-08 23:13:48 +0100
committerSamantaz Fox <coding@samantaz.fr>2024-11-08 23:26:32 +0100
commit42da2547e3885cc2ab305465970f4c0a2cc824ad (patch)
tree5f5ecdef1d1649064269d719b54975433e52a163
parent792d0d5f6df912039a58768e6ff503ae00abe7c0 (diff)
parent6e39b9b303930f931b5a5a60c75528c4d9db3587 (diff)
downloadinvidious-42da2547e3885cc2ab305465970f4c0a2cc824ad.tar.gz
invidious-42da2547e3885cc2ab305465970f4c0a2cc824ad.tar.bz2
invidious-42da2547e3885cc2ab305465970f4c0a2cc824ad.zip
Use make_client instead of calling HTTP::Client (#4709)
No related issue
-rw-r--r--src/invidious/routes/api/v1/search.cr4
-rw-r--r--src/invidious/yt_backend/connection_pool.cr19
2 files changed, 8 insertions, 15 deletions
diff --git a/src/invidious/routes/api/v1/search.cr b/src/invidious/routes/api/v1/search.cr
index 2922b060..59a30745 100644
--- a/src/invidious/routes/api/v1/search.cr
+++ b/src/invidious/routes/api/v1/search.cr
@@ -31,9 +31,7 @@ module Invidious::Routes::API::V1::Search
query = env.params.query["q"]? || ""
begin
- client = HTTP::Client.new("suggestqueries-clients6.youtube.com")
- client.before_request { |r| add_yt_headers(r) }
-
+ client = make_client(URI.parse("https://suggestqueries-clients6.youtube.com"), force_youtube_headers: true)
url = "/complete/search?client=youtube&hl=en&gl=#{region}&q=#{URI.encode_www_form(query)}&gs_ri=youtube&ds=yt"
response = client.get(url).body
diff --git a/src/invidious/yt_backend/connection_pool.cr b/src/invidious/yt_backend/connection_pool.cr
index c7c4c675..083c10c2 100644
--- a/src/invidious/yt_backend/connection_pool.cr
+++ b/src/invidious/yt_backend/connection_pool.cr
@@ -23,11 +23,8 @@ struct YoutubeConnectionPool
rescue ex
conn.close
- conn = HTTP::Client.new(url)
- conn.proxy = make_configured_http_proxy_client() if CONFIG.http_proxy
- conn.family = CONFIG.force_resolve
- conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC
- conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
+ conn = make_client(url, force_resolve: true)
+
response = yield conn
ensure
pool.release(conn)
@@ -38,11 +35,7 @@ struct YoutubeConnectionPool
private def build_pool
DB::Pool(HTTP::Client).new(initial_pool_size: 0, max_pool_size: capacity, max_idle_pool_size: capacity, checkout_timeout: timeout) do
- conn = HTTP::Client.new(url)
- conn.family = CONFIG.force_resolve
- conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC
- conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
- conn
+ next make_client(url, force_resolve: true)
end
end
end
@@ -62,15 +55,17 @@ def add_yt_headers(request)
end
end
-def make_client(url : URI, region = nil, force_resolve : Bool = false)
+def make_client(url : URI, region = nil, force_resolve : Bool = false, force_youtube_headers : Bool = false)
client = HTTP::Client.new(url)
+ client.proxy = make_configured_http_proxy_client() if CONFIG.http_proxy
# Force the usage of a specific configured IP Family
if force_resolve
client.family = CONFIG.force_resolve
+ client.family = Socket::Family::INET if client.family == Socket::Family::UNSPEC
end
- client.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
+ client.before_request { |r| add_yt_headers(r) } if url.host.try &.ends_with?("youtube.com") || force_youtube_headers
client.read_timeout = 10.seconds
client.connect_timeout = 10.seconds