Class: IsbmAdaptor::ProviderRequest
- Defined in:
- lib/isbm_adaptor/provider_request.rb
Instance Method Summary collapse
-
#close_session(session_id) ⇒ void
Closes a provider request session.
-
#initialize(endpoint, options = {}) ⇒ ProviderRequest
constructor
Creates a new ISBM ProviderRequest client.
-
#open_session(uri, topics, listener_url = nil, xpath_expression = nil, xpath_namespaces = []) ⇒ String
Opens a provider request session for a channel for reading requests and posting responses.
-
#post_response(session_id, request_message_id, content) ⇒ String
Posts a response message on a channel.
-
#read_request(session_id) ⇒ Message
Returns the first request message in the message queue for the session.
-
#remove_request(session_id) ⇒ void
Deletes the first request message, if any, in the message queue for the session.
Methods inherited from Client
#extract_message, #validate_inclusion_in, #validate_presence_of, #validate_xml
Constructor Details
#initialize(endpoint, options = {}) ⇒ ProviderRequest
Creates a new ISBM ProviderRequest client.
13 14 15 |
# File 'lib/isbm_adaptor/provider_request.rb', line 13 def initialize(endpoint, = {}) super('ProviderRequestService.wsdl', endpoint, ) end |
Instance Method Details
#close_session(session_id) ⇒ void
This method returns an undefined value.
Closes a provider request session.
117 118 119 120 121 122 123 |
# File 'lib/isbm_adaptor/provider_request.rb', line 117 def close_session(session_id) validate_presence_of session_id, 'Session Id' @client.call(:close_provider_request_session, message: { 'SessionID' => session_id }) return true end |
#open_session(uri, topics, listener_url = nil, xpath_expression = nil, xpath_namespaces = []) ⇒ String
Opens a provider request session for a channel for reading requests and posting responses.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/isbm_adaptor/provider_request.rb', line 29 def open_session(uri, topics, listener_url = nil, xpath_expression = nil, xpath_namespaces = []) validate_presence_of uri, 'Channel URI' validate_presence_of topics, 'Topics' validate_presence_of xpath_expression, 'XPath Expression' if xpath_namespaces.present? topics = [topics].flatten # Use Builder to generate XML body as we may have multiple Topic elements xml = Builder::XmlMarkup.new xml.isbm :ChannelURI, uri topics.each do |topic| xml.isbm :Topic, topic end xml.isbm :ListenerURL, listener_url unless listener_url.nil? xml.isbm :XPathExpression, xpath_expression unless xpath_expression.nil? xpath_namespaces.each do |prefix, name| xml.isbm :XPathNamespace do xml.isbm :NamespacePrefix, prefix xml.isbm :NamespaceName, name end end response = @client.call(:open_provider_request_session, message: xml.target!) response.to_hash[:open_provider_request_session_response][:session_id].to_s end |
#post_response(session_id, request_message_id, content) ⇒ String
Posts a response message on a channel.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/isbm_adaptor/provider_request.rb', line 93 def post_response(session_id, , content) validate_presence_of session_id, 'Session Id' validate_presence_of , 'Request Message Id' validate_presence_of content, 'Content' validate_xml content # Use Builder to generate XML body as we need to concatenate XML message content xml = Builder::XmlMarkup.new xml.isbm :SessionID, session_id xml.isbm :RequestMessageID, xml.isbm :MessageContent do xml << content end response = @client.call(:post_response, message: xml.target!) response.to_hash[:post_response_response][:message_id].to_s end |
#read_request(session_id) ⇒ Message
Returns the first request message in the message queue for the session. Note: this service does not remove the message from the message queue.
63 64 65 66 67 68 69 70 |
# File 'lib/isbm_adaptor/provider_request.rb', line 63 def read_request(session_id) validate_presence_of session_id, 'Session Id' = { 'SessionID' => session_id } response = @client.call(:read_request, message: ) (response) end |
#remove_request(session_id) ⇒ void
This method returns an undefined value.
Deletes the first request message, if any, in the message queue for the session.
77 78 79 80 81 82 83 |
# File 'lib/isbm_adaptor/provider_request.rb', line 77 def remove_request(session_id) validate_presence_of session_id, 'Session Id' @client.call(:remove_request, message: { 'SessionID' => session_id }) return true end |