Sha256: 1d60641a774cb68498510bc0f0a5f4ac7b9b0f39e123fd0f4e754961ef611b18

Contents?: true

Size: 1.04 KB

Versions: 10

Compression:

Stored size: 1.04 KB

Contents

module Lol
  class InvalidAPIResponse < StandardError
    attr_reader :raw

    def initialize url, response
      @raw = extract_raw_response_info response
      super "#{raw[:status]} calling #{url}"
    end

    private

    def extract_raw_response_info response
      {
        headers: extract_raw_headers(response),
        body:    extract_raw_body(response),
        status:  extract_raw_status(response)
      }
    end

    def extract_raw_headers response
      response.respond_to?(:headers) && response.headers || {}
    end

    def extract_raw_body response
      if response.respond_to?(:parsed_response)
        response.parsed_response
      elsif response.respond_to?(:body)
        response.body
      else
        response
      end
    end

    def extract_raw_status response
      if response.is_a?(Hash) && response['status']
        response['status']['message']
      elsif response.respond_to?(:response)
        "#{response.response.code} #{response.response.message}"
      else
        "Unknown Error"
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ruby-lol-1.2.0 lib/lol/invalid_api_response.rb
ruby-lol-1.1.2 lib/lol/invalid_api_response.rb
ruby-lol-1.1.1 lib/lol/invalid_api_response.rb
ruby-lol-1.0.0 lib/lol/invalid_api_response.rb
ruby-lol-0.12.2 lib/lol/invalid_api_response.rb
ruby-lol-0.12.1 lib/lol/invalid_api_response.rb
ruby-lol-0.12.0 lib/lol/invalid_api_response.rb
ruby-lol-0.11.6 lib/lol/invalid_api_response.rb
ruby-lol-0.11.5 lib/lol/invalid_api_response.rb
ruby-lol-0.11.4 lib/lol/invalid_api_response.rb