paypal-rest-api 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: 161078b6b9ff7513fe6634bc4e37c181374858dec0cac4261d5cc662d115787c
4
- data.tar.gz: 60346804bbd8a930f695a922a6ce07adaefca26e25f7777e70de0d9f5d87a01a
3
+ metadata.gz: 9974530916382123b35a29697760ddeed6a7c67e53cf9b3c03edabe72d1e878e
4
+ data.tar.gz: b6ab203108f40419f0ca4b94208e716d26a59c8a94487f632a40b37110d40bf4
5
5
  SHA512:
6
- metadata.gz: e340f1e223aa903aed6fde693f4a16dc9cdf0ef3d474a633e171b7890eb016d8c42ef593117385419bd07c366bb257bbc0adbbcab8b193cb150523cd3dcaee46
7
- data.tar.gz: 74f017ec1aabca6d9a55599bacc32ee7d7d2c425ec109ec076d2f8072819d95047a07d763ed7b5ba0bd4b96a3b91a3aa3b2404d1a0602c2704028661b544a18b
6
+ metadata.gz: af49071e00c4bf5bc36b5819fc4867164546133f345784a9fd29e146d97b4bddf0fbd5169e75528ad63bc7aff8a7239df2e298cde9a4a9ec4ef60ca78aefcfa9
7
+ data.tar.gz: 138fb221137c2d726e7b432da2269e17e2ba42f359dae415052d8c47f8f06d729663deb3ae26214fafd96374c6f785760699db83f415aa979e41cebb3ff733da
data/README.md CHANGED
@@ -8,7 +8,7 @@ bundle add paypal-rest-api
8
8
 
9
9
  ## Features
10
10
 
11
- - Supported Ruby 2.6 - current Head
11
+ - Supported Ruby Versions - *(2.6 .. 3.3), head, jruby-9.4, truffleruby-24*
12
12
  - No dependencies;
13
13
  - Automatic authorization & reauthorization;
14
14
  - Auto-retries (configured);
