mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-06-04 00:01:12 -04:00
Merge pull request #508 from stripe/brandur-fix-file-uploads
Properly encode file uploads
This commit is contained in:
commit
083038e7c0
@ -15,6 +15,13 @@ module Stripe
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.create(params={}, opts={})
|
def self.create(params={}, opts={})
|
||||||
|
# rest-client would accept a vanilla `File` for upload, but Faraday does
|
||||||
|
# not. Support the old API by wrapping a `File` with an `UploadIO` object
|
||||||
|
# if we're given one.
|
||||||
|
if params[:file] && params[:file].is_a?(File)
|
||||||
|
params[:file] = Faraday::UploadIO.new(params[:file], nil)
|
||||||
|
end
|
||||||
|
|
||||||
opts = {
|
opts = {
|
||||||
:content_type => 'multipart/form-data',
|
:content_type => 'multipart/form-data',
|
||||||
}.merge(Util.normalize_opts(opts))
|
}.merge(Util.normalize_opts(opts))
|
||||||
|
@ -29,6 +29,7 @@ module Stripe
|
|||||||
# object per thread.
|
# object per thread.
|
||||||
Thread.current[:stripe_client_default_conn] ||= begin
|
Thread.current[:stripe_client_default_conn] ||= begin
|
||||||
conn = Faraday.new do |c|
|
conn = Faraday.new do |c|
|
||||||
|
c.use Faraday::Request::Multipart
|
||||||
c.use Faraday::Request::UrlEncoded
|
c.use Faraday::Request::UrlEncoded
|
||||||
c.use Faraday::Response::RaiseError
|
c.use Faraday::Response::RaiseError
|
||||||
c.adapter Faraday.default_adapter
|
c.adapter Faraday.default_adapter
|
||||||
|
@ -35,7 +35,11 @@ module Stripe
|
|||||||
|
|
||||||
should "be creatable" do
|
should "be creatable" do
|
||||||
stub_request(:post, "#{Stripe.uploads_base}/v1/files").
|
stub_request(:post, "#{Stripe.uploads_base}/v1/files").
|
||||||
to_return(body: JSON.generate(FIXTURE))
|
with(:headers => {
|
||||||
|
"Content-Type" => %r|\A#{Faraday::Request::Multipart.mime_type}|
|
||||||
|
}) { |request|
|
||||||
|
request.body =~ /FileUploadTest/
|
||||||
|
}.to_return(body: JSON.generate(FIXTURE))
|
||||||
|
|
||||||
file = Stripe::FileUpload.create(
|
file = Stripe::FileUpload.create(
|
||||||
purpose: "dispute_evidence",
|
purpose: "dispute_evidence",
|
||||||
@ -43,5 +47,20 @@ module Stripe
|
|||||||
)
|
)
|
||||||
assert file.kind_of?(Stripe::FileUpload)
|
assert file.kind_of?(Stripe::FileUpload)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "be creatable with Faraday::UploadIO" do
|
||||||
|
stub_request(:post, "#{Stripe.uploads_base}/v1/files").
|
||||||
|
with(:headers => {
|
||||||
|
"Content-Type" => %r|\A#{Faraday::Request::Multipart.mime_type}|
|
||||||
|
}) { |request|
|
||||||
|
request.body =~ /FileUploadTest/
|
||||||
|
}.to_return(body: JSON.generate(FIXTURE))
|
||||||
|
|
||||||
|
file = Stripe::FileUpload.create(
|
||||||
|
purpose: "dispute_evidence",
|
||||||
|
file: Faraday::UploadIO.new(File.new(__FILE__), nil),
|
||||||
|
)
|
||||||
|
assert file.kind_of?(Stripe::FileUpload)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user