hipchat 0.4.1 → 0.5.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.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Mojo Tech
1
+ Copyright (c) 2012 Atlassian
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -13,6 +13,9 @@ client['my room'].send('username', 'I quit!', :notify => true)
13
13
  # Color it red. or "yellow", "green", "purple", "random" (default "yellow")
14
14
  client['my room'].send('username', 'Build failed!', :color => 'red')
15
15
 
16
+ # Have your message rendered as text in HipChat (see https://www.hipchat.com/docs/api/method/rooms/message)
17
+ client['my room'].send('username', '@coworker Build faild!', :message_format => 'text')
18
+
16
19
  h2. Capistrano
17
20
 
18
21
  bc.. require 'hipchat/capistrano'
@@ -20,6 +23,9 @@ bc.. require 'hipchat/capistrano'
20
23
  set :hipchat_token, "<your token>"
21
24
  set :hipchat_room_name, "Your room"
22
25
  set :hipchat_announce, false # notify users
26
+ set :hipchat_color, 'green' #finished deployment message color
27
+ set :hipchat_failed_color, 'red' #cancelled deployment message color
28
+ set :hipchat_message_format, 'text' # Sets the deployment message format, see https://www.hipchat.com/docs/api/method/rooms/message
23
29
 
24
30
  h3. Who did it?
25
31
 
@@ -34,7 +40,7 @@ h2. Rails 3 Rake Task
34
40
 
35
41
  Send a message using a rake task:
36
42
 
37
- bc.. rake hipchat:send["hello world"]
43
+ bc. rake hipchat:send["hello world"]
38
44
 
39
45
  Options like the room, API token, user name and notification flag can be set in YAML.
40
46
 
@@ -52,15 +58,14 @@ Use a "deploy hook":http://bit.ly/qnbIkP to send messages from Engine Yard's Clo
52
58
  RAILS_ROOT/deploy/after_restart.rb:
53
59
 
54
60
  bc.. on_app_master do
55
- message = "Deploying revision #{@configuration[:revision][0...6]}"
56
- message += " to #{@configuration[:environment]}"
61
+ message = "Deploying revision #{revision[0...6]} to #{node[:environment][:name]}"
57
62
  message += " (with migrations)" if migrate?
58
63
  message += "."
59
64
 
60
65
  # Send a message via rake task assuming a hipchat.yml in your config like above
61
- run "cd #{release_path} && rake hipchat:send MESSAGE='#{message}'"
66
+ run "cd #{release_path} && bundle exec rake hipchat:send MESSAGE='#{message}'"
62
67
  end
63
68
 
64
69
  h2. Copyright
65
70
 
66
- Copyright (c) 2010 Mojo Tech. See LICENSE for details.
71
+ Copyright (c) 2012 Atlassian. See LICENSE for details.
data/Rakefile CHANGED
@@ -7,9 +7,9 @@ begin
7
7
  gem.name = "hipchat"
8
8
  gem.summary = %Q{Ruby library to interact with HipChat}
9
9
  gem.description = %Q{Ruby library to interact with HipChat}
10
- gem.email = "gems@mojotech.com"
11
- gem.homepage = "http://github.com/mojotech/hipchat"
12
- gem.authors = ["MojoTech"]
10
+ gem.email = "support@hipchat.com"
11
+ gem.homepage = "https://github.com/hipchat/hipchat-rb"
12
+ gem.authors = ["HipChat/Atlassian"]
13
13
  gem.add_dependency "httparty"
14
14
  gem.add_development_dependency "rspec", "~> 2.0"
15
15
  gem.add_development_dependency "rr", "~> 1.0"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
@@ -5,13 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "hipchat"
8
- s.version = "0.4.1"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["MojoTech"]
12
- s.date = "2011-10-19"
11
+ s.authors = ["HipChat/Atlassian"]
12
+ s.date = "2012-10-12"
13
13
  s.description = "Ruby library to interact with HipChat"
14
- s.email = "gems@mojotech.com"
14
+ s.email = "support@hipchat.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.textile"
@@ -32,9 +32,9 @@ Gem::Specification.new do |s|
32
32
  "spec/spec.opts",
33
33
  "spec/spec_helper.rb"
34
34
  ]
35
- s.homepage = "http://github.com/mojotech/hipchat"
35
+ s.homepage = "https://github.com/hipchat/hipchat-rb"
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = "1.8.10"
37
+ s.rubygems_version = "1.8.24"
38
38
  s.summary = "Ruby library to interact with HipChat"
39
39
 
40
40
  if s.respond_to? :specification_version then
@@ -47,7 +47,7 @@ module HipChat
47
47
  # send 'nickname', 'some message'