@@ -144,12 +144,12 @@ client = PaypalAPI::Client.new(
144
144
  Webhooks can be verified [offline](https://developer.paypal.com/api/rest/webhooks/rest/#link-selfverificationmethod)
145
145
  or [online](https://developer.paypal.com/api/rest/webhooks/rest/#link-postbackmethod).
146
146
  Method `PaypalAPI.verify_webhook(webhook_id:, headers:, raw_body:)`
147
- verifies webhook. It to verify webhook OFFLINE and it fallbacks
148
- to ONLINE if offline verification returns false to be sure you don't miss a
147
+ verifies webhook. It verifies webhook OFFLINE and fallbacks
148
+ to ONLINE if initial verification returns false to be sure you don't miss a
149
149
  valid webhook.
150
150
 
151
- When some required header is missing it will raise
152
- `PaypalAPI::WebhooksVerifier::MissingHeader` error.
151
+ When some required header is missing the
152
+ `PaypalAPI::WebhooksVerifier::MissingHeader` error will be raised.
153
153
 
154
154
  Example of Rails controller with webhook verification:
155
155
 
@@ -192,9 +192,17 @@ Callbacks are registered on `client` object.
192
192
  Each callback receive `request` and `context` variables.
193
193
  `context` can be modified manually to save state between callbacks.
194
194
 
195
- `:after_success` and `:after_fail` callbacks have additional `response` argument
195
+ Arguments:
196
196
 
197
- `:after_network_error` callback has additional `error` argument
197
+ - `:before` - (request, context)
198
+ - `:after_success` - (request, context, response)
199
+ - `:after_fail` - (request, context, response)
200
+ - `:after_network_error` - (request, context, error)
201
+
202
+ `Context` argument contains `retries_enabled` and `retries_count` and
203
+ `retry_number` keys by default.
204
+
205
+ Examples:
198
206
 
199
207
  ```ruby
200
208
  PaypalAPI.client.add_callback(:before) do |request, context|
@@ -202,7 +210,7 @@ PaypalAPI.client.add_callback(:before) do |request, context|
202
210
  context[:starts_at] = Process.clock_gettime(Process::CLOCK_MONOTONIC)
203
211
  end
204
212
 
205
- PaypalAPI.client.add_callback(:after) do |request, context, response|
213
+ PaypalAPI.client.add_callback(:after_success) do |request, context, response|
206
214
  ends_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
207
215
  duration = ends_at - context[:starts_at]
208
216
 
@@ -229,7 +237,7 @@ end
229
237
 
230
238
  PaypalAPI.client.add_callback(:after_network_error) do |request, context, error|
231
239
  SomeLogger.error(
232
- 'PaypalAPI network connection error'
240
+ 'PaypalAPI network connection error',
233
241
  method: request.method,
234
242
  uri: request.uri.to_s,
235
243
  error: error.message,
@@ -316,15 +324,15 @@ All API endpoints accept this parameters:
316
324
 
317
325
  ### Payments
318
326
 
319
- - `PaypalAPI::AuthorizedPayment.show`
320
- - `PaypalAPI::AuthorizedPayment.capture`
321
- - `PaypalAPI::AuthorizedPayment.reauthorize`
322
- - `PaypalAPI::AuthorizedPayment.void`
327
+ - `PaypalAPI::AuthorizedPayments.show`
328
+ - `PaypalAPI::AuthorizedPayments.capture`
329
+ - `PaypalAPI::AuthorizedPayments.reauthorize`
330
+ - `PaypalAPI::AuthorizedPayments.void`
323
331
 
324
332
  <!-- -->
325
333
 
326
- - `PaypalAPI::CapturedPayment.show`
327
- - `PaypalAPI::CapturedPayment.refund`
334
+ - `PaypalAPI::CapturedPayments.show`
335
+ - `PaypalAPI::CapturedPayments.refund`
328
336
 
329
337
  <!-- -->
330
338
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,7 +5,7 @@ module PaypalAPI
5
5
  # Executes PaypalAPI::Request and returns PaypalAPI::Response or raises PaypalAPI::Error
6
6
  #
7
7
  class RequestExecutor
8
- attr_reader :client, :request, :http_opts, :context, :retries, :callbacks, :callbacks_context
8
+ attr_reader :client, :request, :http_opts, :retries, :callbacks, :callbacks_context
9
9
 
10
10
  def initialize(client, request)
11
11
  @client = client
@@ -13,7 +13,7 @@ module PaypalAPI
13
13
  @http_opts = {use_ssl: request.uri.is_a?(URI::HTTPS), **client.config.http_opts}
14
14
  @retries = client.config.retries
15
15
  @callbacks = client.callbacks
16
- @callbacks_context = {retries_count: retries[:count]}
16
+ @callbacks_context = {retries_enabled: retries[:enabled], retries_count: retries[:count]}
17
17
  end
18
18
 
19
19
  #
@@ -35,8 +35,10 @@ module PaypalAPI
35
35
 
36
36
  run_callbacks(:before)
37
37
  response = execute_net_http_request
38
- rescue *NetworkErrorBuilder::ERRORS => error
39
- will_retry = !retries_limit_reached?(retry_number)
38
+ rescue => error
39
+ raise error if NetworkErrorBuilder::ERRORS.none? { |network_error_class| error.is_a?(network_error_class) }
40
+
41
+ will_retry = retries[:enabled] && !retries_limit_reached?(retry_number)
40
42
  callbacks_context[:will_retry] = will_retry
41
43
  run_callbacks(:after_network_error, error)
42
44
  raise NetworkErrorBuilder.call(request: request, error: error) unless will_retry
@@ -48,7 +50,7 @@ module PaypalAPI
48
50
  run_callbacks(:after_success, response)
49
51
  response
50
52
  else
51
- will_retry = retryable?(response, retry_number)
53
+ will_retry = retries[:enabled] && retryable?(response, retry_number)
52
54
  callbacks_context[:will_retry] = will_retry
53
55
  run_callbacks(:after_fail, response)
54
56
  will_retry ? retry_request(retry_number) : response
@@ -104,7 +106,7 @@ module PaypalAPI
104
106
  end
105
107
 
106
108
  def run_callbacks(callback_name, resp = nil)
107
- callbacks[callback_name].each { |callback| callback.call(request, context, resp) }
109
+ callbacks[callback_name].each { |callback| callback.call(request, callbacks_context, resp) }
108
110
  end
109
111
  end
110
112
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paypal-rest-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Glushkov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-30 00:00:00.000000000 Z
11
+ date: 2024-09-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: PayPal REST API with no dependencies.
14
14
  email: