lib/easyship/middleware/error_handler_middleware.rb in easyship-0.1.3 vs lib/easyship/middleware/error_handler_middleware.rb in easyship-0.1.4
- old
+ new
@@ -1,15 +1,16 @@
# frozen_string_literal: true
require_relative '../error'
+
module Easyship
module Middleware
# Response middleware that raises an error based on the response status code
class ErrorHandlerMiddleware < Faraday::Middleware
def on_complete(env)
status_code = env[:status].to_i
- body = JSON.parse(env[:body], symbolize_names: true) if json?(env[:body])
+ body = response_body(env[:body])
handle_status_code(status_code, body)
end
private
@@ -52,11 +53,13 @@
def format_by_default(body)
{ details: body, message: 'Something went wrong.' }
end
- def json?(body)
- !body.nil? && body.is_a?(String)
+ def response_body(body)
+ JSON.parse(body, symbolize_names: true)
+ rescue JSON::ParserError
+ nil
end
end
end
end