Skip to content

Commit 3c68677

Browse files
committed
fix: error parsing
1 parent 8c1e964 commit 3c68677

8 files changed

+145
-327
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
## Next Release (minor)
44

55
- Adds Ruby 3.4 support
6+
- Fixes error parsing
7+
- Allows for alternative format of `errors` field
8+
- Corrects available properties of an `EasyPostError` and `ApiError` (`code` and `field` removed from `EasyPostError`, `message` unfurled and explicitly added to `ApiError`)
69
- Corrects the HTTP verb for updating a brand from `GET` to `PATCH`
710
- Removes the deprecated `create_list` tracker endpoint function as it is no longer available via API
811

lib/easypost/errors/api/api_error.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
require 'easypost/constants'
55

66
class EasyPost::Errors::ApiError < EasyPost::Errors::EasyPostError
7-
attr_reader :status_code, :code, :errors
7+
attr_reader :message, :status_code, :code, :errors
88

99
def initialize(message, status_code = nil, error_code = nil, sub_errors = nil)
1010
super message
11+
message_list = []
12+
EasyPost::Errors::ApiError.collect_error_messages(message, message_list)
13+
@message = message_list.join(', ')
1114
@status_code = status_code
1215
@code = error_code
1316
@errors = sub_errors
@@ -46,12 +49,9 @@ def self.handle_api_error(response)
4649
# Try to parse the response body as JSON
4750
begin
4851
error_data = JSON.parse(response.body)['error']
49-
5052
error_message = error_data['message']
5153
error_type = error_data['code']
52-
errors = error_data['errors']&.map do |error|
53-
EasyPost::Models::Error.from_api_error_response(error)
54-
end
54+
errors = error_data['errors']
5555
rescue StandardError
5656
error_message = response.code.to_s
5757
error_type = EasyPost::Constants::API_ERROR_DETAILS_PARSING_ERROR

lib/easypost/models/error.rb

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,10 @@
22

33
# EasyPost Error object.
44
class EasyPost::Models::Error
5-
attr_reader :code, :field, :message
5+
attr_reader :message
66

77
# Initialize a new EasyPost Error
8-
def initialize(code, field = nil, message = nil)
9-
@code = code
10-
@field = field
8+
def initialize(message = nil)
119
@message = message
1210
end
13-
14-
# Create an EasyPost Error from an API error response.
15-
def self.from_api_error_response(data)
16-
code = data['code']
17-
field = data['field'] || nil
18-
message = data['message'] || nil
19-
EasyPost::Models::Error.new(code, field, message)
20-
end
2111
end

spec/cassettes/errors/EasyPost_Errors_api_error_raised_when_API_returns_error.yml renamed to spec/cassettes/errors/EasyPost_Errors_api_error_assigns_properties_of_an_error_correctly.yml

Lines changed: 20 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/cassettes/errors/EasyPost_Errors_api_error_assigns_properties_of_an_error_correctly_when_returned_via_the_alternative_format.yml

Lines changed: 68 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/cassettes/errors/EasyPost_Errors_api_error_deserialize_HTTP_error_response_properly.yml

Lines changed: 0 additions & 134 deletions
This file was deleted.

0 commit comments

Comments
 (0)