Class: Agcod::Request
- Inherits:
-
Object
- Object
- Agcod::Request
- Defined in:
- lib/agcod/request.rb
Direct Known Subclasses
CancelGiftCard, CreateGiftCard, HealthCheck, VoidGiftCardCreation
Instance Attribute Summary collapse
-
#action ⇒ Object
readonly
Returns the value of attribute action.
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#parameters ⇒ Object
readonly
Returns the value of attribute parameters.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#request_id ⇒ Object
readonly
Returns the value of attribute request_id.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
-
#sent ⇒ Object
readonly
Returns the value of attribute sent.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#timestamp ⇒ Object
readonly
Returns the value of attribute timestamp.
-
#xml_response ⇒ Object
readonly
Returns the value of attribute xml_response.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Request
constructor
A new instance of Request.
- #request_url ⇒ Object
- #response_id ⇒ Object
- #sign_string(string_to_sign) ⇒ Object
- #submit ⇒ Object
- #successful? ⇒ Boolean
Constructor Details
#initialize(options = {}) ⇒ Request
Returns a new instance of Request.
3 4 5 6 7 8 9 |
# File 'lib/agcod/request.rb', line 3 def initialize( = {}) @request = "" @response = "" @status = "" @parameters = {} @options = end |
Instance Attribute Details
#action ⇒ Object (readonly)
Returns the value of attribute action.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def action @action end |
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def errors @errors end |
#parameters ⇒ Object (readonly)
Returns the value of attribute parameters.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def parameters @parameters end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def request @request end |
#request_id ⇒ Object (readonly)
Returns the value of attribute request_id.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def request_id @request_id end |
#response ⇒ Object (readonly)
Returns the value of attribute response.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def response @response end |
#sent ⇒ Object (readonly)
Returns the value of attribute sent.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def sent @sent end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def status @status end |
#timestamp ⇒ Object (readonly)
Returns the value of attribute timestamp.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def @timestamp end |
#xml_response ⇒ Object (readonly)
Returns the value of attribute xml_response.
32 33 34 |
# File 'lib/agcod/request.rb', line 32 def xml_response @xml_response end |
Instance Method Details
#request_url ⇒ Object
50 51 52 |
# File 'lib/agcod/request.rb', line 50 def request_url "#{ Agcod::Configuration.uri }?#{ build_sorted_and_signed_request_string }" end |
#response_id ⇒ Object
46 47 48 |
# File 'lib/agcod/request.rb', line 46 def response_id @response_id || @options["response_id"] end |
#sign_string(string_to_sign) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/agcod/request.rb', line 34 def sign_string(string_to_sign) digest = OpenSSL::Digest.new('sha256') sha256 = OpenSSL::HMAC.digest(digest, Agcod::Configuration.secret_key, string_to_sign) #Base64 encoding adds a linefeed to the end of the string so chop the last character! CGI.escape(Base64.encode64(sha256).chomp) end |
#submit ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/agcod/request.rb', line 11 def submit #action must be specified so raise an exception if it has not been populated if self.action.nil? raise "Action not specified" end #form the request GET parameter string @request = build_sorted_and_signed_request_string send_request if @response process_response log if Agcod::Configuration.logger end end |
#successful? ⇒ Boolean
28 29 30 |
# File 'lib/agcod/request.rb', line 28 def successful? self.sent && self.errors.size == 0 && self.status == "SUCCESS" end |