tinder 1.9.2 → 1.9.3

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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f2d55e9349a7780126ad86990aa8620357ea6002
4
+ data.tar.gz: eb2f2fe2b5990203b2a5f4f55e5dfea2a48dc9e7
5
+ SHA512:
6
+ metadata.gz: c914892452c4af7dc20c266d6042356ab8ba9e3a4d681695e4d74c998a66f6370eaa7936be12dc68a1d987ce413eae6d0c070ff4c3e0f225cfa14cc4c359af26
7
+ data.tar.gz: ef2db0dae19f724d07c668e4f49bc4f3ace90db8019d6ee2c3298c181988640a217447d55caf2d0c205660173072bfecd2870981ecc1d27f0e20a25e9d478520
@@ -7,6 +7,8 @@ Tinder is a library for interfacing with Campfire, the chat application from 37S
7
7
  campfire = Tinder::Campfire.new 'mysubdomain', :token => '546884b3d8fee4d80665g561caf7h9f3ea7b999e'
8
8
  # or you can still use username/password and Tinder will look up your token
9
9
  # campfire = Tinder::Campfire.new 'mysubdomain', :username => 'user', :password => 'pass'
10
+ # or if you have an OAuth token then you can use that to connect
11
+ # campfire = Tinder::Campfire.new 'mysubdomain', :oauth_token => '546884b3d8fee4d80665g561caf7h9f3ea7b999e'
10
12
 
11
13
  room = campfire.rooms.first
12
14
  room.rename 'New Room Names'
@@ -25,6 +25,7 @@ module Tinder
25
25
 
26
26
  def self.raw_connection
27
27
  @raw_connection ||= Faraday.new do |builder|
28
+ builder.use Faraday::Request::Multipart
28
29
  builder.use FaradayMiddleware::Mashify
29
30
  builder.use FaradayMiddleware::ParseJson
30
31
  builder.use Faraday::Response::RemoveWhitespace
@@ -40,9 +41,15 @@ module Tinder
40
41
  @options.merge!(options)
41
42
  @uri = URI.parse("#{@options[:ssl] ? 'https' : 'http' }://#{subdomain}.#{HOST}")
42
43
  @token = options[:token]
43
-
44
- connection.basic_auth token, 'X'
45
- raw_connection.basic_auth token, 'X'
44
+ @oauth_token = options[:oauth_token]
45
+
46
+ if @oauth_token
47
+ connection.headers["Authorization"] = "Bearer #{@oauth_token}"
48
+ raw_connection.headers["Authorization"] = "Bearer #{@oauth_token}"
49
+ else
50
+ connection.basic_auth token, 'X'
51
+ raw_connection.basic_auth token, 'X'
52
+ end
46
53
  end
47
54
 
48
55
  def basic_auth_settings
@@ -1,4 +1,6 @@
1
1
  # encoding: UTF-8
2
+ require 'time'
3
+
2
4
  module Tinder
3
5
  # A campfire room
4
6
  class Room
@@ -92,25 +94,37 @@ module Tinder
92
94
 
93
95
  # Get the list of users currently chatting for this room
94
96
  def users
97
+ @users ||= current_users
98
+ end
99
+
100
+ def current_users
95
101
  reload!
96
- @users
102
+ @current_users
97
103
  end
98
104
 
99
- # return the user with the given id; if it isn't in our room cache, do a request to get it
105
+ # return the user with the given id; if it isn't in our room cache,
106
+ # do a request to get it
100
107
  def user(id)
101
108
  if id
102
- user = users.detect {|u| u[:id] == id }
103
- unless user
104
- user_data = connection.get("/users/#{id}.json")
105
- user = user_data && user_data[:user]
106
- end
107
- user[:created_at] = Time.parse(user[:created_at])
109
+ cached_user = users.detect {|u| u[:id] == id }
110
+ user = cached_user || fetch_user(id)
111
+ self.users << user
108
112
  user
109
113
  end
110
114
  end
111
115
 
