Class: IsbmAdaptor::ConsumerRequest
- Defined in:
- lib/isbm_adaptor/consumer_request.rb
Instance Method Summary collapse
-
#close_session(session_id) ⇒ void
Closes a consumer request session.
-
#expire_request(session_id, message_id) ⇒ void
Expires a posted request message.
-
#initialize(endpoint, options = {}) ⇒ ConsumerRequest
constructor
Creates a new ISBM ConsumerRequest client.
-
#open_session(uri, listener_url = nil) ⇒ String
Opens a consumer request session for a channel for posting requests and reading responses.
-
#post_request(session_id, content, topic, expiry = nil) ⇒ String
Posts a request message on a channel.
-
#read_response(session_id, request_message_id) ⇒ Message
Returns the first response message, if any, in the message queue associated with the request.
-
#remove_response(session_id, request_message_id) ⇒ void
Deletes the first response message, if any, in the message queue associated with the request.
Methods inherited from Client
#extract_message, #validate_inclusion_in, #validate_presence_of, #validate_xml
Constructor Details
#initialize(endpoint, options = {}) ⇒ ConsumerRequest
Creates a new ISBM ConsumerRequest client.
13 14 15 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 13 def initialize(endpoint, = {}) super('ConsumerRequestService.wsdl', endpoint, ) end |
Instance Method Details
#close_session(session_id) ⇒ void
This method returns an undefined value.
Closes a consumer request session.
120 121 122 123 124 125 126 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 120 def close_session(session_id) validate_presence_of session_id, 'Session Id' @client.call(:close_consumer_request_session, message: { 'SessionID' => session_id }) return true end |
#expire_request(session_id, message_id) ⇒ void
This method returns an undefined value.
Expires a posted request message.
71 72 73 74 75 76 77 78 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 71 def expire_request(session_id, ) validate_presence_of session_id, 'Session Id' validate_presence_of , 'Message Id' @client.call(:expire_request, message: { 'SessionID' => session_id, 'MessageID' => }) return true end |
#open_session(uri, listener_url = nil) ⇒ String
Opens a consumer request session for a channel for posting requests and reading responses.
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 24 def open_session(uri, listener_url = nil) validate_presence_of uri, 'Channel URI' = { 'ChannelURI' => uri } ['ListenerURL'] = listener_url if listener_url response = @client.call(:open_consumer_request_session, message: ) response.to_hash[:open_consumer_request_session_response][:session_id].to_s end |
#post_request(session_id, content, topic, expiry = nil) ⇒ String
Posts a request message on a channel.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 44 def post_request(session_id, content, topic, expiry = nil) validate_presence_of session_id, 'Session Id' validate_presence_of content, 'Content' validate_presence_of topic, 'Topic' 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 :MessageContent do xml << content end xml.isbm :Topic, topic duration = expiry.to_s xml.isbm :Expiry, duration unless duration.nil? response = @client.call(:post_request, message: xml.target!) response.to_hash[:post_request_response][:message_id].to_s end |
#read_response(session_id, request_message_id) ⇒ Message
Returns the first response message, if any, in the message queue associated with the request.
88 89 90 91 92 93 94 95 96 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 88 def read_response(session_id, ) validate_presence_of session_id, 'Session Id' validate_presence_of , 'Request Message Id' = { 'SessionID' => session_id, 'RequestMessageID' => } response = @client.call(:read_response, message: ) (response) end |
#remove_response(session_id, request_message_id) ⇒ void
This method returns an undefined value.
Deletes the first response message, if any, in the message queue associated with the request.
105 106 107 108 109 110 111 112 113 |
# File 'lib/isbm_adaptor/consumer_request.rb', line 105 def remove_response(session_id, ) validate_presence_of session_id, 'Session Id' validate_presence_of , 'Request Message Id' = { 'SessionID' => session_id, 'RequestMessageID' => } @client.call(:remove_response, message: ) return true end |