diff --git a/Gemfile.lock b/Gemfile.lock index 3cecde2..b391817 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - external_services (0.6.1) + external_services (0.7.0) faraday (>= 2.0, < 3) rails (>= 5.0.7, < 8) diff --git a/lib/external_services/api.rb b/lib/external_services/api.rb index 807b302..d6673dc 100644 --- a/lib/external_services/api.rb +++ b/lib/external_services/api.rb @@ -5,22 +5,36 @@ module ExternalServices module Api class Error < StandardError - attr_reader :response + attr_reader :response, :status, :url, :method, :body def initialize(response) @response = response - super - end + if response.respond_to?(:env) + @status = response.status + @url = response.env.url.to_s + @method = response.env.method.to_s.upcase + @body = response.body + end - def message - @response.inspect + super(build_message) end - alias to_s message + private + + def build_message + return 'API Error: No response provided' if response.nil? + + message = <<~MSG + API Error: + Method: #{method} + URL: #{url} + Status: HTTP #{status} + MSG + + message += " Body: #{body.inspect}\n" if body - def inspect - "#{self.class}: #{self}" + message.strip end end diff --git a/lib/external_services/version.rb b/lib/external_services/version.rb index 8d15e3c..40bf1e5 100644 --- a/lib/external_services/version.rb +++ b/lib/external_services/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module ExternalServices - VERSION = '0.6.1' + VERSION = '0.7.0' end