easyship 0.1.2 → 0.1.4

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: 0a715ea30361416f3bc58cee44919e36a7ac7dbe85f1f615c2a74350f889bdef
4
- data.tar.gz: 297a361bdad68de29061c1cf6aaa09db8aad1573aa9356c069784b564526ca7f
3
+ metadata.gz: 1c6c501de616b3a63e0d2115bcd85edd664d19457e15cee9ddc39b90460faf06
4
+ data.tar.gz: c28725fd205ad6c7943bc3af5ec230c6dfa0a3a9a605a36caaab01d9ff6b4120
5
5
  SHA512:
6
- metadata.gz: bf0c4bded300aa2b72ab47b5ddbd16ba5733c3f515bc403e74322bd4dd5b10b0c9a214aeb629bb257fe0078952b4b5ad0ec4d75e05794666207fcef57d420084
7
- data.tar.gz: 394cc54f2400a0f1b86a66340c19e03a42298fe31dc1764ee5c443b8e8fa4e1ddc2af3be5123e2ba4efc781f843c6ab2739481d850d28e83155d178886a8b1a0
6
+ metadata.gz: d3e59ba1d63fccd367093dd0d0cfa2c4e853be57820384e7ab033929f808adffca7313633009dc6b7804d3c54d8130ab3f8da45586e31c59865a903c4b906e38
7
+ data.tar.gz: db7d3fb69ea674cfc5a9ee6527193ce637bf123b74d51f104a821de4f0c9273d3cb4d25621e8ea6b885f852f16c09e2c87485e6845b04bb4e1f70ad4aff319d2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  ## [Unreleased]
2
2
 
3
+
4
+ ## [v0.1.4](https://github.com/mmarusyk/easyship/tree/v0.1.4) - 2024-10-16
5
+
6
+ ### Fixed
7
+ - Handle JSON::Parser Error
8
+
9
+ ## [v0.1.3](https://github.com/mmarusyk/easyship/tree/v0.1.3) - 2024-06-27
10
+
11
+ ### Fixed
12
+ - Error from v1 is not handled by @mmarusyk
13
+
3
14
  ## [v0.1.2](https://github.com/mmarusyk/easyship/tree/v0.1.2) - 2024-06-24
4
15
 
5
16
  ### Features
@@ -7,6 +7,7 @@ module Easyship
7
7
  class Error
8
8
  # rubocop:disable Style::MutableConstant Style::MissingElse
9
9
  ERRORS = {
10
+ 400 => Easyship::Errors::BadRequestError,
10
11
  401 => Easyship::Errors::InvalidTokenError,
11
12
  402 => Easyship::Errors::PaymentRequiredError,
12
13
  404 => Easyship::Errors::ResourceNotFoundError,
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'client_error'
4
+
5
+ module Easyship
6
+ module Errors
7
+ # Raised when Easyship returns the HTTP status code 400
8
+ class BadRequestError < ClientError; end
9
+ end
10
+ end
@@ -7,7 +7,9 @@ module Easyship
7
7
  def self.handle_response(response)
8
8
  body = response.body
9
9
 
10
- JSON.parse(body, symbolize_names: true) unless body.nil? || body.empty?
10
+ JSON.parse(body, symbolize_names: true)
11
+ rescue JSON::ParserError
12
+ nil
11
13
  end
12
14
  end
13
15
  end
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative '../error'
4
+
4
5
  module Easyship
5
6
  module Middleware
6
7
  # Response middleware that raises an error based on the response status code
7
8
  class ErrorHandlerMiddleware < Faraday::Middleware
8
9
  def on_complete(env)
9
10
  status_code = env[:status].to_i
10
- body = JSON.parse(env[:body], symbolize_names: true) if json?(env[:body])
11
+ body = response_body(env[:body])
11
12
 
12
13
  handle_status_code(status_code, body)
13
14
  end
@@ -29,8 +30,6 @@ module Easyship
29
30
 
30
31
  if body.key?(:error) && body[:error].is_a?(Hash)
31
32
  format_body_error(body)
32
- elsif body.key?(:errors) && body[:errors].is_a?(Array)
33
- format_body_errors_array(body)
34
33
  elsif body.key?(:errors)
35
34
  format_body_errors(body)
36
35
  else
@@ -46,20 +45,20 @@ module Easyship
46
45
  body[:error]
47
46
  end
48
47
 
49
- def format_body_errors_array(body)
50
- { details: body[:errors], message: body[:errors].map { |error| error[:message] }.join(', ') }
51
- end
52
-
53
48
  def format_body_errors(body)
54
- { details: body[:errors], message: body[:errors] }
49
+ errors = Array(body[:errors])
50
+
51
+ { details: errors, message: errors.join(', ') }
55
52
  end
56
53
 
57
54
  def format_by_default(body)
58
55
  { details: body, message: 'Something went wrong.' }
59
56
  end
60
57
 
61
- def json?(body)
62
- !body.nil? && body.is_a?(String)
58
+ def response_body(body)
59
+ JSON.parse(body, symbolize_names: true)
60
+ rescue JSON::ParserError
61
+ nil
63
62
  end
64
63
  end
65
64
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Easyship
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easyship
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Marusyk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-24 00:00:00.000000000 Z
11
+ date: 2024-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -45,6 +45,7 @@ files:
45
45
  - lib/easyship/client.rb
46
46
  - lib/easyship/configuration.rb
47
47
  - lib/easyship/error.rb
48
+ - lib/easyship/errors/bad_request_error.rb
48
49
  - lib/easyship/errors/client_error.rb
49
50
  - lib/easyship/errors/easyship_error.rb
50
51
  - lib/easyship/errors/invalid_token_error.rb
@@ -82,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
83
  - !ruby/object:Gem::Version
83
84
  version: '0'
84
85
  requirements: []
85
- rubygems_version: 3.5.9
86
+ rubygems_version: 3.5.16
86
87
  signing_key:
87
88
  specification_version: 4
88
89
  summary: A Ruby client for integrating with Easyship's API for shipping and logistics