del 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -5
- data/exe/del +3 -1
- data/lib/del/configuration.rb +29 -0
- data/lib/del/connection.rb +10 -10
- data/lib/del/default_router.rb +13 -3
- data/lib/del/examples/routes.rb +7 -0
- data/lib/del/robot.rb +6 -5
- data/lib/del/version.rb +1 -1
- data/lib/del.rb +11 -16
- metadata +3 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 275fb2e7d68148752f83c9e9c01d72f03631822c8f8c51261b6bc78917e25c24
         | 
| 4 | 
            +
              data.tar.gz: 7071efd3d8cde47caba440ae0016bcef36df20b99cb65c69067bd967a8b3c473
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: bdd37cdf1329695640e361542372ca9d0195d31c481526751c21417c38303ca9e0001d6568bd5b900c5d9ae303fb7088769712ec62eb91a121fcb5d6c65d193b
         | 
| 7 | 
            +
              data.tar.gz: c2486029c1495bfde34aaa803a9d20398847feeb1d4669aea2a01dc95955bec795195206f3e0901eba6da27963e6c00fbdb3011eaf19a0897839802ff57b3e18
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,6 @@ | |
| 1 1 | 
             
            # Del
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
            TODO: Delete this and the text above, and describe your gem
         | 
| 3 | 
            +
            Del is a funky robosapien.
         | 
| 6 4 |  | 
| 7 5 | 
             
            ## Installation
         | 
| 8 6 |  | 
| @@ -22,7 +20,7 @@ Or install it yourself as: | |
| 22 20 |  | 
| 23 21 | 
             
            ## Usage
         | 
| 24 22 |  | 
| 25 | 
            -
             | 
| 23 | 
            +
                $ del routes.rb # see lib/del/examples/routes.rb for an example
         | 
| 26 24 |  | 
| 27 25 | 
             
            ## Development
         | 
| 28 26 |  | 
| @@ -32,7 +30,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To | |
| 32 30 |  | 
| 33 31 | 
             
            ## Contributing
         | 
| 34 32 |  | 
| 35 | 
            -
            Bug reports and pull requests are welcome on GitHub at https://github.com/ | 
| 33 | 
            +
            Bug reports and pull requests are welcome on GitHub at https://github.com/mokhan/del.
         | 
| 36 34 |  | 
| 37 35 | 
             
            ## License
         | 
| 38 36 |  | 
    
        data/exe/del
    CHANGED
    
    | @@ -3,6 +3,8 @@ | |
| 3 3 | 
             
            require "del"
         | 
| 4 4 | 
             
            require "pathname"
         | 
| 5 5 |  | 
| 6 | 
            +
            startup_file = Pathname.new(ARGV[0]) if ARGV[0]
         | 
| 6 7 | 
             
            Del.start(
         | 
| 7 | 
            -
              dotenv_file: ENV.fetch("DELRC", Pathname.new(Dir.home).join(".delrc"))
         | 
| 8 | 
            +
              dotenv_file: ENV.fetch("DELRC", Pathname.new(Dir.home).join(".delrc")),
         | 
| 9 | 
            +
              startup_file: startup_file,
         | 
| 8 10 | 
             
            )
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module Del
         | 
| 2 | 
            +
              class Configuration
         | 
| 3 | 
            +
                attr_accessor :default_rooms
         | 
| 4 | 
            +
                attr_accessor :host
         | 
| 5 | 
            +
                attr_accessor :jid
         | 
| 6 | 
            +
                attr_accessor :jid
         | 
| 7 | 
            +
                attr_accessor :logger
         | 
| 8 | 
            +
                attr_accessor :muc_domain
         | 
| 9 | 
            +
                attr_accessor :name
         | 
| 10 | 
            +
                attr_accessor :password
         | 
| 11 | 
            +
                attr_accessor :rooms
         | 
| 12 | 
            +
                attr_accessor :router
         | 
| 13 | 
            +
                attr_accessor :users
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def initialize
         | 
