Sha256: 1d5441616a1655e30f66510dd55506e4dd894cb37ed711926598d3a28c20ee80

Contents?: true

Size: 1002 Bytes

Versions: 14

Compression:

Stored size: 1002 Bytes

Contents

module ConvertApi
  class Error < StandardError; end
  class SecretError < Error; end
  class FileNameError < Error; end
  class TimeoutError < Error; end
  class ConnectionFailed < Error; end
  class FormatError < Error; end

  class ClientError < Error
    attr_reader :response

    def initialize(response)
      @response = response
    end

    def to_s
      return "the server responded with status #{http_status}" unless json?

      "#{error_message} Code: #{code}. #{invalid_parameters}".strip
    end

    def error_message
      response_json['Message']
    end

    def code
      response_json['Code']
    end

    def invalid_parameters
      response_json['InvalidParameters']
    end

    def http_status
      response[:status]
    end

    def response_json
      @response_json ||= begin
        JSON.parse(response[:body])
      rescue JSON::ParserError
        {}
      end
    end

    private

    def json?
      response[:headers]['content-type'] =~ /json/
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
convert_api-1.4.0 lib/convert_api/errors.rb
convert_api-1.3.2 lib/convert_api/errors.rb
convert_api-1.3.1 lib/convert_api/errors.rb
convert_api-1.3.0 lib/convert_api/errors.rb
convert_api-1.2.1 lib/convert_api/errors.rb
convert_api-1.2.0 lib/convert_api/errors.rb
convert_api187-1.1.2 lib/convert_api/errors.rb
convert_api187-1.1.0 lib/convert_api/errors.rb
convert_api-1.1.0 lib/convert_api/errors.rb
convert_api-1.0.4 lib/convert_api/errors.rb
convert_api-1.0.3 lib/convert_api/errors.rb
convert_api-1.0.2 lib/convert_api/errors.rb
convert_api-1.0.1 lib/convert_api/errors.rb
convert_api-1.0.0 lib/convert_api/errors.rb