lib/lita/adapter.rb in lita-1.1.2 vs lib/lita/adapter.rb in lita-2.0.0

- old
+ new

@@ -1,32 +1,67 @@ module Lita + # Adapters are the glue between Lita's API and a chat service. class Adapter + # The instance of {Lita::Robot}. + # @return [Lita::Robot] attr_reader :robot class << self + # A list of configuration keys that are required for the adapter to boot. + # @return [Array] attr_reader :required_configs + # Defines configuration keys that are requried for the adapter to boot. + # @param keys [String, Symbol] The required keys. + # @return [void] def require_config(*keys) @required_configs ||= [] @required_configs.concat(keys.flatten.map(&:to_sym)) end alias_method :require_configs, :require_config end + # @param robot [Lita::Robot] The currently running robot. def initialize(robot) @robot = robot ensure_required_configs end + # @!method run + # The main loop. Should connect to the chat service, listen for incoming + # messages, create {Lita::Message} objects from them, and dispatch them to + # the robot by calling {Lita::Robot#receive}. + # @return [void] + # @abstract This should be implemented by the adapter. + + # @!method send_messages(target, strings) + # Sends one or more messages to a user or room. + # @param target [Lita::Source] The user or room to send messages to. + # @param strings [Array<String>] An array of messages to send. + # @return [void] + # @abstract This should be implemented by the adapter. + + # @!method set_topic(target, topic) + # Sets the topic for a room. + # @param target [Lita::Source] The room to change the topic for. + # @param topic [String] The new topic. + # @return [void] + # @abstract This should be implemented by the adapter. + + # @!method shut_down + # Performs any clean up necessary when disconnecting from the chat service. + # @return [void] + # @abstract This should be implemented by the adapter. [:run, :send_messages, :set_topic, :shut_down].each do |method| define_method(method) do |*args| Lita.logger.warn("This adapter has not implemented ##{method}.") end end private + # Logs a fatal message and aborts if a required config key is not set. def ensure_required_configs required_configs = self.class.required_configs return if required_configs.nil? missing_keys = []