lita-hipchat 2.1.3 → 3.0.0
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/.travis.yml +4 -1
- data/README.md +5 -1
- data/lib/lita-hipchat.rb +6 -0
- data/lib/lita/adapters/hipchat.rb +24 -7
- data/lib/lita/adapters/hipchat/connector.rb +1 -0
- data/lita-hipchat.gemspec +2 -2
- data/locales/en.yml +9 -0
- data/spec/lita/adapters/hipchat/connector_spec.rb +1 -0
- data/spec/lita/adapters/hipchat_spec.rb +54 -16
- metadata +6 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8ad7f231798e72ad24098c645a8fb7eeeba583f3
         | 
| 4 | 
            +
              data.tar.gz: c39205b24b33b1e0274fab0575d97a873ecebffa
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d461fa2c0b10cfeccea84474ba310f11130ef29b0578de1861af6290ffed2be679a6476c3bf09b214638cc107d28e24f99766ff8d4487d3c165dcbd1e4a47753
         | 
| 7 | 
            +
              data.tar.gz: b1cf4ae4f3d3e5a92c043dc149c72193973fb04e792db88889ee5c6b867fcf013a7ead3dd11e1948069c74bd8160d4661e236b18605eaad022a2f5a4edcf5fd6
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -27,7 +27,7 @@ Values for all of the following attributes can be found on the "XMPP/Jabber info | |
| 27 27 |  | 
| 28 28 | 
             
            * `server` (String) - The HipChat Server address. Override this with the full domain of your server if using a private HipChat Server installation. Default: `"chat.hipchat.com"`
         | 
| 29 29 | 
             
            * `debug` (Boolean) - If `true`, turns on the underlying Jabber library's (xmpp4r) logger, which is fairly verbose. Default: `false`.
         | 
| 30 | 
            -
            * `rooms` (Symbol, Array<String>) - An array of room JIDs that Lita should join upon connection. Can also be the symbol `:all`, which will cause Lita to discover and join all rooms. Default: `nil` (no rooms).
         | 
| 30 | 
            +
            * **DEPRECATED** - `rooms` (Symbol, Array<String>) - An array of room JIDs that Lita should join upon connection. Can also be the symbol `:all`, which will cause Lita to discover and join all rooms. Default: `nil` (no rooms).
         | 
| 31 31 | 
             
            * `muc_domain` (String) - The XMPP Multi-User Chat domain to use. Default: `"conf.hipchat.com"`.
         | 
| 32 32 | 
             
            * `ignore_unknown_users` (Boolean) - Messages generated through HipChat's API which don't come from a real user account will be ignored by the robot. With the default setting of false, Lita will emit a warning but the message will be dispatched to any registered handlers as usual. Default: `false`.
         | 
| 33 33 |  | 
| @@ -55,6 +55,10 @@ end | |
| 55 55 | 
             
            `:joined` - When the robot joins a room. Payload: `:room`: The String room ID that was joined.
         | 
| 56 56 | 
             
            `:parted` - When the robot parts from a room. Payload: `:room`: The String room ID that was parted from.
         | 
