This repository has been archived by the owner on Jun 13, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 545
/
response.rb
44 lines (40 loc) · 1.75 KB
/
response.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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