Sha256: 0d3f1a7c0b6cd686c87b95c059c50d4dcbe151ee94eb90979a042c58557f760b

Contents?: true

Size: 1.75 KB

Versions: 27

Compression:

Stored size: 1.75 KB

Contents

module ActiveShipping #:nodoc:

  # Basic Response class for requests against a carrier's API.
  class Response
    attr_reader :params
    attr_reader :message
    attr_reader :test
    attr_reader :xml
    attr_reader :request

    # @param success [Boolean] Whether the request was considered successful, i.e. this
    #   response object will have the expected data set.
    # @param message [String] A status message. Usuaully set when `success` is `false`,
    #   but can also be set for successful responses.
    # @param params [Hash] Response parameters
    # @param options [Hash]
    # @option options [Boolean] :test (default: false) Whether this reponse was a result
    #   of a request executed against the sandbox or test environment of the carrier's API.
    # @option options [String] :xml The raw XML of the response.
    # @option options [String] :request The payload of the request.
    # @option options [Boolean] :allow_failure Allows a failed response without raising.
    def initialize(success, message, params = {}, options = {})
      @success, @message, @params = success, message, params.stringify_keys
      @test = options[:test] || false
      @xml = options[:xml]
      @request = options[:request]
      raise ResponseError.new(self) unless success || options[:allow_failure]
    end

    # Whether the request was executed successfully or not.
    # @return [Boolean] Should only return `true` if the attributes of teh response
    #   instance are set with useful values.
    def success?
      @success ? true : false
    end

    # Whether this request was executed against the sandbox or test environment instead of
    # the production environment of the carrier.
    # @return [Boolean]
    def test?
      @test ? true : false
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
active_shipping-1.8.6 lib/active_shipping/response.rb
active_shipping-1.8.5 lib/active_shipping/response.rb
active_shipping-1.8.4 lib/active_shipping/response.rb
active_shipping-1.8.3 lib/active_shipping/response.rb
active_shipping-1.8.2 lib/active_shipping/response.rb
active_shipping-1.8.1 lib/active_shipping/response.rb
active_shipping-1.8.0 lib/active_shipping/response.rb