| 57 57 |  | 
| 58 | 
            +
            ## Managing rooms
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            To make Lita join or part from rooms, use the [built-in `join` and `part` commands](http://docs.lita.io/getting-started/usage/#managing-rooms). For backwards compatibility, the `rooms` configuration attribute will be supported until lita-hipchat 4.0, but you should remove it and begin using the new command instead. If the configuration attribute is set, lita-hipchat will honor its value and join those rooms instead of the ones persisted to Redis from using the new commands.
         | 
| 61 | 
            +
             | 
| 58 62 | 
             
            ## License
         | 
| 59 63 |  | 
| 60 64 | 
             
            [MIT](http://opensource.org/licenses/MIT)
         | 
    
        data/lib/lita-hipchat.rb
    CHANGED
    
    
| @@ -41,7 +41,7 @@ module Lita | |
| 41 41 | 
             
                  def run
         | 
| 42 42 | 
             
                    connector.connect
         | 
| 43 43 | 
             
                    robot.trigger(:connected)
         | 
| 44 | 
            -
                     | 
| 44 | 
            +
                    join_persisted_rooms
         | 
| 45 45 | 
             
                    sleep
         | 
| 46 46 | 
             
                  rescue Interrupt
         | 
| 47 47 | 
             
                    shut_down
         | 
| @@ -67,18 +67,35 @@ module Lita | |
| 67 67 |  | 
| 68 68 | 
             
                  private
         | 
| 69 69 |  | 
| 70 | 
            -
                  def  | 
| 71 | 
            -
                     | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
                     | 
| 70 | 
            +
                  def join_all_rooms?
         | 
| 71 | 
            +
                    config.rooms == :all
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                  def join_persisted_rooms
         | 
| 75 | 
            +
                    rooms.each { |room| join(room) }
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 |  | 
| 78 78 | 
             
                  def muc_domain
         | 
| 79 79 | 
             
                    config.muc_domain.dup
         | 
| 80 80 | 
             
                  end
         | 
| 81 81 |  | 
| 82 | 
            +
                  def rooms_configured?
         | 
| 83 | 
            +
                    config.rooms.respond_to?(:empty?) && !config.rooms.empty?
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  def rooms
         | 
| 87 | 
            +
                    if join_all_rooms? || rooms_configured?
         | 
| 88 | 
            +
                      log.warn(t("config.rooms.deprecated"))
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                      if config.rooms == :all
         | 
| 91 | 
            +
                        connector.list_rooms(muc_domain)
         | 
| 92 | 
            +
                      else
         | 
| 93 | 
            +
                        Array(config.rooms)
         | 
| 94 | 
            +
                      end
         | 
| 95 | 
            +
                    else
         | 
| 96 | 
            +
                      robot.persisted_rooms
         | 
| 97 | 
            +
                    end
         | 
| 98 | 
            +
                  end
         | 
| 82 99 | 
             
                end
         | 
| 83 100 |  | 
| 84 101 | 
             
                Lita.register_adapter(:hipchat, HipChat)
         | 
    
        data/lita-hipchat.gemspec
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |spec|
         | 
| 2 2 | 
             
              spec.name          = "lita-hipchat"
         | 
| 3 | 
            -
              spec.version       = " | 
| 3 | 
            +
              spec.version       = "3.0.0"
         | 
| 4 4 | 
             
              spec.authors       = ["Jimmy Cuadra"]
         | 
| 5 5 | 
             
              spec.email         = ["jimmy@jimmycuadra.com"]
         | 
| 6 6 | 
             
              spec.description   = %q{A HipChat adapter for Lita.}
         | 
| @@ -14,7 +14,7 @@ Gem::Specification.new do |spec| | |
| 14 14 | 
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 15 15 | 
             
              spec.require_paths = ["lib"]
         | 
| 16 16 |  | 
| 17 | 
            -
              spec.add_runtime_dependency "lita", ">= 4. | 
| 17 | 
            +
              spec.add_runtime_dependency "lita", ">= 4.4.3"
         | 
| 18 18 | 
             
              spec.add_runtime_dependency "xmpp4r", ">= 0.5.6"
         | 
| 19 19 |  | 
| 20 20 | 
             
              spec.add_development_dependency "bundler", "~> 1.3"
         | 
    
        data/locales/en.yml
    ADDED
    
    
| @@ -7,6 +7,8 @@ describe Lita::Adapters::HipChat, lita: true do | |
| 7 7 | 
             
                registry.configure do |config|
         | 
| 8 8 | 
             
                  config.adapters.hipchat.jid = "jid"
         | 
| 9 9 | 
             
                  config.adapters.hipchat.password = "secret"
         | 
| 10 | 
            +
                  config.adapters.hipchat.muc_domain = domain
         | 
| 11 | 
            +
                  config.adapters.hipchat.rooms = rooms
         | 
| 10 12 | 
             
                end
         | 
| 11 13 |  | 
| 12 14 | 
             
                allow(described_class::Connector).to receive(:new).and_return(connector)
         | 
| @@ -17,6 +19,7 @@ describe Lita::Adapters::HipChat, lita: true do | |
| 17 19 | 
             
              let(:robot) { Lita::Robot.new(registry) }
         | 
| 18 20 | 
             
              let(:connector) { instance_double("Lita::Adapters::HipChat::Connector") }
         | 
| 19 21 | 
             
              let(:domain) { "conf.hipchat.com" }
         | 
| 22 | 
            +
              let(:rooms) { %w(room_1, room_2) }
         | 
| 20 23 |  | 
| 21 24 | 
             
              it "registers with Lita" do
         | 
| 22 25 | 
             
                expect(Lita.adapters[:hipchat]).to eql(described_class)
         | 
| @@ -51,8 +54,6 @@ describe Lita::Adapters::HipChat, lita: true do | |
| 51 54 | 
             
              end
         | 
| 52 55 |  | 
| 53 56 | 
             
              describe "#run" do
         | 
| 54 | 
            -
                let(:rooms) { ["room_1_id", "room_2_id"] }
         | 
| 55 | 
            -
             | 
| 56 57 | 
             
                before do
         | 
| 57 58 | 
             
                  allow(subject.connector).to receive(:connect)
         | 
| 58 59 | 
             
                  allow(robot).to receive(:trigger)
         | 
| @@ -68,30 +69,67 @@ describe Lita::Adapters::HipChat, lita: true do | |
| 68 69 |  | 
| 69 70 | 
             
                context "with a custom domain" do
         | 
| 70 71 | 
             
                  let(:domain) { "foo.bar.com" }
         | 
| 72 | 
            +
             | 
| 71 73 | 
             
                  it "joins rooms with a custom muc_domain" do
         | 
| 72 | 
            -
                    registry.config.adapters.hipchat.muc_domain = domain
         | 
| 73 | 
            -
                    allow(subject).to receive(:rooms).and_return(rooms)
         | 
| 74 74 | 
             
                    expect(subject.connector).to receive(:join).with(domain, anything)
         | 
| 75 | 
            +
             | 
| 75 76 | 
             
                    subject.run
         | 
| 76 77 | 
             
                  end
         | 
| 77 78 | 
             
                end
         | 
| 78 79 |  | 
| 79 | 
            -
                 | 
| 80 | 
            -
                   | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 80 | 
            +
                context "when config.rooms is :all" do
         | 
| 81 | 
            +
                  before do
         | 
| 82 | 
            +
                    allow(subject.connector).to receive(:list_rooms).and_return(%w(room_1 room_2))
         | 
| 83 | 
            +
                    allow(subject.connector).to receive(:join)
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  let(:rooms) { :all }
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  it "logs a deprecation warning" do
         | 
| 89 | 
            +
                    expect(Lita.logger).to receive(:warn) do |msg|
         | 
| 90 | 
            +
                      expect(msg).to include("config.rooms is deprecated")
         | 
| 91 | 
            +
                    end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                    subject.run
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  it "joins all rooms" do
         | 
| 97 | 
            +
                    %w(room_1 room_2).each do |room|
         | 
| 98 | 
            +
                      expect(subject.connector).to receive(:join).with(domain, room)
         | 
| 99 | 
            +
                    end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    subject.run
         | 
| 102 | 
            +
                  end
         | 
| 103 | 
            +
                end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                context "when config.rooms contains individual room IDs" do
         | 
| 106 | 
            +
                  let(:rooms) { ["room_1_only"] }
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  it "logs a deprecation warning" do
         | 
| 109 | 
            +
                    expect(Lita.logger).to receive(:warn) do |msg|
         | 
| 110 | 
            +
                      expect(msg).to include("config.rooms is deprecated")
         | 
| 111 | 
            +
                    end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                    subject.run
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  it "joins the specified rooms" do
         | 
| 117 | 
            +
                    expect(subject.connector).to receive(:join).with(domain, "room_1_only")
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                    subject.run
         | 
| 84 120 | 
             
                  end
         | 
| 85 | 
            -
                  subject.run
         | 
| 86 121 | 
             
                end
         | 
| 87 122 |  | 
| 88 | 
            -
                 | 
| 89 | 
            -
                   | 
| 90 | 
            -
             | 
| 91 | 
            -
                  rooms | 
| 92 | 
            -
             | 
| 123 | 
            +
                context "when config.rooms is empty" do
         | 
| 124 | 
            +
                  before { allow(robot).to receive(:persisted_rooms).and_return(%w(persisted_room_1)) }
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  let(:rooms) { [] }
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                  it "joins rooms persisted in robot.persisted_rooms" do
         | 
| 129 | 
            +
                    expect(subject.connector).to receive(:join).with(domain, "persisted_room_1")
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                    subject.run
         | 
| 93 132 | 
             
                  end
         | 
| 94 | 
            -
                  subject.run
         | 
| 95 133 | 
             
                end
         | 
| 96 134 |  | 
| 97 135 | 
             
                it "sleeps the main thread" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: lita-hipchat
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 3.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jimmy Cuadra
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-06-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: lita
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 19 | 
            +
                    version: 4.4.3
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 4.4.3
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: xmpp4r
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -126,6 +126,7 @@ files: | |
| 126 126 | 
             
            - lib/lita/adapters/hipchat/callback.rb
         | 
| 127 127 | 
             
            - lib/lita/adapters/hipchat/connector.rb
         | 
| 128 128 | 
             
            - lita-hipchat.gemspec
         | 
| 129 | 
            +
            - locales/en.yml
         | 
| 129 130 | 
             
            - spec/lita/adapters/hipchat/callback_spec.rb
         | 
| 130 131 | 
             
            - spec/lita/adapters/hipchat/connector_spec.rb
         | 
| 131 132 | 
             
            - spec/lita/adapters/hipchat_spec.rb
         | 
| @@ -160,3 +161,4 @@ test_files: | |
| 160 161 | 
             
            - spec/lita/adapters/hipchat/connector_spec.rb
         | 
| 161 162 | 
             
            - spec/lita/adapters/hipchat_spec.rb
         | 
| 162 163 | 
             
            - spec/spec_helper.rb
         | 
| 164 | 
            +
            has_rdoc: 
         |