Sha256: 0d6d832a5e71ed2d3ee38de0b382d19f69adb3d33308c6bf196d0cd67f67720e

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

module Lita
  module Adapters
    class Campfire < Adapter
      class Connector
        def initialize(robot, opts)
          @robot     = robot
          @subdomain = opts.fetch(:subdomain)
          @apikey    = opts.fetch(:apikey)
          @rooms     = opts.fetch(:rooms)
          @debug     = opts.fetch(:debug) { false }
        end

        def connect
          @campfire = Tinder::Campfire.new(@subdomain, token: @apikey)
        end

        def join_rooms
          rooms.each do |room_id|
            room = fetch_room(room_id)
            room.join
            callback = Callback.new(@robot, room)
            callback.register_users
            callback.listen
          end
        end

        def send_messages(room_id, messages)
          fetch_room(room_id).tap do |my_room|
            messages.each do |message|
              if message.include?("\n")
                my_room.paste message
              else
                my_room.speak message
              end
            end
          end
        end

        def disconnect
          Lita.logger.info("Disconnecting from Campfire.")
          rooms.each do |room_id|
            room = fetch_room(room_id)
            room.leave
          end
        end

        private

        attr_reader :rooms

        def fetch_room(room_id)
          @campfire.find_room_by_id(room_id).tap do |room|
            if room.nil?
              raise RoomNotAvailable,
                "Make sure you have access to room #{ room_id.inspect }"
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lita-campfire-0.1.3 lib/lita/adapters/campfire/connector.rb
lita-campfire-0.1.2 lib/lita/adapters/campfire/connector.rb