Sha256: 1e144db78eeb555857e4dca1b047e2e957a57733c939f9e6af12a0a380dd8eb4

Contents?: true

Size: 960 Bytes

Versions: 4

Compression:

Stored size: 960 Bytes

Contents

module Lipseys
  class Response

    def initialize(response)
      @response = response

      case @response
      when Net::HTTPUnauthorized
        Lipseys::Error::NotAuthorized.new(@response.body)
      when Net::HTTPNotFound
        Lipseys::Error::NotFound.new(@response.body)
      when Net::HTTPNoContent
        Lipseys::Error::NoContent.new(@response.body)
      when Net::HTTPOK, Net::HTTPSuccess
        _data = (JSON.parse(@response.body) if @response.body.present?)

        @data = case
        when _data.is_a?(Hash)
          _data.deep_symbolize_keys
        when _data.is_a?(Array)
          _data.map(&:deep_symbolize_keys)
        end
      else
        raise Lipseys::Error::RequestError.new(@response.body)
      end
    end

    def [](key)
      @data[key]
    end

    def body
      @data
    end

    def fetch(key)
      @data.fetch(key)
    end

    def success?
      !!self[:success] && self[:errors].empty?
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lipseys-6.1.0 lib/lipseys/response.rb
lipseys-6.0.2 lib/lipseys/response.rb
lipseys-6.0.1 lib/lipseys/response.rb
lipseys-6.0.0 lib/lipseys/response.rb