class Agris::SavonRequest
Public Class Methods
new(base_url, credentials, logger, log_level, proxy_url = nil)
click to toggle source
# File lib/agris/savon_request.rb, line 7 def initialize(base_url, credentials, logger, log_level, proxy_url = nil) @base_url = base_url @credentials = credentials @logger = logger @log_level = log_level @proxy_url = proxy_url end
Public Instance Methods
process_message(context, message_number, input)
click to toggle source
# File lib/agris/savon_request.rb, line 15 def process_message(context, message_number, input) response = client.call( :process_message, message: { AgContext_str_p: context, AgMessage_int_p: message_number, AgInput_obj_p: input } ) message_response = parse_response(response) fail response_error(message_response.error_info) \ if message_response.error? message_response end
Protected Instance Methods
client()
click to toggle source
# File lib/agris/savon_request.rb, line 42 def client options = { wsdl: wsdl, convert_request_keys_to: :none, raise_errors: false, logger: @logger, log: true, log_level: @log_level || :debug } options = options.merge(proxy: @proxy_url) unless @proxy_url.to_s == '' options = @credentials.apply(options) Savon.client(options) end
parse_response(response)
click to toggle source
# File lib/agris/savon_request.rb, line 34 def parse_response(response) ProcessMessageResponse.new( response.body[:process_message_result], response.body[:process_message_response][:ag_output_obj_p], response.body[:process_message_response][:ag_error_str_p] ) end
response_error(error_info)
click to toggle source
# File lib/agris/savon_request.rb, line 57 def response_error(error_info) Object.const_get( format( 'Agris::%<error_name>sError', error_name: error_info.type.to_s.split('_').map(&:capitalize).join ) ).new(error_info.payload) end
wsdl()
click to toggle source
# File lib/agris/savon_request.rb, line 66 def wsdl format( '%<base_url>s/%<path>s', base_url: @base_url, path: 'agris/AGRIS.Env.MessageRouter/AGRIS.Env.MessageRouter.asmx?WSDL' ) end