48
48
  #
49
49
  # # Notify users and color the message red
50
- # send 'nickname', 'some message', :notify => true, :color => 'red'
50
+ # send 'nickname', 'some message', :notify => true, :color => 'red'
51
51
  #
52
52
  # # Notify users (deprecated)
53
53
  # send 'nickname', 'some message', true
@@ -58,7 +58,7 @@ module HipChat
58
58
  # (default "yellow")
59
59
  # +notify+:: true or false
60
60
  # (default false)
61
- def send(from, message, options_or_notify = false)
61
+ def send(from, message, options_or_notify = {})
62
62
  options = if options_or_notify == true or options_or_notify == false
63
63
  warn "DEPRECATED: Specify notify flag as an option (e.g., :notify => true)"
64
64
  { :notify => options_or_notify }
@@ -71,11 +71,12 @@ module HipChat
71
71
  response = self.class.post('/message',
72
72
  :query => { :auth_token => @token },
73
73
  :body => {
74
- :room_id => room_id,
75
- :from => from,
76
- :message => message,
77
- :color => options[:color],
78
- :notify => options[:notify] ? 1 : 0
74
+ :room_id => room_id,
75
+ :from => from,
76
+ :message => message,
77
+ :message_format => options[:message_format] || 'html',
78
+ :color => options[:color],
79
+ :notify => options[:notify] ? 1 : 0
79
80
  }
80
81
  )
81
82
 
@@ -20,22 +20,30 @@ Capistrano::Configuration.instance(:must_exist).load do
20
20
  task :notify_deploy_started do
21
21
  if hipchat_send_notification
22
22
  on_rollback do
23
+ send_options.merge!(:color => failed_message_color)
23
24
  hipchat_client[hipchat_room_name].
24
- send(deploy_user, "#{human} cancelled deployment of #{deployment_name} to #{env}.", hipchat_announce)
25
+ send(deploy_user, "#{human} cancelled deployment of #{deployment_name} to #{env}.", send_options)
25
26
  end
26
27
 
27
28
  message = "#{human} is deploying #{deployment_name} to #{env}"
28
29
  message << " (with migrations)" if hipchat_with_migrations
29
30
  message << "."
30
31
 
31
- hipchat_client[hipchat_room_name].
32
- send(deploy_user, message, hipchat_announce)
32
+ hipchat_client[hipchat_room_name].send(deploy_user, message, send_options)
33
33
  end
34
34
  end
35
35
 
36
36
  task :notify_deploy_finished do
37
37
  hipchat_client[hipchat_room_name].
38
- send(deploy_user, "#{human} finished deploying #{deployment_name} to #{env}.", hipchat_announce)
38
+ send(deploy_user, "#{human} finished deploying #{deployment_name} to #{env}.", send_options)
39
+ end
40
+
41
+ def send_options
42
+ return @send_options if defined?(@send_options)
43
+ @send_options = message_color ? {:color => message_color} : {}
44
+ @send_options = message_format ? {:message_format => message_format } : {}
45
+ @send_options.merge!(:notify => message_notification)
46
+ @send_options
39
47
  end
40
48
 
41
49
  def deployment_name
@@ -45,7 +53,23 @@ Capistrano::Configuration.instance(:must_exist).load do
45
53
  application
46
54
  end
47
55
  end
48
-
56
+
57
+ def message_color
58
+ fetch(:hipchat_color, nil)
59
+ end
60
+
61
+ def failed_message_color
62
+ fetch(:hipchat_failed_color, "red")
63
+ end
64
+
65
+ def message_notification
66
+ fetch(:hipchat_announce, false)
67
+ end
68
+
69
+ def message_format
70
+ fetch(:hipchat_message_format, "html")
71
+ end
72
+
49
73
  def deploy_user
50
74
  fetch(:hipchat_deploy_user, "Deploy")
51
75
  end
@@ -25,7 +25,7 @@ module HipChat
25
25
  msg = "Failure on #{node.name}: #{run_status.formatted_exception}"
26
26
 
27
27
  client = HipChat::Client.new(@api_token)
28
- client[@room_name].send('Chef', msg, @notify_users)
28
+ client[@room_name].send('Chef', msg, :notify => @notify_users)
29
29
  end
30
30
  end
31
31
  end
@@ -7,16 +7,23 @@ namespace :hipchat do
7
7
  config_file = Rails.root.join 'config', 'hipchat.yml'
8
8
 
