diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2024-11-08 23:13:48 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2024-11-08 23:26:32 +0100 |
| commit | 42da2547e3885cc2ab305465970f4c0a2cc824ad (patch) | |
| tree | 5f5ecdef1d1649064269d719b54975433e52a163 | |
| parent | 792d0d5f6df912039a58768e6ff503ae00abe7c0 (diff) | |
| parent | 6e39b9b303930f931b5a5a60c75528c4d9db3587 (diff) | |
| download | invidious-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.cr | 4 | ||||
| -rw-r--r-- | src/invidious/yt_backend/connection_pool.cr | 19 |
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 |
