tinder 1.3.1 → 1.4.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.
@@ -0,0 +1,18 @@
1
+ {"rooms": [
2
+ {
3
+ "name": "Room 1",
4
+ "created_at": "2007/03/16 18:03:21 +0000",
5
+ "updated_at": "2007/03/16 18:03:21 +0000",
6
+ "topic": "Testing",
7
+ "id": 80749,
8
+ "membership_limit": 4
9
+ },
10
+ {
11
+ "name": "Room 2",
12
+ "created_at": "2007/03/16 18:04:54 +0000",
13
+ "updated_at": "2007/03/16 18:04:54 +0000",
14
+ "topic": "test",
15
+ "id": 80751,
16
+ "membership_limit": 4
17
+ }]
18
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "room": {
3
+ "full": false,
4
+ "name": "Room 1",
5
+ "created_at": "2007/03/16 18:03:21 +0000",
6
+ "updated_at": "2007/03/16 18:03:21 +0000",
7
+ "users": [{
8
+ "type": "Member",
9
+ "created_at": "2006/12/07 21:20:39 +0000",
10
+ "email_address": "jane@example.com",
11
+ "admin": true,
12
+ "id": 1,
13
+ "name": "Jane Doe"
14
+ }],
15
+ "topic": "Testing",
16
+ "active_token_value": "90cf7",
17
+ "id": 80749,
18
+ "open_to_guests": true,
19
+ "membership_limit": 4
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "room": {
3
+ "full": false,
4
+ "name": "Room 2",
5
+ "created_at": "2007/03/16 18:03:21 +0000",
6
+ "updated_at": "2007/03/16 18:03:21 +0000",
7
+ "users": [{
8
+ "type": "Member",
9
+ "created_at": "2006/12/07 21:20:39 +0000",
10
+ "email_address": "john@example.com",
11
+ "admin": true,
12
+ "id": 2,
13
+ "name": "John Doe"
14
+ }],
15
+ "topic": "Testing",
16
+ "active_token_value": "90cf7",
17
+ "id": 80751,
18
+ "open_to_guests": true,
19
+ "membership_limit": 4
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "room": {
3
+ "full": false,
4
+ "name": "Room 1",
5
+ "created_at": "2007/03/16 18:03:21 +0000",
6
+ "updated_at": "2007/03/16 18:03:21 +0000",
7
+ "users": [{
8
+ "type": "Member",
9
+ "created_at": "2006/12/07 21:20:39 +0000",
10
+ "email_address": "brandon@opensoul.org",
11
+ "admin": true,
12
+ "id": 129553,
13
+ "name": "Brandon Keepers"
14
+ }],
15
+ "topic": "Testing",
16
+ "active_token_value": "90cf7",
17
+ "id": 80749,
18
+ "open_to_guests": true,
19
+ "membership_limit": 4
20
+ }
21
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "user": {
3
+ "email_address": "user@example.com",
4
+ "type": "Member",
5
+ "created_at": "2006/04/06 00:38:28 +0000",
6
+ "admin": true,
7
+ "id": 12345,
8
+ "name": "John Doe",
9
+ "api_auth_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
10
+ }
11
+ }
@@ -1 +1,2 @@
1
1
  --colour
2
+ --backtrace
@@ -1,3 +1,13 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+
1
3
  require 'rubygems'
2
4
  require 'spec'
5
+ gem 'activesupport', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
3
6
  require 'tinder'
7
+ require 'fakeweb'
8
+
9
+ FakeWeb.allow_net_connect = false
10
+
11
+ def fixture(name)
12
+ File.read(File.dirname(__FILE__) + "/fixtures/#{name}")
13
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tinder::Campfire do
4
+ before do
5
+ @campfire = Tinder::Campfire.new('test', :token => 'mytoken')
6
+ end
7
+
8
+ describe "rooms" do
9
+ before do
10
+ FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/rooms.json",
11
+ :body => fixture('rooms.json'), :content_type => "application/json")
12
+ end
13
+
14
+ it "should return rooms" do
15
+ @campfire.rooms.size.should == 2
16
+ @campfire.rooms.first.should be_kind_of(Tinder::Room)
17
+ end
18
+
19
+ it "should set the room name and id" do
20
+ room = @campfire.rooms.first
21
+ room.name.should == 'Room 1'
22
+ room.id.should == 80749
23
+ end
24
+ end
25
+
26
+ describe "users" do
27
+ before do
28
+ FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/rooms.json",
29
+ :body => fixture('rooms.json'), :content_type => "application/json")
30
+ [80749, 80751].each do |id|
31
+ FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/room/#{id}.json",
32
+ :body => fixture("rooms/room#{id}.json"), :content_type => "application/json")
33
+ end
34
+ end
35
+
36
+ it "should return a sorted list of users in all rooms" do
37
+ @campfire.users.length.should == 2
38
+ @campfire.users.first[:name].should == "Jane Doe"
39
+ @campfire.users.last[:name].should == "John Doe"
40
+ end
41
+ end
42
+
43
+ describe "me" do
44
+ before do
45
+ FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/users/me.json",
46
+ :body => fixture('users/me.json'), :content_type => "application/json")
47
+ end
48
+
49
+ it "should return the current user's information" do
50
+ @campfire.me["name"].should == "John Doe"
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tinder::Connection do
4
+ describe "authentication" do
5
+ it "should raise an exception with bad credentials" do
6
+ FakeWeb.register_uri(:get, "http://foo:X@test.campfirenow.com/rooms.json",
7
+ :status => ["401", "Unauthorized"])
8
+ connection = Tinder::Connection.new('test', :token => 'foo')
9
+ lambda { connection.get('/rooms.json') }.should raise_error(Tinder::AuthenticationFailed)
10
+ end
11
+
12
+ it "should lookup token when username/password provided" do
13
+ FakeWeb.register_uri(:get, "http://user:pass@test.campfirenow.com/users/me.json",
14
+ :body => fixture('users/me.json'), :content_type => "application/json")
15
+ connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass')
16
+ connection.token.should.should == "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
17
+ end
18
+
19
+
20
+ it "should use basic auth for credentials" do
21
+ FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/rooms.json",
22
+ :body => fixture('rooms.json'), :content_type => "application/json")
23
+ connection = Tinder::Connection.new('test', :token => 'mytoken')
24
+ lambda { connection.get('/rooms.json') }.should_not raise_error
25
+ end
26
+ end
27
+
28
+
29
+ end
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tinder::Room do
4
+ before do
5
+ FakeWeb.register_uri(:get, "http://mytoken:X@test.campfirenow.com/room/80749.json",
6
+ :body => fixture('rooms/show.json'), :content_type => "application/json")
7
+ @room = Tinder::Room.new(Tinder::Connection.new('test', :token => 'mytoken'), 'id' => 80749)
8
+ end
9
+
10
+ describe "join" do
11
+ FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/join.json", :status => '200')
12
+
13
+ it "should post to join url" do
14
+ @room.join
15
+ end
16
+ end
17
+
18
+ describe "leave" do
19
+ before do
20
+ FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/leave.json", :status => '200')
21
+ end
22
+
23
+ it "should post to leave url" do
24
+ @room.leave
25
+ end
26
+ end
27
+
28
+ describe "lock" do
29
+ before do
30
+ FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/lock.json", :status => '200')
31
+ end
32
+
33
+ it "should post to lock url" do
34
+ @room.lock
35
+ end
36
+ end
37
+
38
+ describe "unlock" do
39
+ before do
40
+ FakeWeb.register_uri(:post, "http://mytoken:X@test.campfirenow.com/room/80749/unlock.json", :status => '200')
41
+ end
42
+
43
+ it "should post to unlock url" do
44
+ @room.unlock
45
+ end
46
+ end
47
+
48
+ describe "guest_url" do
49
+ it "should use guest_invite_code if active" do
50
+ @room.stub!(:guest_access_enabled? => true, :guest_invite_code => '123')
51
+ @room.guest_url.should == "http://test.campfirenow.com/123"
52
+ end
53
+
54
+ it "should return nil when guest access is not enabled" do
55
+ @room.stub!(:guest_access_enabled?).and_return(false)
56
+ @room.guest_url.should be_nil
57
+ end
58
+ end
59
+
60
+ it "should set guest_invite_code" do
61
+ @room.guest_invite_code.should == "90cf7"
62
+ end
63
+
64
+ it "should set guest_access_enabled?" do
65
+ @room.guest_access_enabled?.should be_true
66
+ end
67
+
68
+ describe "name=" do
69
+ it "should put to update the room" do
70
+ FakeWeb.register_uri(:put, "http://mytoken:X@test.campfirenow.com/room/80749.json",
71
+ :status => '200')
72
+ @room.name = "Foo"
73
+ end
74
+ end
75
+
76
+ describe "listen" do
77
+ before do
78
+ require 'twitter/json_stream'
79
+ # Get EventMachine out of the way. We could be using em-spec, but seems like overkill for testing one method.
80
+ module EventMachine; def self.run; yield end end
81
+ EventMachine.stub!(:reactor_running?).and_return(true)
82
+ @stream = mock(Twitter::JSONStream)
83
+ @stream.stub!(:each_item)
84
+ end
85
+
86
+ it "should get from the streaming url" do
87
+ Twitter::JSONStream.should_receive(:connect).
88
+ with({:host=>"streaming.campfirenow.com", :path=>"/room/80749/live.json", :auth=>"mytoken:X", :timeout=>6, :ssl=>false}).
89
+ and_return(@stream)
90
+ @room.listen { }
91
+ end
92
+
93
+ it "should raise an exception if no block is given" do
94
+ lambda {
95
+ @room.listen
96
+ }.should raise_error("no block provided")
97
+ end
98
+ end
99
+ end
@@ -5,21 +5,20 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{tinder}
8
- s.version = "1.3.1"
8
+ s.version = "1.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brandon Keepers"]
12
- s.date = %q{2009-12-17}
13
- s.description = %q{An API for interfacing with Campfire, the 37Signals chat application.}
12
+ s.date = %q{2010-05-11}
13
+ s.description = %q{A Ruby API for interfacing with Campfire, the 37Signals chat application.}
14
14
  s.email = %q{brandon@opensoul.org}