9
9
  options = {
10
- :message => ENV['MESSAGE'],
11
- :user => ENV['USER'],
12
- :notify => ENV['NOTIFY'],
13
- :room => ENV['ROOM'],
14
- :token => ENV['TOKEN']
10
+ :message => ENV['MESSAGE'],
11
+ :message_format => ENV['MESSAGE_FORMAT'],
12
+ :user => ENV['HIPCHAT_USER'],
13
+ :notify => ENV['NOTIFY'],
14
+ :room => ENV['ROOM'],
15
+ :token => ENV['TOKEN']
16
+ }.reject { |k, v| v.blank? }
17
+
18
+ system_options = {
19
+ :user => ENV['USER']
15
20
  }.reject { |k, v| v.blank? }
16
21
 
17
22
  if File.exists? config_file
18
23
  options.reverse_merge! YAML.load_file(config_file).symbolize_keys
19
24
  end
25
+
26
+ options.reverse_merge! system_options
20
27
 
21
28
  options[:notify] = options[:notify].to_s != 'false'
22
29
 
@@ -27,6 +34,6 @@ namespace :hipchat do
27
34
 
28
35
  client = HipChat::Client.new(options[:token])
29
36
 
30
- client[options[:room]].send(options[:user], options[:message], options[:notify])
37
+ client[options[:room]].send(options[:user], options[:message], :notify => options[:notify])
31
38
  end
32
39
  end
@@ -4,7 +4,7 @@ describe HipChat do
4
4
  subject { HipChat::Client.new("blah") }
5
5
 
6
6
  let(:room) { subject["Hipchat"] }
7
-
7
+
8
8
  # Helper for mocking room message post requests
9
9
  def mock_successful_send(from, message, options={})
10
10
  options = {:color => 'yellow', :notify => 0}.merge(options)
@@ -16,40 +16,28 @@ describe HipChat do
16
16
  :color => options[:color],
17
17
  :notify => options[:notify]}) {
18
18
  OpenStruct.new(:code => 200)
19
- }
19
+ }
20
20
  end
21
21
 
22
22
  describe "sends a message to a room" do
23
23
  it "successfully without custom options" do
24
24
  mock_successful_send 'Dude', 'Hello world'
25
-
26
- room.send("Dude", "Hello world").should be_true
27
- end
28
-
29
- it "successfully with notifications on as boolean" do
30
- mock_successful_send 'Dude', 'Hello world', :notify => 1
31
25
 
32
- room.send("Dude", "Hello world", true).should be_true
26
+ room.send("Dude", "Hello world").should be_true
33
27
  end
34
-
35
- it "successfully with notifications off as boolean" do
36
- mock_successful_send 'Dude', 'Hello world', :notify => 0
37
28
 
38
- room.send("Dude", "Hello world", false).should be_true
39
- end
40
-
41
29
  it "successfully with notifications on as option" do
42
30
  mock_successful_send 'Dude', 'Hello world', :notify => 1
43
31
 
44
32
  room.send("Dude", "Hello world", :notify => true).should be_true
45
33
  end
46
-
34
+
47
35
  it "successfully with custom color" do
48
36
  mock_successful_send 'Dude', 'Hello world', :color => 'red'
49
37
 
50
38
  room.send("Dude", "Hello world", :color => 'red').should be_true
51
39
  end
52
-
40
+
53
41
  it "but fails when the room doesn't exist" do
54
42
  mock(HipChat::Room).post(anything, anything) {
55
43
  OpenStruct.new(:code => 404)
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hipchat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - MojoTech
8
+ - HipChat/Atlassian
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-19 00:00:00.000000000Z
12
+ date: 2012-10-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &70228089062780 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70228089062780
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &70228089062160 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '2.0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70228089062160
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rr
38
- requirement: &70228089061480 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,9 +53,14 @@ dependencies:
43
53
  version: '1.0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70228089061480
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
47
62
  description: Ruby library to interact with HipChat
48
- email: gems@mojotech.com
63
+ email: support@hipchat.com
49
64
  executables: []
50
65
  extensions: []
51
66
  extra_rdoc_files:
@@ -66,7 +81,7 @@ files:
66
81
  - spec/hipchat_spec.rb
67
82
  - spec/spec.opts
68
83
  - spec/spec_helper.rb
69
- homepage: http://github.com/mojotech/hipchat
84
+ homepage: https://github.com/hipchat/hipchat-rb
70
85
  licenses: []
71
86
  post_install_message:
72
87
  rdoc_options: []
@@ -86,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
101
  version: '0'
87
102
  requirements: []
88
103
  rubyforge_project:
89
- rubygems_version: 1.8.10
104
+ rubygems_version: 1.8.24
90
105
  signing_key:
91
106
  specification_version: 3
92
107
  summary: Ruby library to interact with HipChat