hipchat 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -11,7 +11,8 @@ begin
11
11
  gem.homepage = "http://github.com/david/hipchat"
12
12
  gem.authors = ["david"]
13
13
  gem.add_dependency "httparty"
14
- gem.add_development_dependency "rspec", ">= 1.2.9"
14
+ gem.add_development_dependency "rspec", "~> 2.0"
15
+ gem.add_development_dependency "rr", "~> 1.0"
15
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
17
  end
17
18
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hipchat}
8
- s.version = "0.2.2"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["david"]
12
- s.date = %q{2011-06-11}
12
+ s.date = %q{2011-07-06}
13
13
  s.description = %q{Ruby library to interact with HipChat}
14
14
  s.email = %q{dgleal@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -41,14 +41,17 @@ Gem::Specification.new do |s|
41
41
 
42
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
43
  s.add_runtime_dependency(%q<httparty>, [">= 0"])
44
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
44
+ s.add_development_dependency(%q<rspec>, ["~> 2.0"])
45
+ s.add_development_dependency(%q<rr>, ["~> 1.0"])
45
46
  else
46
47
  s.add_dependency(%q<httparty>, [">= 0"])
47
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
48
+ s.add_dependency(%q<rspec>, ["~> 2.0"])
49
+ s.add_dependency(%q<rr>, ["~> 1.0"])
48
50
  end
49
51
  else
50
52
  s.add_dependency(%q<httparty>, [">= 0"])
51
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
53
+ s.add_dependency(%q<rspec>, ["~> 2.0"])
54
+ s.add_dependency(%q<rr>, ["~> 1.0"])
52
55
  end
53
56
  end
54
57
 
@@ -2,10 +2,14 @@ require 'httparty'
2
2
  require 'ostruct'
3
3
 
4
4
  module HipChat
5
+ class UnknownRoom < StandardError; end
6
+ class Unauthorized < StandardError; end
7
+ class UnknownResponseCode < StandardError; end
8
+
5
9
  class Client
6
10
  include HTTParty
7
11
 
8
- base_uri 'http://api.hipchat.com/v1/rooms'
12
+ base_uri 'https://api.hipchat.com/v1/rooms'
9
13
  format :json
10
14
 
11
15
  def initialize(token)
@@ -18,15 +22,14 @@ module HipChat
18
22
  end
19
23
 
20
24
  def [](name)
21
- rooms.find { |r| r.name == name }
25
+ Room.new(@token, :room_id => name)
22
26
  end
23
27
  end
24
28
 
25
29
  class Room < OpenStruct
26
30
  include HTTParty
27
31
 
28
- base_uri 'http://api.hipchat.com/v1/rooms'
29
- format :json
32
+ base_uri 'https://api.hipchat.com/v1/rooms'
30
33
 
31
34
  def initialize(token, params)
32
35
  @token = token
@@ -35,14 +38,21 @@ module HipChat
35
38
  end
36
39
 
37
40
  def send(from, message, notify = false)
38
- self.class.post('/message',
39
- :query => { :auth_token => @token },
40
- :body => {
41
- :room_id => room_id,
42
- :from => from,
43
- :message => message,
44
- :notify => notify ? 1 : 0
45
- })
41
+ response = self.class.post('/message',
42
+ :query => { :auth_token => @token },
43
+ :body => {:room_id => room_id,
44
+ :from => from,
45
+ :message => message,
46
+ :notify => notify ? 1 : 0})
47
+
48
+ case response.code
49
+ when 200; # weee
50
+ when 404; raise UnknownRoom, "Unknown room: `#{room_id}'"
51
+ when 401; raise Unauthorized, "Access denied to room `#{room_id}'"
52
+ else raise UnknownResponseCode, "Unexpected #{response.code} for " <<
53
+ "room `#{room_id}'"
54
+
55
+ end
46
56
  end
47
57
  end
48
58
  end
@@ -1,7 +1,47 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "Hipchat" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
3
+ describe HipChat do
4
+ subject { HipChat::Client.new("blah") }
5
+
6
+ let(:room) { subject["Hipchat"] }
7
+
8
+ describe "sends a message to a room" do
9
+ it "successfully" do
10
+ mock(HipChat::Room).post("/message",
11
+ :query => {:auth_token => "blah"},
12
+ :body => {:room_id => "Hipchat",
13
+ :from => "Dude",
14
+ :message => "Hello world",
15
+ :notify => 0}) {
16
+ OpenStruct.new(:code => 200)
17
+ }
18
+
19
+ room.send "Dude", "Hello world"
20
+ end
21
+
22
+ it "but fails when the room doesn't exist" do
23
+ mock(HipChat::Room).post(anything, anything) {
24
+ OpenStruct.new(:code => 404)
25
+ }
26
+
27
+ lambda { room.send "", "" }.should raise_error(HipChat::UnknownRoom)
28
+ end
29
+
30
+ it "but fails when we're not allowed to do so" do
31
+ mock(HipChat::Room).post(anything, anything) {
32
+ OpenStruct.new(:code => 401)
33
+ }
34
+
35
+ lambda { room.send "", "" }.should raise_error(HipChat::Unauthorized)
36
+ end
37
+
38
+ it "but fails if we get an unknown response code" do
39
+ mock(HipChat::Room).post(anything, anything) {
40
+ OpenStruct.new(:code => 403)
41
+ }
42
+
43
+ lambda { room.send "", "" }.
44
+ should raise_error(HipChat::UnknownResponseCode)
45
+ end
6
46
  end
7
47
  end
@@ -1,9 +1,9 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'hipchat'
4
- require 'spec'
5
- require 'spec/autorun'
4
+ require 'rspec'
5
+ require 'rspec/autorun'
6
6
 
7
- Spec::Runner.configure do |config|
8
-
7
+ RSpec.configure do |config|
8
+ config.mock_with :rr
9
9
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 2
10
- version: 0.2.2
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - david
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-11 00:00:00 +01:00
18
+ date: 2011-07-06 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -38,16 +38,30 @@ dependencies:
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ">="
41
+ - - ~>
42
42
  - !ruby/object:Gem::Version
43
- hash: 13
43
+ hash: 3
44
44
  segments:
45
- - 1
46
45
  - 2
47
- - 9
48
- version: 1.2.9
46
+ - 0
47
+ version: "2.0"
49
48
  type: :development
50
49
  version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rr
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ hash: 15
59
+ segments:
60
+ - 1
61
+ - 0
62
+ version: "1.0"
63
+ type: :development
64
+ version_requirements: *id003
51
65
  description: Ruby library to interact with HipChat
52
66
  email: dgleal@gmail.com
53
67
  executables: []