15
15
  s.extra_rdoc_files = [
16
- "README.txt"
16
+ "README.markdown"
17
17
  ]
18
18
  s.files = [
19
19
  ".gitignore",
20
20
  "CHANGELOG.txt",
21
- "Manifest.txt",
22
- "README.txt",
21
+ "README.markdown",
23
22
  "Rakefile",
24
23
  "VERSION",
25
24
  "init.rb",
@@ -30,28 +29,29 @@ Gem::Specification.new do |s|
30
29
  "lib/tinder/room.rb",
31
30
  "site/index.html",
32
31
  "site/stylesheets/style.css",
33
- "spec/campfire_spec.rb",
34
- "spec/html/full_lobby.html",
35
- "spec/html/normal_lobby.html",
36
- "spec/html/transcript.html",
32
+ "spec/fixtures/rooms.json",
33
+ "spec/fixtures/rooms/room80749.json",
34
+ "spec/fixtures/rooms/room80751.json",
35
+ "spec/fixtures/rooms/show.json",
36
+ "spec/fixtures/users/me.json",
37
37
  "spec/spec.opts",
38
38
  "spec/spec_helper.rb",
39
- "test/remote/credentials.rb.example",
40
- "test/remote/remote_campfire_test.rb",
41
- "test/test_helper.rb",
39
+ "spec/tinder/campfire_spec.rb",
40
+ "spec/tinder/connection_spec.rb",
41
+ "spec/tinder/room_spec.rb",
42
42
  "tinder.gemspec"
43
43
  ]
