Sha256: 2641cd31ccb682f2db50334a2e0ce15a7cd55af5dce38366b3c3e692d380e9cf

Contents?: true

Size: 981 Bytes

Versions: 4

Compression:

Stored size: 981 Bytes

Contents

module EZAPIClient
  class BaseResponse

    include Virtus.model
    attribute :raw_response, Object
    attribute :raw_body, String, lazy: true, default: :default_raw_body
    attribute(:response_body, IndifferentHash, {
      lazy: true,
      default: :default_response_body,
    })
    attribute :success, Boolean, lazy: true, default: :default_success
    attribute :code, String, lazy: true, default: :default_code
    attribute :message, String, lazy: true, default: :default_message

    private

    def default_success
      return false if response_body.nil?
      response_body[:success]
    end

    def default_raw_body
      raw_response.body
    end

    def default_response_body
      JSON.parse(raw_body)
    rescue JSON::ParserError
      nil
    end

    def default_code
      return nil if response_body.nil?
      response_body[:code]
    end

    def default_message
      return nil if response_body.nil?
      response_body[:message]
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ezapi_client-1.2.1 lib/ezapi_client/responses/base_response.rb
ezapi_client-1.1.2 lib/ezapi_client/responses/base_response.rb
ezapi_client-1.1.1 lib/ezapi_client/responses/base_response.rb
ezapi_client-1.1.0 lib/ezapi_client/responses/base_response.rb