modulr-api 0.0.35 → 0.0.37

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: f20c55e590c38ec2375618c408113baff1aa4331343db485461c65109de027f5
4
- data.tar.gz: 0f6834d79344f8a022b33272c557877587ff1a9b6204e7554088a6896010fc95
3
+ metadata.gz: fe369be8d916cd8e22bd8189c0fda5718b69179c26dc85aef6e62dce4d0f1652
4
+ data.tar.gz: 0e0ccde8a0780d964afbbe43397ebdfab93b1bec31a6db84b0936ef7bc42676a
5
5
  SHA512:
6
- metadata.gz: 65cc0eb610b9c1c10158fa9ef10f536313fe0e3421a111c02b6deca10c8c613bffe7c073419bd61bfb87d4a5fd505fae985beba8bfab0fa1869febda8bc1820f
7
- data.tar.gz: 9fdf52f505a5f4cfcaf9c9c529dd1662c00aadff250d393a9bd400b2df5d35296f16cbca6e88b5f4f9f0836bc7f22988f2847ab9d2818ca36eaf7004e4e5b8ae
6
+ metadata.gz: e93009870f75d25bbff369008005b31aa5cf0ca628ec6210549902f00a1f7995a32bbf620d7231dffc9e62d23a93bbd760add321c1748a83769dc33c960e8bf2
7
+ data.tar.gz: 1603ea48040cf8f2639d1cb2c6818a847ae45e1295d3c42d4b7e5e517f9ef789e954e4c0e5ead35042ac385dbbc4810b2edcbcd3bae0eda501aed91c20c30b62
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- modulr-api (0.0.35)
4
+ modulr-api (0.0.37)
5
5
  faraday (~> 1.0)
6
6
  faraday_middleware (~> 1.0)
7
7
 
@@ -6,7 +6,7 @@ module Modulr
6
6
  def find(id:)
7
7
  response = client.get("/payments", { id: id })
8
8
  payment_attributes = response.body[:content]&.first
9
- raise NotFoundError, "Payment #{id} not found" unless payment_attributes
9
+ raise ClientError, "Payment #{id} not found" unless payment_attributes
10
10
 
11
11
  Resources::Payments::Payment.new(response.env[:raw_body], payment_attributes)
12
12
  end
data/lib/modulr/client.rb CHANGED
@@ -97,19 +97,13 @@ module Modulr
97
97
  end
98
98
 
99
99
  def handle_request_error(error)
100
- response = error.response
101
100
  case error
102
101
  when Faraday::ClientError
103
- case response[:status]
104
- when 403
105
- raise ForbiddenError, response
106
- when 404
107
- raise NotFoundError, response
108
- else
109
- raise RequestError, response
110
- end
102
+ raise ClientError, error
103
+ when Faraday::ServerError
104
+ raise ServerError, error
111
105
  else
112
- raise Error, response
106
+ raise Error, error
113
107
  end
114
108
  end
115
109
 
data/lib/modulr/error.rb CHANGED
@@ -2,44 +2,37 @@
2
2
 
3
3
  module Modulr
4
4
  class Error < StandardError
5
- end
6
-
7
- class RequestError < Error
8
- attr_reader :response, :errors
9
-
10
- def initialize(response)
11
- @response = response
12
- @errors = extract_errors
13
- super(message_from(response))
14
- end
15
-
16
- private def extract_errors
17
- return unless json?
5
+ attr_reader :wrapped_error, :status, :response
18
6
 
19
- response[:body]
7
+ def initialize(error)
8
+ @wrapped_error = error
9
+ @response = @wrapped_error.response if @wrapped_error.respond_to?(:response)
10
+ @status = structured_response[:status]
11
+ super(error_message)
20
12
  end
21
13
 
22
- private def message_from(response)
23
- return response if response.is_a?(String)
14
+ private def error_message
15
+ return @wrapped_error unless @response
24
16
 
25
- if errors
26
- errors.map { |error| "#{error[:field]} #{error[:code]} #{error[:message]}" }.join(", ")
27
- else
28
- "#{response[:status]} #{response[:body]}"
29
- end
17
+ wrapped_error_description = "#{@wrapped_error.class}: #{@wrapped_error}"
18
+ response_description = "Status: #{structured_response[:status]} - Response: '#{structured_response[:body]}'"
19
+ "#{response_description} (#{wrapped_error_description})"
30
20
  end
31
21
 
32
- private def json?
33
- return unless response.is_a?(Hash)
22
+ private def structured_response
23
+ return {} unless @response
24
+ return @response if @response.is_a?(Hash)
34
25
 
35
- content_type = response[:headers]["content-type"]
36
- content_type&.start_with?("application/json")
26
+ {
27
+ status: @response.status,
28
+ body: @response.body,
29
+ }
37
30
  end
38
31
  end
39
32
 
40
- class NotFoundError < RequestError
33
+ class ClientError < Error
41
34
  end
42
35
 
43
- class ForbiddenError < RequestError
36
+ class ServerError < Error
44
37
  end
45
38
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Modulr
4
- VERSION = "0.0.35"
4
+ VERSION = "0.0.37"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modulr-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.35
4
+ version: 0.0.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aitor García Rey
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-07 00:00:00.000000000 Z
11
+ date: 2023-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday