summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/invidious.cr19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 6d84b1e1..ca3a40da 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -7,6 +7,10 @@ require "time"
PG_DB = DB.open "postgres://kemal:kemal@localhost:5432/invidious"
CONTEXT = OpenSSL::SSL::Context::Client.insecure
+POOL = [] of HTTP::Client
+10.times do
+ POOL << HTTP::Client.new("www.youtube.com", 443, CONTEXT)
+end
macro templated(filename)
render "src/views/#{{{filename}}}.ecr", "src/views/layout.ecr"
@@ -66,7 +70,10 @@ def ci_lower_bound(pos, n)
end
def fetch_video(id)
- client = HTTP::Client.new("www.youtube.com", 443, CONTEXT)
+ # Grab connection from pool
+ client = POOL.pop
+
+ # client = HTTP::Client.new("www.youtube.com", 443, CONTEXT)
info = client.get("/get_video_info?video_id=#{id}&el=info&ps=default&eurl=&gl=US&hl=en").body
info = HTTP::Params.parse(info)
@@ -77,8 +84,11 @@ def fetch_video(id)
raise info["reason"]
end
+ # Return connection to pool
+ POOL << client
+
video = Video.new(id, info, html, Time.now)
-
+
return video
end
@@ -186,7 +196,8 @@ end
get "/search" do |env|
query = env.params.query["q"]
- client = HTTP::Client.new("www.youtube.com", 443, CONTEXT)
+ client = POOL.pop
+
html = client.get("https://www.youtube.com/results?q=#{URI.escape(query)}&page=1").body
html = XML.parse(html)
@@ -208,6 +219,8 @@ get "/search" do |env|
end
end
+ POOL << client
+
templated "search"
end