| 16 | 
            +
                  @default_rooms = ENV.fetch("DEL_ROOMS", '').split(',')
         | 
| 17 | 
            +
                  @host = ENV.fetch("DEL_HOST", 'chat.hipchat.com')
         | 
| 18 | 
            +
                  @jid = ENV.fetch("DEL_JID")
         | 
| 19 | 
            +
                  @logger = Logger.new(STDOUT)
         | 
| 20 | 
            +
                  @logger.level = Logger::INFO
         | 
| 21 | 
            +
                  @muc_domain = ENV.fetch("DEL_MUC_DOMAIN", "conf.hipchat.com")
         | 
| 22 | 
            +
                  @name = ENV.fetch("DEL_FULL_NAME")
         | 
| 23 | 
            +
                  @password = ENV.fetch("DEL_PASSWORD")
         | 
| 24 | 
            +
                  @rooms = Repository.new
         | 
| 25 | 
            +
                  @router = DefaultRouter.new
         | 
| 26 | 
            +
                  @users = Repository.new
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
    
        data/lib/del/connection.rb
    CHANGED
    
    | @@ -4,8 +4,8 @@ module Del | |
| 4 4 |  | 
| 5 5 | 
             
                def initialize(configuration:)
         | 
| 6 6 | 
             
                  @configuration = configuration
         | 
| 7 | 
            -
                  @rooms = configuration | 
| 8 | 
            -
                  @users = configuration | 
| 7 | 
            +
                  @rooms = configuration.rooms
         | 
| 8 | 
            +
                  @users = configuration.users
         | 
| 9 9 | 
             
                  @mucs = {}
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| @@ -14,9 +14,9 @@ module Del | |
| 14 14 | 
             
                    Del.logger.error(error)
         | 
| 15 15 | 
             
                    disconnect
         | 
| 16 16 | 
             
                  end
         | 
