From dbbaf51f1f4e80c7db14e669aadac7fb87f6267d Mon Sep 17 00:00:00 2001 From: Jeroen Boersma Date: Fri, 19 Dec 2025 15:09:22 +0100 Subject: [PATCH] Allow downloading via companion (#5561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Allow downloading via companion * post request where not proxied for the download companion which made it impossible to download with the companion enabled * Re-apply Channel to Channels rename which was pulled in * Update src/invidious/routes/companion.cr * doc: better comments for each route --------- Co-authored-by: Fijxu Co-authored-by: Émilien (perso) <4016501+unixfox@users.noreply.github.com> --- src/invidious/routes/companion.cr | 20 +++++++++++++++++++- src/invidious/routing.cr | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/invidious/routes/companion.cr b/src/invidious/routes/companion.cr index 11c2e3f5..949b213f 100644 --- a/src/invidious/routes/companion.cr +++ b/src/invidious/routes/companion.cr @@ -1,5 +1,5 @@ module Invidious::Routes::Companion - # /companion + # GET /companion def self.get_companion(env) url = env.request.path if env.request.query @@ -16,6 +16,24 @@ module Invidious::Routes::Companion end end + # POST /companion + def self.post_companion(env) + url = env.request.path + if env.request.query + url += "?#{env.request.query}" + end + + begin + COMPANION_POOL.client do |wrapper| + wrapper.client.post(url, env.request.headers, env.request.body) do |resp| + return self.proxy_companion(env, resp) + end + end + rescue ex + end + end + + def self.options_companion(env) url = env.request.path if env.request.query diff --git a/src/invidious/routing.cr b/src/invidious/routing.cr index a51bb4b6..32e8554c 100644 --- a/src/invidious/routing.cr +++ b/src/invidious/routing.cr @@ -227,6 +227,7 @@ module Invidious::Routing def register_companion_routes if CONFIG.invidious_companion.present? get "/companion/*", Routes::Companion, :get_companion + post "/companion/*", Routes::Companion, :post_companion options "/companion/*", Routes::Companion, :options_companion end end