tinder 1.9.2 → 1.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.markdown +2 -0
- data/lib/tinder/connection.rb +10 -3
- data/lib/tinder/room.rb +54 -49
- data/lib/tinder/version.rb +1 -1
- data/spec/tinder/campfire_spec.rb +1 -1
- data/spec/tinder/connection_spec.rb +27 -0
- data/spec/tinder/room_spec.rb +121 -21
- data/tinder.gemspec +5 -5
- metadata +27 -46
checksums.yaml
ADDED
@@ -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
|
data/README.markdown
CHANGED
@@ -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'
|
data/lib/tinder/connection.rb
CHANGED
@@ -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
|
-
|
45
|
-
|
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
|
data/lib/tinder/room.rb
CHANGED
@@ -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
|
-
@
|
102
|
+
@current_users
|
97
103
|
end
|
98
104
|
|
99
|
-
# return the user with the given id; if it isn't in our room cache,
|
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
|
-
|
103
|
-
|
104
|
-
|
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
|
-
#
|
113
|
-
|
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
|
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 (
|
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
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
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
|
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 |
|
225
|
-
|
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(
|
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
|
-
|
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
|
-
@
|
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
|
data/lib/tinder/version.rb
CHANGED
@@ -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
|
data/spec/tinder/room_spec.rb
CHANGED
@@ -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
|
18
|
-
@stream =
|
19
|
-
@stream.stub
|
20
|
-
@stream.stub
|
21
|
-
@stream.stub
|
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
|
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
|
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
|
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
|
184
|
-
@stream.stub
|
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
|
-
|
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
|
-
|
226
|
-
|
227
|
-
|
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
|
data/tinder.gemspec
CHANGED
@@ -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', '
|
10
|
-
gem.add_dependency 'json', '~> 1.
|
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.
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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:
|
234
|
+
rubygems_version: 2.0.3
|
254
235
|
signing_key:
|
255
|
-
specification_version:
|
236
|
+
specification_version: 4
|
256
237
|
summary: Ruby wrapper for the Campfire API
|
257
238
|
test_files:
|
258
239
|
- spec/fixtures/rooms.json
|