summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsyeopite <syeopite@syeopite.dev>2024-05-22 11:29:28 -0700
committersyeopite <syeopite@syeopite.dev>2024-08-24 19:34:09 -0700
commit1124dd645d0db872b01a0c476c205da057a8fd04 (patch)
treedc780f5fc1b4b9a1a7d01d404c66b80ccbd24fe1 /src
parentc5fdd9ea65d714b6105b187d690c9cdcc3f4a967 (diff)
downloadinvidious-1124dd645d0db872b01a0c476c205da057a8fd04.tar.gz
invidious-1124dd645d0db872b01a0c476c205da057a8fd04.tar.bz2
invidious-1124dd645d0db872b01a0c476c205da057a8fd04.zip
Use `make_client` instead of calling `HTTP::Client`
Using `make_client` to create `HTTP::Client`, allows for a simple way to easily add logic to all `HTTP::Client` initialized within Invidious.
Diffstat (limited to 'src')
-rw-r--r--src/invidious/routes/api/v1/search.cr4
-rw-r--r--src/invidious/yt_backend/connection_pool.cr13
2 files changed, 5 insertions, 12 deletions
diff --git a/src/invidious/routes/api/v1/search.cr b/src/invidious/routes/api/v1/search.cr
index 2922b060..6785ef73 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 ca612083..84d857ec 100644
--- a/src/invidious/yt_backend/connection_pool.cr
+++ b/src/invidious/yt_backend/connection_pool.cr
@@ -30,11 +30,8 @@ struct YoutubeConnectionPool
response = yield conn
rescue ex
conn.close
- conn = HTTP::Client.new(url)
-
- conn.family = CONFIG.force_resolve
+ conn = make_client(url)
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"
response = yield conn
ensure
pool.release(conn)
@@ -45,16 +42,14 @@ 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 = make_client(url, force_solve = true)
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
end
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_header : Bool = false)
client = HTTP::Client.new(url)
# Force the usage of a specific configured IP Family
@@ -62,7 +57,7 @@ def make_client(url : URI, region = nil, force_resolve : Bool = false)
client.family = CONFIG.force_resolve
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 == "www.youtube.com" || force_youtube_header
client.read_timeout = 10.seconds
client.connect_timeout = 10.seconds