affirm 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39c1e3c767578030a0b0d4040f1369a0984537dc
4
- data.tar.gz: 41fe7e6a858817d7bb521c68dcc3238457e347e3
3
+ metadata.gz: f7e00e989ab313897e9c4276f4b75e33399cefdb
4
+ data.tar.gz: a918946c0a75ffcf870e79208e8f4d30244a4ddb
5
5
  SHA512:
6
- metadata.gz: d00eda5029a694f08f75cbd2512dbf6acd9ae10cd2a4de39e41b10c004d454623142aa791bb74ce4481ce39689a3d4790cbf4d5213739794c041a69e77060f23
7
- data.tar.gz: 12f0057579aba7917cb39f3f5e5d12d38662b6c8639090652e2215c40be8c8278ed1dba5157adf93b118a9f5dd232f428f802eacdb8e466681eedd8c14469e38
6
+ metadata.gz: cf933ec1f98c796aeb348c80dcfe4d104528138a5ac47d2cff0041665efeec1651ee23f78302c4bf94517b507d185825a3aa2ae2099bf739ecd6791425b6ff03
7
+ data.tar.gz: 7dc451129c89024fc10618b6932918ca7f0cf5cf0b641987fb542d9dccffafe829ef96a01cf4c97f1c031131286ceee0a89852b3033939ed25cafce0002f9adc
data/README.md CHANGED
@@ -92,8 +92,10 @@ charge.update(order_id: "1234", shipping_carrier: "USPS", shipping_confirmation:
92
92
  Returns an `Affirm::ChargeEvent` object of type `update`.
93
93
 
94
94
  ## Exceptions
95
+ Errors due to failed requests with the charges api (ie http code 400) will raise an `Affirm::ChargeError`.
96
+
95
97
  Special exceptions are raised for 5xx, 404 and 401 responses, yielding an `Affirm::ServerError`,
96
- `Affirm::ResourceNotFoundError` and `Affirm::AuthenticationError`, respectively. These are subclassed from
98
+ `Affirm::ResourceNotFoundError` and `Affirm::AuthenticationError`, respectively. These are all subclassed from
97
99
  `Affirm::Error`.
98
100
 
99
101
  All exceptions have the following methods on them:
data/affirm.gemspec CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
2
2
  s.name = "affirm"
3
3
  s.summary = "Affirm Ruby Client Library"
4
4
  s.description = "Ruby client library for integrating with Affirm financing payments"
5
- s.version = "1.0.0"
5
+ s.version = "1.1.0"
6
6
  s.license = "Apache License Version 2.0"
7
7
  s.author = "Reverb.com"
8
8
  s.email = "dev@reverb.com"
data/lib/affirm.rb CHANGED
@@ -7,6 +7,7 @@ require 'affirm/charge_event'
7
7
  require 'affirm/charge'
8
8
 
9
9
  require 'affirm/errors/error'
10
+ require 'affirm/errors/charge_error'
10
11
  require 'affirm/errors/authentication_error'
11
12
  require 'affirm/errors/resource_not_found_error'
12
13
  require 'affirm/errors/server_error'
data/lib/affirm/api.rb CHANGED
@@ -2,10 +2,10 @@ module Affirm
2
2
  class API
3
3
  class << self
4
4
  attr_accessor :public_key, :secret_key, :api_url
5
- @@client = nil
5
+ @client = nil
6
6
 
7
7
  def client
8
- @@client ||= Affirm::Client.new(
8
+ @client ||= Affirm::Client.new(
9
9
  public_key: public_key,
10
10
  secret_key: secret_key,
11
11
  api_url: api_url
data/lib/affirm/charge.rb CHANGED
@@ -15,9 +15,13 @@ module Affirm
15
15
  #
16
16
  # checkout_token - (required) string. The charge token passed through the confirmation response.
17
17
  def self.create(checkout_token, client: Affirm::API.client)
18
- response = client.make_request!("/charges", :post, checkout_token: checkout_token)
18
+ response = client.make_request("/charges", :post, checkout_token: checkout_token)
19
19
 
20
- new(attrs: response.body, client: client)
20
+ if response.success?
21
+ new(attrs: response.body, client: client)
22
+ else
23
+ raise ChargeError.from_response(response)
24
+ end
21
25
  end
22
26
 
23
27
  ##
@@ -106,10 +110,14 @@ module Affirm
106
110
  end
107
111
 
108
112
  def api_request(url, method, params={})
109
- response = @client.make_request!(url, method, params)
110
- event = ChargeEvent.new(response.body)
111
- @events << event
112
- event
113
+ response = @client.make_request(url, method, params)
114
+ if response.success?
115
+ event = ChargeEvent.new(response.body)
116
+ @events << event
117
+ event
118
+ else
119
+ raise ChargeError.from_response(response)
120
+ end
113
121
  end
114
122
  end
115
123
  end
data/lib/affirm/client.rb CHANGED
@@ -28,15 +28,6 @@ module Affirm
28
28
  handle_errors(affirm_response)
29
29
  end
30
30
 
31
- # like make_request, but raise error on failure
32
- def make_request!(path, method, data={})
33
- response = make_request(path, method, data)
34
-
35
- raise Affirm::Error.from_response(response) if response.error?
36
-
37
- response
38
- end
39
-
40
31
  private
41
32
 
42
33
  def parse_response(response)
@@ -0,0 +1,3 @@
1
+ module Affirm
2
+ class ChargeError < Error; end
3
+ end
data/spec/charge_spec.rb CHANGED
@@ -74,8 +74,17 @@ describe Affirm::Charge do
74
74
  let(:response_code) { 422 }
75
75
  let(:response_body) { load_fixture("charges/invalid_request.json") }
76
76
 
77
- it "raises an error" do
78
- expect { Affirm::Charge.create("token") }.to raise_error(Affirm::Error)
77
+ it "raises a charge error" do
78
+ expect { Affirm::Charge.create("token") }.to raise_error(Affirm::ChargeError)
79
+ end
80
+ end
81
+
82
+ context "other api error" do
83
+ let(:response_code) { 500 }
84
+ let(:response_body) { "" }
85
+
86
+ it "raises relevant error" do
87
+ expect { Affirm::Charge.create("token") }.to raise_error(Affirm::ServerError)
79
88
  end
80
89
  end
81
90
  end
@@ -112,8 +121,8 @@ describe Affirm::Charge do
112
121
  let(:response_code) { 422 }
113
122
  let(:response_body) { load_fixture("charges/invalid_request.json") }
114
123
 
115
- it "raises an error" do
116
- expect { charge.capture }.to raise_error(Affirm::Error)
124
+ it "raises a charge error" do
125
+ expect { charge.capture }.to raise_error(Affirm::ChargeError)
117
126
  end
118
127
  end
119
128
  end
@@ -143,8 +152,8 @@ describe Affirm::Charge do
143
152
  let(:response_code) { 422 }
144
153
  let(:response_body) { load_fixture("charges/invalid_request.json") }
145
154
 
146
- it "raises an error" do
147
- expect { charge.void }.to raise_error(Affirm::Error)
155
+ it "raises a charge error" do
156
+ expect { charge.void }.to raise_error(Affirm::ChargeError)
148
157
  end
149
158
  end
150
159
  end
@@ -184,8 +193,8 @@ describe Affirm::Charge do
184
193
  let(:response_code) { 422 }
185
194
  let(:response_body) { load_fixture("charges/invalid_request.json") }
186
195
 
187
- it "raises an error" do
188
- expect { charge.refund }.to raise_error(Affirm::Error)
196
+ it "raises a charge error" do
197
+ expect { charge.refund }.to raise_error(Affirm::ChargeError)
189
198
  end
190
199
  end
191
200
  end
@@ -223,7 +232,7 @@ describe Affirm::Charge do
223
232
  let(:response_body) { load_fixture("charges/invalid_request.json") }
224
233
 
225
234
  it "raises an error" do
226
- expect { charge.update }.to raise_error(Affirm::Error)
235
+ expect { charge.update }.to raise_error(Affirm::ChargeError)
227
236
  end
228
237
  end
229
238
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: affirm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reverb.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-30 00:00:00.000000000 Z
11
+ date: 2015-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -94,6 +94,7 @@ files:
94
94
  - lib/affirm/charge_event.rb
95
95
  - lib/affirm/client.rb
96
96
  - lib/affirm/errors/authentication_error.rb
97
+ - lib/affirm/errors/charge_error.rb
97
98
  - lib/affirm/errors/error.rb
98
99
  - lib/affirm/errors/resource_not_found_error.rb
99
100
  - lib/affirm/errors/server_error.rb