mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-12-08 00:01:02 -05:00
commit
9a34961748
@ -1,3 +1,9 @@
|
|||||||
|
=== 1.17.0 2014-12-15
|
||||||
|
|
||||||
|
* 1 major enhacement:
|
||||||
|
* File uploads resource was added (for uploading pdf or image documents for
|
||||||
|
disputes)
|
||||||
|
|
||||||
=== 1.16.1 2014-12-19
|
=== 1.16.1 2014-12-19
|
||||||
|
|
||||||
* 2 minor enhancements:
|
* 2 minor enhancements:
|
||||||
|
|||||||
@ -30,6 +30,7 @@ require 'stripe/invoice'
|
|||||||
require 'stripe/invoice_item'
|
require 'stripe/invoice_item'
|
||||||
require 'stripe/charge'
|
require 'stripe/charge'
|
||||||
require 'stripe/plan'
|
require 'stripe/plan'
|
||||||
|
require 'stripe/file_upload'
|
||||||
require 'stripe/coupon'
|
require 'stripe/coupon'
|
||||||
require 'stripe/token'
|
require 'stripe/token'
|
||||||
require 'stripe/event'
|
require 'stripe/event'
|
||||||
@ -62,11 +63,13 @@ module Stripe
|
|||||||
attr_accessor :api_key, :api_base, :verify_ssl_certs, :api_version
|
attr_accessor :api_key, :api_base, :verify_ssl_certs, :api_version
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.api_url(url='')
|
def self.api_url(url='', api_base_url=nil)
|
||||||
@api_base + url
|
(api_base_url || @api_base) + url
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.request(method, url, api_key, params={}, headers={})
|
def self.request(method, url, api_key, params={}, headers={}, api_base_url=nil)
|
||||||
|
api_base_url = api_base_url || @api_base
|
||||||
|
|
||||||
unless api_key ||= @api_key
|
unless api_key ||= @api_key
|
||||||
raise AuthenticationError.new('No API key provided. ' +
|
raise AuthenticationError.new('No API key provided. ' +
|
||||||
'Set your API key using "Stripe.api_key = <API-KEY>". ' +
|
'Set your API key using "Stripe.api_key = <API-KEY>". ' +
|
||||||
@ -90,11 +93,11 @@ module Stripe
|
|||||||
end
|
end
|
||||||
|
|
||||||
if @verify_ssl_certs and !@CERTIFICATE_VERIFIED
|
if @verify_ssl_certs and !@CERTIFICATE_VERIFIED
|
||||||
@CERTIFICATE_VERIFIED = CertificateBlacklist.check_ssl_cert(@api_base, @ssl_bundle_path)
|
@CERTIFICATE_VERIFIED = CertificateBlacklist.check_ssl_cert(api_base_url, @ssl_bundle_path)
|
||||||
end
|
end
|
||||||
|
|
||||||
params = Util.objects_to_ids(params)
|
params = Util.objects_to_ids(params)
|
||||||
url = api_url(url)
|
url = api_url(url, api_base_url)
|
||||||
|
|
||||||
case method.to_s.downcase.to_sym
|
case method.to_s.downcase.to_sym
|
||||||
when :get, :head, :delete
|
when :get, :head, :delete
|
||||||
@ -102,7 +105,11 @@ module Stripe
|
|||||||
url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any?
|
url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any?
|
||||||
payload = nil
|
payload = nil
|
||||||
else
|
else
|
||||||
payload = uri_encode(params)
|
if headers[:content_type] && headers[:content_type] == "multipart/form-data"
|
||||||
|
payload = params
|
||||||
|
else
|
||||||
|
payload = uri_encode(params)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
request_opts.update(:headers => request_headers(api_key).update(headers),
|
request_opts.update(:headers => request_headers(api_key).update(headers),
|
||||||
@ -112,12 +119,12 @@ module Stripe
|
|||||||
begin
|
begin
|
||||||
response = execute_request(request_opts)
|
response = execute_request(request_opts)
|
||||||
rescue SocketError => e
|
rescue SocketError => e
|
||||||
handle_restclient_error(e)
|
handle_restclient_error(e, api_base_url)
|
||||||
rescue NoMethodError => e
|
rescue NoMethodError => e
|
||||||
# Work around RestClient bug
|
# Work around RestClient bug
|
||||||
if e.message =~ /\WRequestFailed\W/
|
if e.message =~ /\WRequestFailed\W/
|
||||||
e = APIConnectionError.new('Unexpected HTTP response code')
|
e = APIConnectionError.new('Unexpected HTTP response code')
|
||||||
handle_restclient_error(e)
|
handle_restclient_error(e, api_base_url)
|
||||||
else
|
else
|
||||||
raise
|
raise
|
||||||
end
|
end
|
||||||
@ -125,10 +132,10 @@ module Stripe
|
|||||||
if rcode = e.http_code and rbody = e.http_body
|
if rcode = e.http_code and rbody = e.http_body
|
||||||
handle_api_error(rcode, rbody)
|
handle_api_error(rcode, rbody)
|
||||||
else
|
else
|
||||||
handle_restclient_error(e)
|
handle_restclient_error(e, api_base_url)
|
||||||
end
|
end
|
||||||
rescue RestClient::Exception, Errno::ECONNREFUSED => e
|
rescue RestClient::Exception, Errno::ECONNREFUSED => e
|
||||||
handle_restclient_error(e)
|
handle_restclient_error(e, api_base_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
[parse(response), api_key]
|
[parse(response), api_key]
|
||||||
@ -258,17 +265,18 @@ module Stripe
|
|||||||
APIError.new(error[:message], rcode, rbody, error_obj)
|
APIError.new(error[:message], rcode, rbody, error_obj)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.handle_restclient_error(e)
|
def self.handle_restclient_error(e, api_base_url=nil)
|
||||||
|
api_base_url = @api_base unless api_base_url
|
||||||
connection_message = "Please check your internet connection and try again. " \
|
connection_message = "Please check your internet connection and try again. " \
|
||||||
"If this problem persists, you should check Stripe's service status at " \
|
"If this problem persists, you should check Stripe's service status at " \
|
||||||
"https://twitter.com/stripestatus, or let us know at support@stripe.com."
|
"https://twitter.com/stripestatus, or let us know at support@stripe.com."
|
||||||
|
|
||||||
case e
|
case e
|
||||||
when RestClient::RequestTimeout
|
when RestClient::RequestTimeout
|
||||||
message = "Could not connect to Stripe (#{@api_base}). #{connection_message}"
|
message = "Could not connect to Stripe (#{api_base_url}). #{connection_message}"
|
||||||
|
|
||||||
when RestClient::ServerBrokeConnection
|
when RestClient::ServerBrokeConnection
|
||||||
message = "The connection to the server (#{@api_base}) broke before the " \
|
message = "The connection to the server (#{api_base_url}) broke before the " \
|
||||||
"request completed. #{connection_message}"
|
"request completed. #{connection_message}"
|
||||||
|
|
||||||
when RestClient::SSLCertificateNotVerified
|
when RestClient::SSLCertificateNotVerified
|
||||||
|
|||||||
27
lib/stripe/file_upload.rb
Normal file
27
lib/stripe/file_upload.rb
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
module Stripe
|
||||||
|
class FileUpload < APIResource
|
||||||
|
UPLOADS_API_BASE = "https://uploads.stripe.com"
|
||||||
|
|
||||||
|
def self.url
|
||||||
|
"/v1/files"
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.request_headers
|
||||||
|
{
|
||||||
|
:content_type => 'multipart/form-data',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.create(params={}, api_key=nil)
|
||||||
|
response, api_key = Stripe.request(
|
||||||
|
:post, self.url, api_key, params, self.request_headers, UPLOADS_API_BASE)
|
||||||
|
Util.convert_to_stripe_object(response, api_key)
|
||||||
|
end
|
||||||
|
|
||||||
|
def refresh
|
||||||
|
response, api_key = Stripe.request(
|
||||||
|
:get, url, @api_key, @retrieve_options, self.class.request_headers, UPLOADS_API_BASE)
|
||||||
|
refresh_from(response, api_key)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -1,3 +1,3 @@
|
|||||||
module Stripe
|
module Stripe
|
||||||
VERSION = '1.16.1'
|
VERSION = '1.17.0'
|
||||||
end
|
end
|
||||||
|
|||||||
21
test/stripe/file_upload_test.rb
Normal file
21
test/stripe/file_upload_test.rb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
require File.expand_path('../../test_helper', __FILE__)
|
||||||
|
|
||||||
|
module Stripe
|
||||||
|
class FileUploadTest < Test::Unit::TestCase
|
||||||
|
should "create should return a new file" do
|
||||||
|
@mock.expects(:post).once.returns(test_response(test_file))
|
||||||
|
f = Stripe::FileUpload.create({
|
||||||
|
:purpose => "dispute_evidence",
|
||||||
|
:file => File.new(__FILE__),
|
||||||
|
})
|
||||||
|
assert_equal "fil_test_file", f.id
|
||||||
|
end
|
||||||
|
|
||||||
|
should "files should be retrievable" do
|
||||||
|
@mock.expects(:get).once.returns(test_response(test_file))
|
||||||
|
c = Stripe::FileUpload.new("fil_test_file")
|
||||||
|
c.refresh
|
||||||
|
assert_equal 1403047735, c.created
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -183,6 +183,17 @@ module Stripe
|
|||||||
}.merge(params)
|
}.merge(params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_file(params={})
|
||||||
|
{
|
||||||
|
:id => "fil_test_file",
|
||||||
|
:created => 1403047735,
|
||||||
|
:size => 4908,
|
||||||
|
:purpose => params[:purpose] || "dispute_evidence",
|
||||||
|
:url => nil,
|
||||||
|
:mimetype => nil,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
#FIXME nested overrides would be better than hardcoding plan_id
|
#FIXME nested overrides would be better than hardcoding plan_id
|
||||||
def test_subscription(params = {})
|
def test_subscription(params = {})
|
||||||
plan = params.delete(:plan) || 'gold'
|
plan = params.delete(:plan) || 'gold'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user