class WorldnetTps::Request::Base
Attributes
attributes[R]
date_time[R]
gateway[R]
request[R]
response[R]
Protected Class Methods
mandatory_attributes(_context)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 86 def self.mandatory_attributes(_context) [] end
optional_attributes(_context)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 90 def self.optional_attributes(_context) [] end
request_check_sum_keys(_context)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 98 def self.request_check_sum_keys(_context) [] end
response_check_sum_keys(_context, _response)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 94 def self.response_check_sum_keys(_context, _response) [] end
Public Instance Methods
invoke!()
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 31 def invoke! _invoke! invoke_method end
process!(struct)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 19 def process!(struct) xml = build_xml(struct) validate_xml!(xml) if xsd_validation? uri = URI.parse(ws_url) http = Net::HTTP.new(uri.host, 443) http.use_ssl = true @request = Net::HTTP::Post.new(uri.request_uri) @request.body = xml @response = http.request(@request) build_response(@response) end
Protected Instance Methods
_invoke!(action)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 72 def _invoke!(action) add_check_sum! verify_request_keys!(self.class.mandatory_attributes(self), self.attributes) attrs = (request_attributes).inject({}) do |h, i| h[i] = self.attributes[i] h end.reject { |_, v| v.nil? } process!(action => attrs) end
build_failed_response(code, message)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 47 def build_failed_response(code, message) Response::Error.new(code, message) end
build_response(http_response)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 56 def build_response(http_response) data = Hash.from_xml(http_response.body).values.first if data.keys[0] =~ /error/i build_failed_response(data['ERRORCODE'], data['ERRORSTRING']) else response_attributes = normalize_response_attributes(data) begin validate_hash!(response_attributes) rescue WorldnetTps::WsObject::InvalidHashError => e return Response::InvalidHash.new(response_attributes) end build_success_response(response_attributes) end end
build_success_response(attributes)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 52 def build_success_response(attributes) Response::Success.new(attributes) end
build_xml(struct)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 41 def build_xml(struct) root = struct.keys.first data = Hash[struct[root].map { |k, v| [prepare_key(k), v.to_s] }] data.to_xml(root: prepare_key(root)) end
request_attributes()
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 82 def request_attributes self.class.mandatory_attributes(self) + self.class.optional_attributes(self) end
validate_xml!(xml)
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 37 def validate_xml!(xml) WorldnetTps::XSD.validate!(xml) end
ws_url()
click to toggle source
# File lib/worldnet_tps/request/base.rb, line 102 def ws_url gateway.ws_url end