Skip to content

Commit

Permalink
fix(ruby): Detect content-type in form-data file upload using faraday (
Browse files Browse the repository at this point in the history
…#17851) (#17853)

* fix(ruby): Detect content-type in form-data file upload using faraday (#17851)

* Update samples

* Add needed dependency libmagic-dev into node 1 setup of Circle Parallel CI

* After merge/pull last master + regeneration of samples
  • Loading branch information
dvacca-onfido authored Feb 14, 2024
1 parent 7d2e8b1 commit 9deeb60
Show file tree
Hide file tree
Showing 8 changed files with 13 additions and 7 deletions.
2 changes: 1 addition & 1 deletion CI/circle_parallel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if [ "$NODE_INDEX" = "1" ]; then
echo "Running node $NODE_INDEX ..."
java -version

sudo apt-get -y install cpanminus
sudo apt-get -y install cpanminus libmagic-dev

(cd samples/client/petstore/perl && /bin/bash ./test.bash)
(cd samples/client/petstore/ruby && mvn integration-test)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ require 'typhoeus'
{{#isFaraday}}
require 'faraday'
require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
require 'filemagic'
{{/isFaraday}}
{{#isHttpx}}
require 'httpx'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@
form_params.each do |key, value|
case value
when ::File, ::Tempfile
# TODO hardcode to application/octet-stream, need better way to detect content type
data[key] = Faraday::FilePart.new(value.path, 'application/octet-stream', value.path)
filemagic = FileMagic.new(FileMagic::MAGIC_MIME)
data[key] = Faraday::FilePart.new(value.path, filemagic.file(value.path, true))
when ::Array, nil
# let Faraday handle Array and nil parameters
data[key] = value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Gem::Specification.new do |s|
{{#isFaraday}}
s.add_runtime_dependency 'faraday', '>= 1.0.1', '< 3.0'
s.add_runtime_dependency 'faraday-multipart'
s.add_runtime_dependency 'ruby-filemagic'
{{/isFaraday}}
{{#isTyphoeus}}
s.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
require 'time'
require 'faraday'
require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
require 'filemagic'


module OpenapiClient
Expand Down Expand Up @@ -140,8 +141,8 @@ def build_request_body(header_params, form_params, body)
form_params.each do |key, value|
case value
when ::File, ::Tempfile
# TODO hardcode to application/octet-stream, need better way to detect content type
data[key] = Faraday::FilePart.new(value.path, 'application/octet-stream', value.path)
filemagic = FileMagic.new(FileMagic::MAGIC_MIME)
data[key] = Faraday::FilePart.new(value.path, filemagic.file(value.path, true))
when ::Array, nil
# let Faraday handle Array and nil parameters
data[key] = value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +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_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
require 'time'
require 'faraday'
require 'faraday/multipart' if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
require 'filemagic'


module Petstore
Expand Down Expand Up @@ -140,8 +141,8 @@ def build_request_body(header_params, form_params, body)
form_params.each do |key, value|
case value
when ::File, ::Tempfile
# TODO hardcode to application/octet-stream, need better way to detect content type
data[key] = Faraday::FilePart.new(value.path, 'application/octet-stream', value.path)
filemagic = FileMagic.new(FileMagic::MAGIC_MIME)
data[key] = Faraday::FilePart.new(value.path, filemagic.file(value.path, true))
when ::Array, nil
# let Faraday handle Array and nil parameters
data[key] = value
Expand Down
1 change: 1 addition & 0 deletions samples/client/petstore/ruby-faraday/petstore.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +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_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'

Expand Down

0 comments on commit 9deeb60

Please # to comment.