112
- # Listen for new messages in the room, yielding them to the provided block as they arrive.
113
- # Each message is a hash with:
116
+ # Perform a request for the user with the given ID
117
+ def fetch_user(id)
118
+ user_data = connection.get("/users/#{id}.json")
119
+ user = user_data && user_data[:user]
120
+ user[:created_at] = Time.parse(user[:created_at])
121
+ user
122
+ end
123
+
124
+ # Modifies a hash representation of a Campfire message. Expands +:user_id+
125
+ # to a full hash at +:user+, generates Timestamp from +:created_at+.
126
+ #
127
+ # Full returned hash:
114
128
  # * +:body+: the body of the message
115
129
  # * +:user+: Campfire user, which is itself a hash, of:
116
130
  # * +:id+: User id
@@ -123,6 +137,14 @@ module Tinder
123
137
  # * +:type+: Campfire message type
124
138
  # * +:room_id+: Campfire room id
125
139
  # * +:created_at+: Message creation timestamp
140
+ def parse_message(message)
141
+ message[:user] = user(message.delete(:user_id))
142
+ message[:created_at] = Time.parse(message[:created_at])
143
+ message
144
+ end
145
+
146
+ # Listen for new messages in the room, parsing them with #parse_message
147
+ # and then yielding them to the provided block as they arrive.
126
148
  #
127
149
  # room.listen do |m|
128
150
  # room.speak "Go away!" if m[:body] =~ /Java/i
@@ -137,7 +159,6 @@ module Tinder
137
159
  require 'hashie'
138
160
  require 'multi_json'
139
161
  require 'twitter/json_stream'
140
- require 'time'
141
162
 
142
163
  auth = connection.basic_auth_settings
