2
0
mirror of https://github.com/moebooru/moebooru synced 2025-08-22 01:47:48 +00:00

Use native multipart handling

This commit is contained in:
nanaya 2024-12-16 02:11:52 +09:00
parent b5fd63dcb2
commit 7b3e1a859c
2 changed files with 5 additions and 39 deletions

View File

@ -1,26 +0,0 @@
require "net/http"
class Net::HTTP::Post
def multipart=(params = [])
boundary_token = "--multipart-boundary"
self.content_type = "multipart/form-data; boundary=#{boundary_token}"
self.body = ""
params.each do |p|
self.body += "--#{boundary_token}\r\n"
self.body += "Content-Disposition: form-data; name=#{p[:name]}"
self.body += "; filename=#{p[:filename]}" if p[:filename]
self.body += "\r\n"
if p[:binary]
self.body += "Content-Transfer-Encoding: binary\r\n"
mime_type = MiniMime.lookup_by_filename(p[:filename].to_s).try(:content_type)
mime_type ||= "application/octet-stream"
self.body += "Content-Type: #{mime_type}\r\n"
end
self.body += "\r\n#{p[:data]}\r\n"
end
self.body += "--#{boundary_token}--\r\n"
end
end

View File

@ -52,23 +52,15 @@ module SimilarImages
params = [] params = []
if search_url if search_url
params += [ { params << [ "url", search_url ]
name: "url",
data: search_url
} ]
else else
params += [ { params << [ "file", source_file, filename: File.basename(source_filename) ]
name: "file",
binary: true,
data: source_file,
filename: File.basename(source_filename)
} ]
end end
services_list.each do |s| services_list.each do |s|
params += [ { name: "service[]", data: s } ] params << [ "service[]", s ]
end end
params += [ { name: "forcegray", data: "on" } ] if options[:forcegray] == "1" params << [ "forcegray", "on" ] if options[:forcegray] == "1"
begin begin
Timeout.timeout(10) do Timeout.timeout(10) do
@ -85,7 +77,7 @@ module SimilarImages
http.read_timeout = 10 http.read_timeout = 10
request = Net::HTTP::Post.new(server) request = Net::HTTP::Post.new(server)
request.multipart = params request.set_form params, "multipart/form-data"
response = http.request(request) response = http.request(request)
server_responses[server] = response.body server_responses[server] = response.body
end end