Module: Commerce
- Defined in:
- lib/commerce.rb
Overview
The Commerce module is used for quickly building documents and dispatching inbound requests
Defined Under Namespace
Modules: CommerceError Classes: BlockObject, Response
Class Method Summary collapse
-
.debug(*args) ⇒ Object
Send debug messages.
-
.dispatch(xml, &block) ⇒ Object
Dispatch can be used to handle incoming cXML requests.
Class Method Details
.debug(*args) ⇒ Object
Send debug messages
84 85 86 87 88 89 |
# File 'lib/commerce.rb', line 84 def self.debug(*args) if defined?(Rails) Rails.logger.debug *args if Rails.logger p *args if Rails.env && Rails.env.development? end end |
.dispatch(xml, &block) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/commerce.rb', line 54 def self.dispatch(xml, &block) raise CommerceError::CommerceError, "Missing xml" if xml.blank? raise CommerceError::CommerceError, "Missing dispatch block" unless block_given? cxml = CXML.parse(xml) request = cxml['Request'] raise CommerceError::InvalidRequestError, "No request element" if request.nil? deployment_mode = request.delete('deploymentMode') id = request.delete('Id') raise CommerceError::InvalidRequestError, "Invalid request object: #{request}" if request.keys.count != 1 request_type, request_item = request.first Commerce.debug [ 'Commerce::Dispatch', 'Received request item', request_type, request_item ] block_object = Commerce::BlockObject.new block_object.instance_eval(&block) processor = block_object.procs[request_type.underscore.to_sym] raise CommerceError::CommerceError, "Missing handler for #{request_type.underscore}" unless processor obj = block.binding.eval("self") # Grab self of caller obj.instance_exec(request_item, &processor) end |