From cd569f4b8a93e8fb9c0e33e7c61691a78a610a1a Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 10 Sep 2021 15:53:38 +0800 Subject: [PATCH] fix: download url redirect delay --- app/controllers/attachments_controller.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 14e53b3e2..1f3bd97f8 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -32,8 +32,17 @@ class AttachmentsController < ApplicationController def get_file normal_status(-1, "参数缺失") if params[:download_url].blank? url = URI.encode(params[:download_url].to_s.gsub("http:", "https:")) - response = Faraday.get(url) - filename = params[:download_url].to_s.split("/").pop() + if url.starts_with?(base_url) + domain = Gitea.gitea_config[:domain] + api_url = Gitea.gitea_config[:base_url] + url = url.split(base_url)[1].gsub("api", "repos").gsub('?filepath=', '/').gsub('&', '?') + request_url = [domain, api_url, url, "?ref=#{params[:ref]}&access_token=#{current_user&.gitea_token}"].join + response = Faraday.get(request_url) + filename = url.to_s.split("/").pop() + else + response = Faraday.get(url) + filename = params[:download_url].to_s.split("/").pop() + end send_data(response.body.force_encoding("UTF-8"), filename: filename, type: "application/octet-stream", disposition: 'attachment') end