Class: IsbmAdaptor::ConsumerPublication
- Defined in:
- lib/isbm_adaptor/consumer_publication.rb
Instance Method Summary collapse
-
#close_session(session_id) ⇒ void
Closes a subscription session.
-
#initialize(endpoint, options = {}) ⇒ ConsumerPublication
constructor
Creates a new ISBM ConsumerPublication client.
-
#open_session(uri, topics, listener_url = nil, xpath_expression = nil, xpath_namespaces = []) ⇒ String
Opens a subscription session for a channel.
-
#read_publication(session_id) ⇒ Message
Reads the first message, if any, in the session queue.
-
#remove_publication(session_id) ⇒ void
Removes the first message, if any, in the session queue.
Methods inherited from Client
#extract_message, #validate_inclusion_in, #validate_presence_of, #validate_xml
Constructor Details
#initialize(endpoint, options = {}) ⇒ ConsumerPublication
Creates a new ISBM ConsumerPublication client.
13 14 15 |
# File 'lib/isbm_adaptor/consumer_publication.rb', line 13 def initialize(endpoint, = {}) super('ConsumerPublicationService.wsdl', endpoint, ) end |
Instance Method Details
#close_session(session_id) ⇒ void
This method returns an undefined value.
Closes a subscription session.
86 87 88 89 90 91 92 |
# File 'lib/isbm_adaptor/consumer_publication.rb', line 86 def close_session(session_id) validate_presence_of session_id, 'Session Id' @client.call(:close_subscription_session, message: { 'SessionID' => session_id }) return true end |
#open_session(uri, topics, listener_url = nil, xpath_expression = nil, xpath_namespaces = []) ⇒ String
Opens a subscription session for a channel.
28 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 |
# File 'lib/isbm_adaptor/consumer_publication.rb', line 28 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_subscription_session, message: xml.target!) response.to_hash[:open_subscription_session_response][:session_id].to_s end |
#read_publication(session_id) ⇒ Message
Reads the first message, if any, in the session queue.
60 61 62 63 64 65 66 |
# File 'lib/isbm_adaptor/consumer_publication.rb', line 60 def read_publication(session_id) validate_presence_of session_id, 'Session Id' response = @client.call(:read_publication, message: { 'SessionID' => session_id }) (response) end |
#remove_publication(session_id) ⇒ void
This method returns an undefined value.
Removes the first message, if any, in the session queue.
73 74 75 76 77 78 79 |
# File 'lib/isbm_adaptor/consumer_publication.rb', line 73 def remove_publication(session_id) validate_presence_of session_id, 'Session Id' @client.call(:remove_publication, message: { 'SessionID' => session_id }) return true end |