44
44
  s.homepage = %q{http://github.com/collectiveidea/tinder}
45
45
  s.rdoc_options = ["--charset=UTF-8"]
46
46
  s.require_paths = ["lib"]
47
47
  s.rubyforge_project = %q{tinder}
48
- s.rubygems_version = %q{1.3.5}
49
- s.summary = %q{An (unofficial) Campfire API}
48
+ s.rubygems_version = %q{1.3.6}
49
+ s.summary = %q{Ruby wrapper for the Campfire API}
50
50
  s.test_files = [
51
- "spec/campfire_spec.rb",
52
- "spec/spec_helper.rb",
53
- "test/remote/remote_campfire_test.rb",
54
- "test/test_helper.rb"
51
+ "spec/spec_helper.rb",
52
+ "spec/tinder/campfire_spec.rb",
53
+ "spec/tinder/connection_spec.rb",
54
+ "spec/tinder/room_spec.rb"
55
55
  ]
56
56
 
57
57
  if s.respond_to? :specification_version then
@@ -62,18 +62,27 @@ Gem::Specification.new do |s|
62
62
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
63
63
  s.add_runtime_dependency(%q<httparty>, [">= 0"])
64
64
  s.add_runtime_dependency(%q<mime-types>, [">= 0"])
65
+ s.add_runtime_dependency(%q<twitter-stream>, [">= 0"])
66
+ s.add_runtime_dependency(%q<eventmachine>, [">= 0"])
65
67
  s.add_development_dependency(%q<rspec>, [">= 0"])
68
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
66
69
  else
67
70
  s.add_dependency(%q<activesupport>, [">= 0"])
68
71
  s.add_dependency(%q<httparty>, [">= 0"])
69
72
  s.add_dependency(%q<mime-types>, [">= 0"])
73
+ s.add_dependency(%q<twitter-stream>, [">= 0"])
74
+ s.add_dependency(%q<eventmachine>, [">= 0"])
70
75
  s.add_dependency(%q<rspec>, [">= 0"])
76
+ s.add_dependency(%q<fakeweb>, [">= 0"])
71
77
  end
72
78
  else
73
79
  s.add_dependency(%q<activesupport>, [">= 0"])
74
80
  s.add_dependency(%q<httparty>, [">= 0"])
75
81
  s.add_dependency(%q<mime-types>, [">= 0"])
82
+ s.add_dependency(%q<twitter-stream>, [">= 0"])
83
+ s.add_dependency(%q<eventmachine>, [">= 0"])
76
84
  s.add_dependency(%q<rspec>, [">= 0"])
85
+ s.add_dependency(%q<fakeweb>, [">= 0"])
77
86
  end
78
87
  end
79
88
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 4
8
+ - 0
9
+ version: 1.4.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Brandon Keepers
@@ -9,62 +14,105 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-12-17 00:00:00 -05:00
17
+ date: 2010-05-11 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: activesupport
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: httparty
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
33
41
  version: "0"
34
- version:
42
+ type: :runtime
43
+ version_requirements: *id002
35
44
  - !ruby/object:Gem::Dependency
36
45
  name: mime-types
46
+ prerelease: false
47
+ requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ type: :runtime
55
+ version_requirements: *id003
56
+ - !ruby/object:Gem::Dependency
57
+ name: twitter-stream
58
+ prerelease: false
59
+ requirement: &id004 !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ segments:
64
+ - 0
65
+ version: "0"
37
66
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
67
+ version_requirements: *id004
68
+ - !ruby/object:Gem::Dependency
69
+ name: eventmachine
70
+ prerelease: false
71
+ requirement: &id005 !ruby/object:Gem::Requirement
40
72
  requirements:
41
73
  - - ">="
42
74
  - !ruby/object:Gem::Version
75
+ segments:
76
+ - 0
43
77
  version: "0"
44
- version:
78
+ type: :runtime
79
+ version_requirements: *id005
45
80
  - !ruby/object:Gem::Dependency
46
81
  name: rspec
82
+ prerelease: false
83
+ requirement: &id006 !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
89
+ version: "0"
47
90
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
91
+ version_requirements: *id006
92
+ - !ruby/object:Gem::Dependency
93
+ name: fakeweb
94
+ prerelease: false
95
+ requirement: &id007 !ruby/object:Gem::Requirement
50
96
  requirements:
51
97
  - - ">="
52
98
  - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
53
101
  version: "0"
54
- version:
55
- description: An API for interfacing with Campfire, the 37Signals chat application.
102
+ type: :development
103
+ version_requirements: *id007
104
+ description: A Ruby API for interfacing with Campfire, the 37Signals chat application.
56
105
  email: brandon@opensoul.org
57
106
  executables: []
58
107
 
59
108
  extensions: []
60
109
 
61
110
  extra_rdoc_files:
62
- - README.txt
111
+ - README.markdown
63
112
  files:
64
113
  - .gitignore
65
114
  - CHANGELOG.txt
66
- - Manifest.txt
67
- - README.txt
115
+ - README.markdown
68
116
  - Rakefile
69
117
  - VERSION
70
118
  - init.rb
@@ -75,15 +123,16 @@ files:
75
123
  - lib/tinder/room.rb
76
124
  - site/index.html
77
125
  - site/stylesheets/style.css
78
- - spec/campfire_spec.rb
79
- - spec/html/full_lobby.html
80
- - spec/html/normal_lobby.html
81
- - spec/html/transcript.html
126
+ - spec/fixtures/rooms.json
127
+ - spec/fixtures/rooms/room80749.json
128
+ - spec/fixtures/rooms/room80751.json
129
+ - spec/fixtures/rooms/show.json
130
+ - spec/fixtures/users/me.json
82
131
  - spec/spec.opts
83
132
  - spec/spec_helper.rb
84
- - test/remote/credentials.rb.example
85
- - test/remote/remote_campfire_test.rb
86
- - test/test_helper.rb
133
+ - spec/tinder/campfire_spec.rb
134
+ - spec/tinder/connection_spec.rb
135
+ - spec/tinder/room_spec.rb
87
136
  - tinder.gemspec
88
137
  has_rdoc: true
89
138
  homepage: http://github.com/collectiveidea/tinder
@@ -98,23 +147,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
147
  requirements:
99
148
  - - ">="
100
149
  - !ruby/object:Gem::Version
150
+ segments:
151
+ - 0
101
152
  version: "0"
102
- version:
103
153
  required_rubygems_version: !ruby/object:Gem::Requirement
104
154
  requirements:
105
155
  - - ">="
106
156
  - !ruby/object:Gem::Version
157
+ segments:
158
+ - 0
107
159
  version: "0"
108
- version:
109
160
  requirements: []
110
161
 
111
162
  rubyforge_project: tinder
112
- rubygems_version: 1.3.5
163
+ rubygems_version: 1.3.6
113
164
  signing_key:
114
165
  specification_version: 3
115
- summary: An (unofficial) Campfire API
166
+ summary: Ruby wrapper for the Campfire API
116
167
  test_files:
117
- - spec/campfire_spec.rb
118
168
  - spec/spec_helper.rb
119
- - test/remote/remote_campfire_test.rb
120
- - test/test_helper.rb
169
+ - spec/tinder/campfire_spec.rb
170
+ - spec/tinder/connection_spec.rb
171
+ - spec/tinder/room_spec.rb