class Sip2::Messages::Base
Public Class Methods
message_class_for_method(method_name)
click to toggle source
Class helper to fetch the descendant “message” class based on a method name
@param [String] method_name the underscore case name of the class to fetch @return [Class] the message class fetched based on the method_name,
`nil` if no descendant was found
@example
message_class_for_method('patron_information') => Sip2::Messages::PatronInformation
# File lib/sip2/messages/base.rb, line 19 def self.message_class_for_method(method_name) # rubocop:disable Metrics/MethodLength return @message_class_lookup[method_name] if @message_class_lookup.key? :method_name @message_class_lookup[method_name] = begin # classify the method name so we can fetch the message class of the same name class_name = method_name.to_s.capitalize.gsub(%r{(?:_|(/))([a-z\d]*)}i) do "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" end message_class = Messages.const_get(class_name) message_class if message_class && message_class < self rescue NameError nil end end
new(connection)
click to toggle source
# File lib/sip2/messages/base.rb, line 35 def initialize(connection) @connection = connection end
Public Instance Methods
action_message(*args)
click to toggle source
Action the message, passing the dynamic arguments to the specific message implementation
@param [*various] args Arguments to pass to the specific message implementation @return returns `nil` if there was no valid message returned.
Otherwise value will depend on the specific message. See the `handle_response` method in those classes for more information
# File lib/sip2/messages/base.rb, line 45 def action_message(*args) message = build_message(*args) response = @connection.send_message message return if response.nil? handle_response(response) end
Private Instance Methods
build_message(*)
click to toggle source
# File lib/sip2/messages/base.rb, line 55 def build_message(*) raise NotImplementedError, "#{self.class} must implement `build_message` method" end
handle_response(_response)
click to toggle source
# File lib/sip2/messages/base.rb, line 59 def handle_response(_response) raise NotImplementedError, "#{self.class} must implement `handle_response` method" end