143
164
  options = {
@@ -154,8 +175,7 @@ module Tinder
154
175
  Tinder.logger.info "Listening to #{@name}…"
155
176
  @stream.each_item do |message|
156
177
  message = Hashie::Mash.new(MultiJson.decode(message))
157
- message[:user] = user(message.delete(:user_id))
158
- message[:created_at] = Time.parse(message[:created_at])
178
+ message = parse_message(message)
159
179
  yield(message)
160
180
  end
161
181
 
@@ -184,35 +204,21 @@ module Tinder
184
204
  @stream = nil
185
205
  end
186
206
 
187
- # Get the transcript for the given date (Returns a hash in the same format as #listen)
188
- #
189
- # room.transcript(room.available_transcripts.first)
190
- # #=> [{:message=>"foobar!",
191
- # :user_id=>"99999",
192
- # :person=>"Brandon",
193
- # :id=>"18659245",
194
- # :timestamp=>=>Tue May 05 07:15:00 -0700 2009}]
207
+ # Get the transcript for the given date (returns an array of messages parsed
208
+ # via #parse_message, see #parse_message for format of returned message)
195
209
  #
196
- # The timestamp slot will typically have a granularity of five minutes.
197
- #
198
- def transcript(transcript_date)
199
- url = "/room/#{@id}/transcript/#{transcript_date.to_date.strftime('%Y/%m/%d')}.json"
200
- connection.get(url)['messages'].map do |room|
201
- { :id => room['id'],
202
- :user_id => room['user_id'],
203
- :message => room['body'],
204
- :timestamp => Time.parse(room['created_at']) }
210
+ def transcript(transcript_date = Date.today)
211
+ unless transcript_date.is_a?(Date)
212
+ transcript_date = transcript_date.to_date
213
+ end
214
+ url = "/room/#{@id}/transcript/#{transcript_date.strftime('%Y/%m/%d')}.json"
215
+ connection.get(url)['messages'].map do |message|
216
+ parse_message(message)
205
217
  end
206
218
  end
207
219
 
208
- # Search transcripts for a specific term
209
- #
210
- # room.search("bobloblaw")
211
- # #=> [{:message=>"foo!",
212
- # :user_id=>"99999",
213
- # :person=>"Brandon",
214
- # :id=>"18659245",
215
- # :timestamp=>=>Tue May 05 07:15:00 -0700 2009}]
220
+ # Search transcripts for the given term (returns an array of messages parsed
221
+ # via #parse_message, see #parse_message for format of returned message)
216
222
  #
217
223
  def search(term)
218
224
  encoded_term = URI.encode(term)
@@ -221,11 +227,8 @@ module Tinder
221
227
  message[:room_id] == id
222
228
  end
223
229
 
224
- room_messages.map do |room|
225
- { :id => room['id'],
226
- :user_id => room['user_id'],
227
- :message => room['body'],
228
- :timestamp => Time.parse(room['created_at']) }
230
+ room_messages.map do |message|
231
+ parse_message(message)
229
232
  end
230
233
  end
231
234
 
@@ -244,14 +247,13 @@ module Tinder
244
247
  # Accepts a hash for options:
245
248
  # * +:limit+: Restrict the number of messages returned
246
249
  # * +:since_message_id+: Get messages created after the specified message id
247
- def recent(limit=10, since_message_id=nil)
250
+ def recent(options = {})
251
+ options = { :limit => 10, :since_message_id => nil }.merge(options)
248
252
  # Build url manually, faraday has to be 8.0 to do this
249
- url = "#{room_url_for(:recent)}?limit=#{limit}&since_message_id=#{since_message_id}"
253
+ url = "#{room_url_for(:recent)}?limit=#{options[:limit]}&since_message_id=#{options[:since_message_id]}"
250
254
 
251
255
  connection.get(url)['messages'].map do |msg|
252
- msg[:created_at] = Time.parse(msg[:created_at])
253
- msg[:user] = user(msg[:user_id])
254
- msg
256
+ parse_message(msg)
255
257
  end
256
258
  end
257
259
 
@@ -270,7 +272,10 @@ module Tinder
270
272
  @full = attributes['full']
271
273
  @open_to_guests = attributes['open_to_guests']
272
274
  @active_token_value = attributes['active_token_value']
273
- @users = attributes['users']
275
+ @current_users = attributes['users'].map do |user|
276
+ user[:created_at] = Time.parse(user[:created_at])
277
+ user
278
+ end
274
279
 
275
280
  @loaded = true
276
281
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module Tinder
3
- VERSION = '1.9.2' unless defined?(::Tinder::VERSION)
3
+ VERSION = '1.9.3' unless defined?(::Tinder::VERSION)
4
4
  end
@@ -25,7 +25,7 @@ describe Tinder::Campfire do
25
25
  end
26
26
  end
27
27
 
28
- describe "find_by_id" do
28
+ describe "find_room_by_id" do
29
29
  before do
30
30
  stub_connection(@campfire.connection) do |stub|
31
31
  stub.get('/rooms.json') {[200, {}, fixture('rooms.json')]}
@@ -37,6 +37,33 @@ describe Tinder::Connection do
37
37
  connection = Tinder::Connection.new('test', :token => 'mytoken')
38
38
  lambda { connection.get('/rooms.json') }.should_not raise_error
39
39
  end
40
+
41
+ end
42
+
43
+ describe "oauth" do
44
+ let (:oauth_token) { "myoauthtoken" }
45
+ let (:connection) { Tinder::Connection.new('test', :oauth_token => oauth_token) }
46
+
47
+ before do
48
+ stub_connection(Tinder::Connection) do |stub|
49
+ stub.get("/rooms.json") {[200, {}, fixture('rooms.json')]}
50
+ end
51
+ end
52
+
53
+ it "should authenticate" do
54
+ lambda { connection.get('/rooms.json') }.should_not raise_error
55
+ end
56
+
57
+ it "should set the oauth_token" do
58
+ connection.get('/rooms.json')
59
+ connection.options[:oauth_token].should == oauth_token
60
+ end
61
+
62
+ it "should set an Authorization header" do
63
+ connection.get('/rooms.json')
64
+ connection.connection.headers["Authorization"].should == "Bearer #{oauth_token}"
65
+ end
66
+
40
67
  end
41
68
 
42
69
  describe "ssl" do
@@ -1,5 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  require 'spec_helper'
3
+ require 'date'
3
4
 
4
5
  describe Tinder::Room do
5
6
  before do
@@ -14,11 +15,11 @@ describe Tinder::Room do
14
15
  # Get EventMachine out of the way. We could be using em-spec, but seems like overkill
15
16
  require 'twitter/json_stream'
16
17
  module EventMachine; def self.run; yield end end
17
- EventMachine.stub!(:reactor_running?).and_return(true)
18
- @stream = mock(Twitter::JSONStream)
19
- @stream.stub!(:each_item)
20
- @stream.stub!(:on_error)
21
- @stream.stub!(:on_max_reconnects)
18
+ EventMachine.stub(:reactor_running?).and_return(true)
19
+ @stream = double(Twitter::JSONStream)
20
+ @stream.stub(:each_item)
21
+ @stream.stub(:on_error)
22
+ @stream.stub(:on_max_reconnects)
22
23
  end
23
24
 
24
25
  describe "join" do
@@ -69,9 +70,35 @@ describe Tinder::Room do
69
70
  end
70
71
  end
71
72
 
72
- it "should GET the search endpoint with the search term" do
73
+ it "should GET the search endpoint with the search term and filter by room" do
74
+ @room.stub(:id).and_return(490096)
75
+ @room.should_receive(:parse_message).exactly(2).times
73
76
  @room.search("foo")
74
77
  end
78
+
79
+ it "should return empty array if no messages in room" do
80
+ @room.should_receive(:parse_message).never
81
+ @room.search("foo").should be_empty
82
+ end
83
+ end
84
+
85
+ describe "transcript" do
86
+ it "should GET the transcript endpoint with the provided date" do
87
+ stub_connection(@connection) do |stub|
88
+ stub.get('/room/80749/transcript/2012/10/15.json') {[200, {}, fixture("rooms/recent.json")]}
89
+ end
90
+ @room.should_receive(:parse_message).exactly(2).times
91
+ @room.transcript(Date.parse('2012-10-15'))
92
+ end
93
+
94
+ it "should default to today's date" do
95
+ stub_connection(@connection) do |stub|
96
+ stub.get('/room/80749/transcript/1981/03/21.json') {[200, {}, fixture("rooms/recent.json")]}
97
+ end
98
+ Date.stub(:today).and_return(Date.parse('1981-03-21'))
99
+ @room.should_receive(:parse_message).exactly(2).times
100
+ @room.transcript
101
+ end
75
102
  end
76
103
 
77
104
  describe "unlock" do
@@ -88,12 +115,12 @@ describe Tinder::Room do
88
115
 
89
116
  describe "guest_url" do
90
117
  it "should use guest_invite_code if active" do
91
- @room.stub!(:guest_access_enabled? => true, :guest_invite_code => '123')
118
+ @room.stub(:guest_access_enabled? => true, :guest_invite_code => '123')
92
119
  @room.guest_url.should == "https://test.campfirenow.com/123"
93
120
  end
94
121
 
95
122
  it "should return nil when guest access is not enabled" do
96
- @room.stub!(:guest_access_enabled?).and_return(false)
123
+ @room.stub(:guest_access_enabled?).and_return(false)
97
124
  @room.guest_url.should be_nil
98
125
  end
99
126
  end
@@ -167,7 +194,7 @@ describe Tinder::Room do
167
194
  end
168
195
 
169
196
  it "marks the room as listening" do
170
- Twitter::JSONStream.stub!(:connect).and_return(@stream)
197
+ Twitter::JSONStream.stub(:connect).and_return(@stream)
171
198
  lambda {
172
199
  @room.listen { }
173
200
  }.should change(@room, :listening?).from(false).to(true)
@@ -180,8 +207,8 @@ describe Tinder::Room do
180
207
  stub.post('/room/80749/join.json') {[200, {}, ""]}
181
208
  end
182
209
 
183
- Twitter::JSONStream.stub!(:connect).and_return(@stream)
184
- @stream.stub!(:stop)
210
+ Twitter::JSONStream.stub(:connect).and_return(@stream)
211
+ @stream.stub(:stop)
185
212
  end
186
213
 
187
214
  it "changes a listening room to a non-listening room" do
@@ -210,21 +237,94 @@ describe Tinder::Room do
210
237
  stub.get('/room/80749/recent.json') {[
211
238
  200, {}, fixture('rooms/recent.json')
212
239
  ]}
213
- stub.get('/users/1158839.json') {[
214
- 200, {}, fixture('users/me.json')
215
- ]}
216
- stub.get('/users/1158837.json') {[
217
- 200, {}, fixture('users/me.json')
218
- ]}
219
240
  end
220
241
  end
221
242
 
222
243
  it "should get a list of parsed recent messages" do
223
- messages = @room.recent({:limit => 1})
244
+ @room.should_receive(:parse_message).exactly(2).times
245
+ messages = @room.recent
246
+ end
247
+ end
248
+
249
+ describe "parse_message" do
250
+ it "expands user and parses created_at" do
251
+ unparsed_message = {
252
+ :user_id => 123,
253
+ :body => 'An aunt is worth two nieces',
254
+ :created_at => '2012/02/14 16:21:00 +0000'
255
+ }
256
+ expected = {
257
+ :user => {
258
+ :name => 'Dr. Noodles'
259
+ },
260
+ :body => 'An aunt is worth two nieces',
261
+ :created_at => Time.parse('2012/02/14 16:21:00 +0000')
262
+ }
263
+ @room.stub(:user).with(123).and_return({ :name => 'Dr. Noodles' })
264
+
265
+ actual = @room.parse_message(unparsed_message)
266
+ actual.should == expected
267
+ end
268
+ end
269
+
270
+ describe "user" do
271
+ before do
272
+ @room.stub(:current_users).and_return([
273
+ { :id => 1, :name => 'The Amazing Crayon Executive'},
274
+ { :id => 2, :name => 'Lord Pants'},
275
+ ])
276
+ @not_current_user = { :id => 3, :name => 'Patriot Sally'}
277
+ end
278
+
279
+ it "looks up user if not already in room's cache" do
280
+ @room.should_receive(:fetch_user).with(3).
281
+ and_return(@not_current_user)
282
+ @room.user(3).should == @not_current_user
283
+ end
284
+
285
+ it "pulls user from room's cache if user in participant list" do
286
+ @room.should_receive(:fetch_user).never
287
+ user = @room.user(1)
288
+ end
289
+
290
+ it "adds user to cache after first lookup" do
291
+ @room.should_receive(:fetch_user).with(3).at_most(:once).
292
+ and_return(@not_current_user)
293
+ @room.user(3).should == @not_current_user
294
+ @room.user(3).should == @not_current_user
295
+ end
296
+ end
297
+
298
+ describe "fetch_user" do
299
+ before do
300
+ stub_connection(@connection) do |stub|
301
+ stub.get("/users/5.json") {[200, {}, fixture('users/me.json')]}
302
+ end
303
+ end
304
+
305
+ it "requests via GET and returns the requested user's information" do
306
+ @room.fetch_user(5)['name'].should == 'John Doe'
307
+ end
308
+ end
309
+
310
+ describe "current_users" do
311
+ it "returns list of currently participating users" do
312
+ current_users = @room.current_users
313
+ current_users.size.should == 1
314
+ current_users.first[:name].should == 'Brandon Keepers'
315
+ end
316
+ end
317
+
318
+ describe "users" do
319
+ it "returns current users if cache has not been initialized yet" do
320
+ @room.should_receive(:current_users).and_return(:the_whole_spittoon)
321
+ @room.users.should == :the_whole_spittoon
322
+ end
224
323
 
225
- messages.size.should equal(2)
226
- messages.first.size.should equal(8)
227
- messages.first[:user].size.should equal(7)
324
+ it "returns current users plus any added cached users" do
325
+ @room.should_receive(:current_users).and_return([:mia_cuttlefish])
326
+ @room.users << :guy_wearing_new_mexico_as_a_hat
327
+ @room.users.should == [:mia_cuttlefish, :guy_wearing_new_mexico_as_a_hat]
228
328
  end
229
329
  end
230
330
  end
@@ -6,19 +6,19 @@ Gem::Specification.new do |gem|
6
6
  gem.add_dependency 'eventmachine', '~> 1.0'
7
7
  gem.add_dependency 'faraday', '~> 0.8'
8
8
  gem.add_dependency 'faraday_middleware', '~> 0.9'
9
- gem.add_dependency 'hashie', '~> 1.0'
10
- gem.add_dependency 'json', '~> 1.7.5'
9
+ gem.add_dependency 'hashie', ['>= 1.0', '< 3']
10
+ gem.add_dependency 'json', '~> 1.8.0'
11
11
  gem.add_dependency 'mime-types', '~> 1.19'
12
- gem.add_dependency 'multi_json', '~> 1.5'
12
+ gem.add_dependency 'multi_json', '~> 1.7'
13
13
  gem.add_dependency 'twitter-stream', '~> 0.1'
14
14
 
15
15
  gem.add_development_dependency 'fakeweb'
16
16
  gem.add_development_dependency 'rake'
17
17
  gem.add_development_dependency 'rspec'
18
18
 
19
- gem.authors = ["Brandon Keepers", "Brian Ryckbost"]
19
+ gem.authors = ["Brandon Keepers", "Brian Ryckbost", "Tony Coconate"]
20
20
  gem.description = %q{A Ruby API for interfacing with Campfire, the 37Signals chat application.}
21
- gem.email = ['brandon@opensoul.org', 'bryckbost@gmail.com']
21
+ gem.email = ['brandon@opensoul.org', 'bryckbost@gmail.com', 'me@tonycoconate.com']
22
22
  gem.extra_rdoc_files = ['README.markdown']
23
23
  gem.files = `git ls-files`.split("\n")
24
24
  gem.homepage = 'http://github.com/collectiveidea/tinder'
metadata CHANGED
@@ -1,21 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
5
- prerelease:
4
+ version: 1.9.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brandon Keepers
9
8
  - Brian Ryckbost
9
+ - Tony Coconate
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-01-04 00:00:00.000000000 Z
13
+ date: 2013-09-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: eventmachine
17
17
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
18
  requirements:
20
19
  - - ~>
21
20
  - !ruby/object:Gem::Version
@@ -23,7 +22,6 @@ dependencies:
23
22
  type: :runtime
24
23
  prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
25
  requirements:
28
26
  - - ~>
29
27
  - !ruby/object:Gem::Version
@@ -31,7 +29,6 @@ dependencies:
31
29
  - !ruby/object:Gem::Dependency
32
30
  name: faraday
33
31
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
32
  requirements:
36
33
  - - ~>
37
34
  - !ruby/object:Gem::Version
@@ -39,7 +36,6 @@ dependencies:
39
36
  type: :runtime
40
37
  prerelease: false
41
38
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
39
  requirements:
44
40
  - - ~>
45
41
  - !ruby/object:Gem::Version
@@ -47,7 +43,6 @@ dependencies:
47
43
  - !ruby/object:Gem::Dependency
48
44
  name: faraday_middleware
49
45
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
46
  requirements:
52
47
  - - ~>
53
48
  - !ruby/object:Gem::Version
@@ -55,7 +50,6 @@ dependencies:
55
50
  type: :runtime
56
51
  prerelease: false
57
52
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
53
  requirements:
60
54
  - - ~>
61
55
  - !ruby/object:Gem::Version
@@ -63,39 +57,40 @@ dependencies:
63
57
  - !ruby/object:Gem::Dependency
64
58
  name: hashie
65
59
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
60
  requirements:
68
- - - ~>
61
+ - - '>='
69
62
  - !ruby/object:Gem::Version
70
63
  version: '1.0'
64
+ - - <
65
+ - !ruby/object:Gem::Version
66
+ version: '3'
71
67
  type: :runtime
72
68
  prerelease: false
73
69
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
70
  requirements:
76
- - - ~>
71
+ - - '>='
77
72
  - !ruby/object:Gem::Version
78
73
  version: '1.0'
74
+ - - <
75
+ - !ruby/object:Gem::Version
76
+ version: '3'
79
77
  - !ruby/object:Gem::Dependency
80
78
  name: json
81
79
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
80
  requirements:
84
81
  - - ~>
85
82
  - !ruby/object:Gem::Version
86
- version: 1.7.5
83
+ version: 1.8.0
87
84
  type: :runtime
88
85
  prerelease: false
89
86
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
87
  requirements:
92
88
  - - ~>
93
89
  - !ruby/object:Gem::Version
94
- version: 1.7.5
90
+ version: 1.8.0
95
91
  - !ruby/object:Gem::Dependency
96
92
  name: mime-types
97
93
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
94
  requirements:
100
95
  - - ~>
101
96
  - !ruby/object:Gem::Version
@@ -103,7 +98,6 @@ dependencies:
103
98
  type: :runtime
104
99
  prerelease: false
105
100
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
101
  requirements:
108
102
  - - ~>
109
103
  - !ruby/object:Gem::Version
@@ -111,23 +105,20 @@ dependencies:
111
105
  - !ruby/object:Gem::Dependency
112
106
  name: multi_json
113
107
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
108
  requirements:
116
109
  - - ~>
117
110
  - !ruby/object:Gem::Version
118
- version: '1.5'
111
+ version: '1.7'
119
112
  type: :runtime
120
113
  prerelease: false
121
114
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
115
  requirements:
124
116
  - - ~>
125
117
  - !ruby/object:Gem::Version
126
- version: '1.5'
118
+ version: '1.7'
127
119
  - !ruby/object:Gem::Dependency
128
120
  name: twitter-stream
129
121
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
122
  requirements:
132
123
  - - ~>
133
124
  - !ruby/object:Gem::Version
@@ -135,7 +126,6 @@ dependencies:
135
126
  type: :runtime
136
127
  prerelease: false
137
128
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
129
  requirements:
140
130
  - - ~>
141
131
  - !ruby/object:Gem::Version
@@ -143,55 +133,50 @@ dependencies:
143
133
  - !ruby/object:Gem::Dependency
144
134
  name: fakeweb
145
135
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
136
  requirements:
148
- - - ! '>='
137
+ - - '>='
149
138
  - !ruby/object:Gem::Version
150
139
  version: '0'
151
140
  type: :development
152
141
  prerelease: false
153
142
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
143
  requirements:
156
- - - ! '>='
144
+ - - '>='
157
145
  - !ruby/object:Gem::Version
158
146
  version: '0'
159
147
  - !ruby/object:Gem::Dependency
160
148
  name: rake
161
149
  requirement: !ruby/object:Gem::Requirement
162
- none: false
163
150
  requirements:
164
- - - ! '>='
151
+ - - '>='
165
152
  - !ruby/object:Gem::Version
166
153
  version: '0'
167
154
  type: :development
168
155
  prerelease: false
169
156
  version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
157
  requirements:
172
- - - ! '>='
158
+ - - '>='
173
159
  - !ruby/object:Gem::Version
174
160
  version: '0'
175
161
  - !ruby/object:Gem::Dependency
176
162
  name: rspec
177
163
  requirement: !ruby/object:Gem::Requirement
178
- none: false
179
164
  requirements:
180
- - - ! '>='
165
+ - - '>='
181
166
  - !ruby/object:Gem::Version
182
167
  version: '0'
183
168
  type: :development
184
169
  prerelease: false
185
170
  version_requirements: !ruby/object:Gem::Requirement
186
- none: false
187
171
  requirements:
188
- - - ! '>='
172
+ - - '>='
189
173
  - !ruby/object:Gem::Version
190
174
  version: '0'
191
175
  description: A Ruby API for interfacing with Campfire, the 37Signals chat application.
192
176
  email:
193
177
  - brandon@opensoul.org
194
178
  - bryckbost@gmail.com
179
+ - me@tonycoconate.com
195
180
  executables: []
196
181
  extensions: []
197
182
  extra_rdoc_files:
@@ -229,30 +214,26 @@ files:
229
214
  - tinder.gemspec
230
215
  homepage: http://github.com/collectiveidea/tinder
231
216
  licenses: []
217
+ metadata: {}
232
218
  post_install_message:
233
219
  rdoc_options: []
234
220
  require_paths:
235
221
  - lib
236
222
  required_ruby_version: !ruby/object:Gem::Requirement
237
- none: false
238
223
  requirements:
239
- - - ! '>='
224
+ - - '>='
240
225
  - !ruby/object:Gem::Version
241
226
  version: '0'
242
- segments:
243
- - 0
244
- hash: 3804490809334781938
245
227
  required_rubygems_version: !ruby/object:Gem::Requirement
246
- none: false
247
228
  requirements:
248
- - - ! '>='
229
+ - - '>='
249
230
  - !ruby/object:Gem::Version
250
231
  version: 1.3.6
251
232
  requirements: []
252
233
  rubyforge_project:
253
- rubygems_version: 1.8.24
234
+ rubygems_version: 2.0.3
254
235
  signing_key:
255
- specification_version: 3
236
+ specification_version: 4
256
237
  summary: Ruby wrapper for the Campfire API
257
238
  test_files:
258
239
  - spec/fixtures/rooms.json