| 17 | 
            -
                  client.connect(configuration | 
| 17 | 
            +
                  client.connect(configuration.host)
         | 
| 18 18 | 
             
                  sleep 0.0001 until client.is_connected?
         | 
| 19 | 
            -
                  client.auth(configuration | 
| 19 | 
            +
                  client.auth(configuration.password)
         | 
| 20 20 | 
             
                  roster = Jabber::Roster::Helper.new(client, false)
         | 
| 21 21 | 
             
                  roster.add_update_callback do |old_item, item|
         | 
| 22 22 | 
             
                    users.upsert(item['jid'], User.new(item['jid'], item)) if item
         | 
| @@ -25,13 +25,13 @@ module Del | |
| 25 25 | 
             
                  roster.wait_for_roster
         | 
| 26 26 | 
             
                  client.add_message_callback do |message|
         | 
| 27 27 | 
             
                    next if message.type == :error || message.body.nil?
         | 
| 28 | 
            -
                    user = configuration | 
| 28 | 
            +
                    user = configuration.users.find_by(message.from.strip)
         | 
| 29 29 | 
             
                    robot.receive(message.body, source: Source.new(user: user))
         | 
| 30 30 | 
             
                  end
         | 
| 31 31 | 
             
                  client.send(Jabber::Presence.new(:chat))
         | 
| 32 | 
            -
                  configuration | 
| 32 | 
            +
                  configuration.default_rooms.each do |room|
         | 
| 33 33 | 
             
                    Del.logger.debug("Joining #{room} as #{robot.name}")
         | 
| 34 | 
            -
                    room_jid = jid_for(room, configuration | 
| 34 | 
            +
                    room_jid = jid_for(room, configuration.muc_domain.dup, robot.name)
         | 
| 35 35 | 
             
                    stripped_jid = room_jid.strip.to_s
         | 
| 36 36 | 
             
                    next if @mucs[stripped_jid]
         | 
| 37 37 |  | 
| @@ -44,7 +44,7 @@ module Del | |
| 44 44 | 
             
                    end
         | 
| 45 45 | 
             
                    muc.join(room_jid)
         | 
| 46 46 | 
             
                  end
         | 
| 47 | 
            -
                  list_rooms(configuration | 
| 47 | 
            +
                  list_rooms(configuration.muc_domain).each do |room|
         | 
| 48 48 | 
             
                    rooms.upsert(room)
         | 
| 49 49 | 
             
                  end
         | 
| 50 50 | 
             
                end
         | 
| @@ -61,7 +61,7 @@ module Del | |
| 61 61 | 
             
                end
         | 
| 62 62 |  | 
| 63 63 | 
             
                def disconnect
         | 
| 64 | 
            -
                   | 
| 64 | 
            +
                  Del.logger.info("byte me!")
         | 
| 65 65 | 
             
                  client.close
         | 
| 66 66 | 
             
                rescue IOError, SystemCallError => error
         | 
| 67 67 | 
             
                  Del.logger.error(error)
         | 
| @@ -74,7 +74,7 @@ module Del | |
| 74 74 | 
             
                end
         | 
| 75 75 |  | 
| 76 76 | 
             
                def jid
         | 
| 77 | 
            -
                  @jid ||= jid_for(configuration | 
| 77 | 
            +
                  @jid ||= jid_for(configuration.jid, "chat.hipchat.com", "bot")
         | 
| 78 78 | 
             
                end
         | 
| 79 79 |  | 
| 80 80 | 
             
                def list_rooms(muc_domain)
         | 
    
        data/lib/del/default_router.rb
    CHANGED
    
    | @@ -1,9 +1,19 @@ | |
| 1 1 | 
             
            module Del
         | 
| 2 2 | 
             
              class DefaultRouter
         | 
| 3 | 
            -
                def  | 
| 4 | 
            -
                   | 
| 3 | 
            +
                def initialize(routes = [])
         | 
| 4 | 
            +
                  @routes = routes
         | 
| 5 | 
            +
                end
         | 
| 5 6 |  | 
| 6 | 
            -
             | 
| 7 | 
            +
                def register(pattern, &block)
         | 
| 8 | 
            +
                  @routes.push(pattern: pattern, command: block)
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def route(message)
         | 
| 12 | 
            +
                  @routes.each do |route|
         | 
| 13 | 
            +
                    if route[:pattern].match(message.text)
         | 
| 14 | 
            +
                      route[:command].call(message)
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 7 17 | 
             
                end
         | 
| 8 18 | 
             
              end
         | 
| 9 19 | 
             
            end
         | 
    
        data/lib/del/robot.rb
    CHANGED
    
    | @@ -6,15 +6,16 @@ module Del | |
| 6 6 |  | 
| 7 7 | 
             
                def initialize(configuration:)
         | 
| 8 8 | 
             
                  @connection = Connection.new(configuration: configuration)
         | 
| 9 | 
            -
                  @jid = configuration | 
| 10 | 
            -
                  @name = configuration | 
| 11 | 
            -
                  @router = configuration | 
| 12 | 
            -
                  @users = configuration | 
| 13 | 
            -
                  @rooms = configuration | 
| 9 | 
            +
                  @jid = configuration.jid
         | 
| 10 | 
            +
                  @name = configuration.name
         | 
| 11 | 
            +
                  @router = configuration.router
         | 
| 12 | 
            +
                  @users = configuration.users
         | 
| 13 | 
            +
                  @rooms = configuration.rooms
         | 
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 16 | 
             
                def get_funky!
         | 
| 17 17 | 
             
                  connection.connect(self)
         | 
| 18 | 
            +
                  Del.logger.info("It's fire! 🔥")
         | 
| 18 19 | 
             
                  sleep
         | 
| 19 20 | 
             
                rescue Interrupt
         | 
| 20 21 | 
             
                  connection.disconnect
         | 
    
        data/lib/del/version.rb
    CHANGED
    
    
    
        data/lib/del.rb
    CHANGED
    
    | @@ -6,6 +6,7 @@ require "xmpp4r/muc/helper/simplemucclient" | |
| 6 6 | 
             
            require "xmpp4r/roster/helper/roster"
         | 
| 7 7 |  | 
| 8 8 | 
             
            require "del/connection"
         | 
| 9 | 
            +
            require "del/configuration"
         | 
| 9 10 | 
             
            require "del/default_router"
         | 
| 10 11 | 
             
            require "del/message"
         | 
| 11 12 | 
             
            require "del/repository"
         | 
| @@ -15,11 +16,16 @@ require "del/user" | |
| 15 16 | 
             
            require "del/version"
         | 
| 16 17 |  | 
| 17 18 | 
             
            module Del
         | 
| 18 | 
            -
              def self.start(dotenv_file:)
         | 
| 19 | 
            +
              def self.start(dotenv_file:, startup_file:)
         | 
| 19 20 | 
             
                puts "Loading... #{dotenv_file}"
         | 
| 20 21 | 
             
                Dotenv.load(dotenv_file.to_s)
         | 
| 21 | 
            -
                 | 
| 22 | 
            -
             | 
| 22 | 
            +
                Del.configure do |config|
         | 
| 23 | 
            +
                  config.router.register(/.*/) do |message|
         | 
| 24 | 
            +
                    logger.debug(message.to_s)
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                load startup_file if startup_file && File.exist?(startup_file)
         | 
| 28 | 
            +
             | 
| 23 29 | 
             
                del = Robot.new(configuration: configuration)
         | 
| 24 30 | 
             
                del.get_funky!
         | 
| 25 31 | 
             
              end
         | 
| @@ -29,21 +35,10 @@ module Del | |
| 29 35 | 
             
              end
         | 
| 30 36 |  | 
| 31 37 | 
             
              def self.configuration
         | 
| 32 | 
            -
                @configuration ||=  | 
| 33 | 
            -
                  default_rooms: ENV.fetch("DEL_ROOMS", '').split(','),
         | 
| 34 | 
            -
                  host: ENV.fetch("DEL_HOST"),
         | 
| 35 | 
            -
                  jid: ENV.fetch("DEL_JID"),
         | 
| 36 | 
            -
                  logger: Logger.new(STDOUT),
         | 
| 37 | 
            -
                  muc_domain: ENV.fetch("DEL_MUC_DOMAIN"),
         | 
| 38 | 
            -
                  name: ENV.fetch("DEL_FULL_NAME"),
         | 
| 39 | 
            -
                  password: ENV.fetch("DEL_PASSWORD"),
         | 
| 40 | 
            -
                  rooms: Repository.new,
         | 
| 41 | 
            -
                  router: DefaultRouter.new,
         | 
| 42 | 
            -
                  users: Repository.new,
         | 
| 43 | 
            -
                }
         | 
| 38 | 
            +
                @configuration ||= Configuration.new
         | 
| 44 39 | 
             
              end
         | 
| 45 40 |  | 
| 46 41 | 
             
              def self.logger
         | 
| 47 | 
            -
                @logger ||= configuration | 
| 42 | 
            +
                @logger ||= configuration.logger
         | 
| 48 43 | 
             
              end
         | 
| 49 44 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: del
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - mo
         | 
| @@ -100,8 +100,10 @@ files: | |
| 100 100 | 
             
            - del.gemspec
         | 
| 101 101 | 
             
            - exe/del
         | 
| 102 102 | 
             
            - lib/del.rb
         | 
| 103 | 
            +
            - lib/del/configuration.rb
         | 
| 103 104 | 
             
            - lib/del/connection.rb
         | 
| 104 105 | 
             
            - lib/del/default_router.rb
         | 
| 106 | 
            +
            - lib/del/examples/routes.rb
         | 
| 105 107 | 
             
            - lib/del/message.rb
         | 
| 106 108 | 
             
            - lib/del/repository.rb
         | 
| 107 109 | 
             
            - lib/del/robot.rb
         |