[ruby] Use Marcel to detect content-type in form-data file upload using faraday (#18243)

This commit is contained in:
Yohei Kitamura
2024-03-29 09:58:08 -04:00
committed by GitHub
parent de680de60e
commit 34ebc1c644
8 changed files with 10 additions and 15 deletions

View File

@@ -17,7 +17,7 @@ require 'tempfile'
require 'time'
require 'faraday'
require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
require 'filemagic'
require 'marcel'
module OpenapiClient
@@ -141,8 +141,7 @@ module OpenapiClient
form_params.each do |key, value|
case value
when ::File, ::Tempfile
filemagic = FileMagic.new(FileMagic::MAGIC_MIME)
data[key] = Faraday::FilePart.new(value.path, filemagic.file(value.path, true))
data[key] = Faraday::FilePart.new(value.path, Marcel::MimeType.for(Pathname.new(value.path)))
when ::Array, nil
# let Faraday handle Array and nil parameters
data[key] = value

View File

@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
s.add_runtime_dependency 'faraday', '>= 1.0.1', '< 3.0'
s.add_runtime_dependency 'faraday-multipart'
s.add_runtime_dependency 'ruby-filemagic'
s.add_runtime_dependency 'marcel'
s.add_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'