# frozen_string_literal: true require 'json' module FriendlyShipping module Services class ShipEngine class BadRequest < StandardError attr_reader :rest_error, :response def initialize(rest_error) @rest_error = rest_error @response = rest_error.response super parse_json_errors || rest_error end private def parse_json_errors parsed_body = JSON.parse(response.body) messages = parsed_body.fetch('errors')&.map { |e| e.fetch('message') } messages&.join(', ') rescue JSON::ParserError, KeyError => _e nil end end end end end