mbbx6spp-twitter4r 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/CHANGES +124 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +32 -0
  4. data/TODO +9 -0
  5. data/lib/twitter/client/account.rb +24 -0
  6. data/lib/twitter/client/auth.rb +27 -0
  7. data/lib/twitter/client/base.rb +87 -0
  8. data/lib/twitter/client/blocks.rb +35 -0
  9. data/lib/twitter/client/favorites.rb +53 -0
  10. data/lib/twitter/client/friendship.rb +35 -0
  11. data/lib/twitter/client/messaging.rb +79 -0
  12. data/lib/twitter/client/status.rb +46 -0
  13. data/lib/twitter/client/timeline.rb +72 -0
  14. data/lib/twitter/client/user.rb +65 -0
  15. data/lib/twitter/client.rb +21 -0
  16. data/lib/twitter/config.rb +71 -0
  17. data/lib/twitter/console.rb +28 -0
  18. data/lib/twitter/core.rb +137 -0
  19. data/lib/twitter/ext/stdlib.rb +51 -0
  20. data/lib/twitter/ext.rb +2 -0
  21. data/lib/twitter/extras.rb +39 -0
  22. data/lib/twitter/meta.rb +56 -0
  23. data/lib/twitter/model.rb +348 -0
  24. data/lib/twitter/rails.rb +92 -0
  25. data/lib/twitter/version.rb +19 -0
  26. data/lib/twitter.rb +31 -0
  27. data/spec/twitter/client/auth_spec.rb +34 -0
  28. data/spec/twitter/client/base_spec.rb +242 -0
  29. data/spec/twitter/client/blocks_spec.rb +76 -0
  30. data/spec/twitter/client/favorites_spec.rb +183 -0
  31. data/spec/twitter/client/friendship_spec.rb +76 -0
  32. data/spec/twitter/client/messaging_spec.rb +135 -0
  33. data/spec/twitter/client/status_spec.rb +92 -0
  34. data/spec/twitter/client/timeline_spec.rb +79 -0
  35. data/spec/twitter/client/user_spec.rb +203 -0
  36. data/spec/twitter/client_spec.rb +2 -0
  37. data/spec/twitter/config_spec.rb +86 -0
  38. data/spec/twitter/console_spec.rb +15 -0
  39. data/spec/twitter/core_spec.rb +127 -0
  40. data/spec/twitter/ext/stdlib_spec.rb +42 -0
  41. data/spec/twitter/extras_spec.rb +46 -0
  42. data/spec/twitter/meta_spec.rb +90 -0
  43. data/spec/twitter/model_spec.rb +464 -0
  44. data/spec/twitter/rails_spec.rb +110 -0
  45. data/spec/twitter/version_spec.rb +19 -0
  46. metadata +108 -0
@@ -0,0 +1,464 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ module Test
4
+ class Model
5
+ include Twitter::ModelMixin
6
+ end
7
+ end
8
+
9
+ describe Twitter::Status, "unmarshaling" do
10
+ before(:each) do
11
+ @json_hash = { "text" => "Thinking Zipcar is lame...",
12
+ "id" => 46672912,
13
+ "user" => {"name" => "Angie",
14
+ "description" => "TV junkie...",
15
+ "location" => "NoVA",
16
+ "profile_image_url" => "http:\/\/assets0.twitter.com\/system\/user\/profile_image\/5483072\/normal\/eye.jpg?1177462492",
17
+ "url" => nil,
18
+ "id" => 5483072,
19
+ "protected" => false,
20
+ "screen_name" => "ang_410"},
21
+ "created_at" => "Wed May 02 03:04:54 +0000 2007"}
22
+ @user = Twitter::User.new @json_hash["user"]
23
+ @status = Twitter::Status.new @json_hash
24
+ @status.user = @user
25
+ end
26
+
27
+ it "should respond to unmarshal class method" do
28
+ Twitter::Status.should respond_to(:unmarshal)
29
+ end
30
+
31
+ it "should return expected Twitter::Status object for singular case" do
32
+ status = Twitter::Status.unmarshal(JSON.unparse(@json_hash))
33
+ status.should_not be(nil)
34
+ status.should eql(@status)
35
+ end
36
+
37
+ it "should return expected array of Twitter::Status objects for plural case" do
38
+ statuses = Twitter::Status.unmarshal(JSON.unparse([@json_hash]))
39
+ statuses.should_not be(nil)
40
+ statuses.should have(1).entries
41
+ statuses.first.should eql(@status)
42
+ end
43
+ end
44
+
45
+ describe Twitter::User, "unmarshaling" do
46
+ before(:each) do
47
+ @json_hash = { "name" => "Lucy Snowe",
48
+ "description" => "School Mistress Entrepreneur",
49
+ "location" => "Villette",
50
+ "url" => "http://villetteschoolforgirls.com",
51
+ "id" => 859303,
52
+ "protected" => true,
53
+ "screen_name" => "LucyDominatrix", }
54
+ @user = Twitter::User.new @json_hash
55
+ end
56
+
57
+ it "should respond to unmarshal class method" do
58
+ Twitter::User.should respond_to(:unmarshal)
59
+ end
60
+
61
+ it "should return expected arry of Twitter::User objects for plural case" do
62
+ users = Twitter::User.unmarshal(JSON.unparse([@json_hash]))
63
+ users.should have(1).entries
64
+ users.first.should eql(@user)
65
+ end
66
+
67
+ it "should return expected Twitter::User object for singular case" do
68
+ user = Twitter::User.unmarshal(JSON.unparse(@json_hash))
69
+ user.should_not be(nil)
70
+ user.should eql(@user)
71
+ end
72
+ end
73
+
74
+ describe "Twitter::ModelMixin#to_hash" do
75
+ before(:all) do
76
+ class Model
77
+ include Twitter::ModelMixin
78
+ @@ATTRIBUTES = [:id, :name, :value, :unused_attr]
79
+ attr_accessor *@@ATTRIBUTES
80
+ def self.attributes; @@ATTRIBUTES; end
81
+ end
82
+
83
+ class Hash
84
+ def eql?(other)
85
+ return false unless other # trivial nil case.
86
+ return false unless self.keys.eql?(other.keys)
87
+ self.each do |key,val|
88
+ return false unless self[key].eql?(other[key])
89
+ end
90
+ true
91
+ end
92
+ end
93
+ end
94
+
95
+ before(:each) do
96
+ @attributes = {:id => 14, :name => 'State', :value => 'Illinois'}
97
+ @model = Model.new(@attributes)
98
+ end
99
+
100
+ it "should return expected hash representation of given model object" do
101
+ @model.to_hash.should eql(@attributes)
102
+ end
103
+
104
+ after(:each) do
105
+ nilize(@attributes, @model)
106
+ end
107
+ end
108
+
109
+ describe Twitter::User, ".find" do
110
+ before(:each) do
111
+ @twitter = Twitter::Client.from_config 'config/twitter.yml'
112
+ @id = 2423423
113
+ @screen_name = 'ascreenname'
114
+ @expected_user = Twitter::User.new(:id => @id, :screen_name => @screen_name)
115
+ end
116
+
117
+ it "should invoke given Twitter::Client's #user method with expected arguments" do
118
+ # case where id => @id
119
+ @twitter.should_receive(:user).with(@id).and_return(@expected_user)
120
+ user = Twitter::User.find(@id, @twitter)
121
+ user.should eql(@expected_user)
122
+
123
+ # case where id => @screen_name, which is also valid
124
+ @twitter.should_receive(:user).with(@screen_name).and_return(@expected_user)
125
+ user = Twitter::User.find(@screen_name, @twitter)
126
+ user.should eql(@expected_user)
127
+ end
128
+
129
+ after(:each) do
130
+ nilize(@twitter, @id, @screen_name, @expected_user)
131
+ end
132
+ end
133
+
134
+ describe Twitter::Status, ".find" do
135
+ before(:each) do
136
+ @twitter = Twitter::Client.from_config 'config/twitter.yml'
137
+ @id = 9439843
138
+ @text = 'My crummy status message'
139
+ @user = Twitter::User.new(:id => @id, :screen_name => @screen_name)
140
+ @expected_status = Twitter::Status.new(:id => @id, :text => @text, :user => @user)
141
+ end
142
+
143
+ it "should invoke given Twitter::Client's #status method with expected arguments" do
144
+ @twitter.should_receive(:status).with(:get, @id).and_return(@expected_status)
145
+ status = Twitter::Status.find(@id, @twitter)
146
+ status.should eql(@expected_status)
147
+ end
148
+
149
+ after(:each) do
150
+ nilize(@twitter, @id, @text, @user, @expected_status)
151
+ end
152
+ end
153
+
154
+ describe Test::Model, "#bless" do
155
+ before(:each) do
156
+ @twitter = Twitter::Client.from_config('config/twitter.yml')
157
+ @model = Test::Model.new
158
+ end
159
+
160
+ it "should delegate to #basic_bless" do
161
+ @model.should_receive(:basic_bless).and_return(@twitter)
162
+ @model.bless(@twitter)
163
+ end
164
+
165
+ it "should set client attribute of self" do
166
+ @model.should_receive(:client=).once
167
+ @model.bless(@twitter)
168
+ end
169
+
170
+ after(:each) do
171
+ nilize(@model, @twitter)
172
+ end
173
+ end
174
+
175
+ describe Twitter::User, "#is_me?" do
176
+ before(:each) do
177
+ @twitter = Twitter::Client.from_config('config/twitter.yml')
178
+ @user_not_me = Twitter::User.new(:screen_name => 'notmylogin')
179
+ @user_me = Twitter::User.new(:screen_name => @twitter.instance_eval("@login"))
180
+ @user_not_me.bless(@twitter)
181
+ @user_me.bless(@twitter)
182
+ end
183
+
184
+ it "should return true when Twitter::User object represents authenticated user of client context" do
185
+ @user_me.is_me?.should be_true
186
+ end
187
+
188
+ it "should return false when Twitter::User object does not represent authenticated user of client context" do
189
+ @user_not_me.is_me?.should be_false
190
+ end
191
+
192
+ after(:each) do
193
+ nilize(@twitter, @user_not_me, @user_me)
194
+ end
195
+ end
196
+
197
+ describe Twitter::User, "#friends" do
198
+ before(:each) do
199
+ @twitter = Twitter::Client.from_config('config/twitter.yml')
200
+ @id = 5701682
201
+ @user = Twitter::User.new(:id => @id, :screen_name => 'twitter4r')
202
+ @user.bless(@twitter)
203
+ end
204
+
205
+ it "should delegate to @client.user(@id, :friends)" do
206
+ @twitter.should_receive(:user).with(@id, :friends)
207
+ @user.friends
208
+ end
209
+
210
+ after(:each) do
211
+ nilize(@twitter, @id, @user)
212
+ end
213
+ end
214
+
215
+ describe Twitter::User, "#followers" do
216
+ before(:each) do
217
+ @twitter = Twitter::Client.from_config('config/twitter.yml')
218
+ @id = 5701682
219
+ @user = Twitter::User.new(:id => @id, :screen_name => 'twitter4r')
220
+ @user.bless(@twitter)
221
+ end
222
+
223
+ it "should delegate to @client.my(:followers)" do
224
+ @twitter.should_receive(:my).with(:followers, {})
225
+ @user.followers
226
+ end
227
+
228
+ after(:each) do
229
+ nilize(@twitter, @id, @user)
230
+ end
231
+ end
232
+
233
+ describe Test::Model, "#to_i" do
234
+ before(:each) do
235
+ @id = 234324285
236
+ class Test::Model
237
+ attr_accessor :id
238
+ end
239
+ @model = Test::Model.new(:id => @id)
240
+ end
241
+
242
+ it "should return @id attribute" do
243
+ @model.to_i.should eql(@id)
244
+ end
245
+
246
+ after(:each) do
247
+ nilize(@model, @id)
248
+ end
249
+ end
250
+
251
+ describe Test::Model, "#to_s" do
252
+ before(:each) do
253
+ class Test::Model
254
+ attr_accessor :text
255
+ end
256
+ @text = 'Some text for the message body here'
257
+ @model = Test::Model.new(:text => @text)
258
+ end
259
+
260
+ it "should return expected text when a @text attribute exists for the model" do
261
+ @model.to_s.should eql(@text)
262
+ end
263
+
264
+ after(:each) do
265
+ nilize(@model)
266
+ end
267
+ end
268
+
269
+ describe Twitter::Message, ".find" do
270
+ it "should raise NotImplementedError due to Twitter (as opposed to Twitter4R) API limitation" do
271
+ lambda {
272
+ Twitter::Message.find(123, nil)
273
+ }.should raise_error(NotImplementedError)
274
+ end
275
+ end
276
+
277
+ describe Twitter::Status, ".create" do
278
+ before(:each) do
279
+ @twitter = client_context
280
+ @text = 'My status update'
281
+ @status = Twitter::Status.new(:text => @text, :client => @twitter)
282
+ end
283
+
284
+ it "should invoke #status(:post, text) on client context given" do
285
+ @twitter.should_receive(:status).with(:post, @text).and_return(@status)
286
+ Twitter::Status.create(:text => @text, :client => @twitter)
287
+ end
288
+
289
+ it "should raise an ArgumentError when no client is given in params" do
290
+ lambda {
291
+ Twitter::Status.create(:text => @text)
292
+ }.should raise_error(ArgumentError)
293
+ end
294
+
295
+ it "should raise an ArgumentError when no text is given in params" do
296
+ @twitter.should_receive(:is_a?).with(Twitter::Client)
297
+ lambda {
298
+ Twitter::Status.create(:client => @twitter)
299
+ }.should raise_error(ArgumentError)
300
+ end
301
+
302
+ it "should raise an ArgumentError when text given in params is not a String" do
303
+ lambda {
304
+ Twitter::Status.create(:client => @twitter, :text => 234493)
305
+ }.should raise_error(ArgumentError)
306
+ end
307
+
308
+ it "should raise an ArgumentError when client context given in params is not a Twitter::Client object" do
309
+ lambda {
310
+ Twitter::Status.create(:client => 'a string instead of a Twitter::Client', :text => @text)
311
+ }.should raise_error(ArgumentError)
312
+ end
313
+
314
+ after(:each) do
315
+ nilize(@twitter, @text, @status)
316
+ end
317
+ end
318
+
319
+ describe Twitter::Message, ".create" do
320
+ before(:each) do
321
+ @twitter = client_context
322
+ @text = 'Just between you and I, Lantana and Gosford Park are two of my favorite movies'
323
+ @recipient = Twitter::User.new(:id => 234958)
324
+ @message = Twitter::Message.new(:text => @text, :recipient => @recipient)
325
+ end
326
+
327
+ it "should invoke #message(:post, text, recipient) on client context given" do
328
+ @twitter.should_receive(:message).with(:post, @text, @recipient).and_return(@message)
329
+ Twitter::Message.create(:client => @twitter, :text => @text, :recipient => @recipient)
330
+ end
331
+
332
+ it "should raise an ArgumentError if no client context is given in params" do
333
+ lambda {
334
+ Twitter::Message.create(:text => @text, :recipient => @recipient)
335
+ }.should raise_error(ArgumentError)
336
+ end
337
+
338
+ it "should raise an ArgumentError if client conext given in params is not a Twitter::Client object" do
339
+ lambda {
340
+ Twitter::Message.create(
341
+ :client => 3.14159,
342
+ :text => @text,
343
+ :recipient => @recipient)
344
+ }.should raise_error(ArgumentError)
345
+ end
346
+
347
+ it "should raise an ArgumentError if no text is given in params" do
348
+ @twitter.should_receive(:is_a?).with(Twitter::Client)
349
+ lambda {
350
+ Twitter::Message.create(
351
+ :client => @twitter,
352
+ :recipient => @recipient)
353
+ }.should raise_error(ArgumentError)
354
+ end
355
+
356
+ it "should raise an ArgumentError if text given in params is not a String" do
357
+ @twitter.should_receive(:is_a?).with(Twitter::Client)
358
+ lambda {
359
+ Twitter::Message.create(
360
+ :client => @twitter,
361
+ :text => Object.new,
362
+ :recipient => @recipient)
363
+ }.should raise_error(ArgumentError)
364
+ end
365
+
366
+ it "should raise an ArgumentError if no recipient is given in params" do
367
+ @text.should_receive(:is_a?).with(String)
368
+ lambda {
369
+ Twitter::Message.create(
370
+ :client => @twitter,
371
+ :text => @text)
372
+ }.should raise_error(ArgumentError)
373
+ end
374
+
375
+ it "should raise an ArgumentError if recipient given in params is not a Twitter::User, Integer or String object" do
376
+ @text.should_receive(:is_a?).with(String)
377
+ lambda {
378
+ Twitter::Message.create(
379
+ :client => @twitter,
380
+ :text => @text,
381
+ :recipient => 3.14159)
382
+ }.should raise_error(ArgumentError)
383
+ end
384
+
385
+ after(:each) do
386
+ nilize(@twitter, @text, @recipient, @message)
387
+ end
388
+ end
389
+
390
+ describe Twitter::User, "#befriend" do
391
+ before(:each) do
392
+ @twitter = client_context
393
+ @user = Twitter::User.new(
394
+ :id => 1234,
395
+ :screen_name => 'mylogin',
396
+ :client => @twitter)
397
+ @friend = Twitter::User.new(
398
+ :id => 5678,
399
+ :screen_name => 'friend',
400
+ :client => @twitter)
401
+ end
402
+
403
+ it "should invoke #friend(:add, user) on client context" do
404
+ @twitter.should_receive(:friend).with(:add, @friend).and_return(@friend)
405
+ @user.befriend(@friend)
406
+ end
407
+
408
+ after(:each) do
409
+ nilize(@twitter, @user, @friend)
410
+ end
411
+ end
412
+
413
+ describe Twitter::User, "#defriend" do
414
+ before(:each) do
415
+ @twitter = client_context
416
+ @user = Twitter::User.new(
417
+ :id => 1234,
418
+ :screen_name => 'mylogin',
419
+ :client => @twitter)
420
+ @friend = Twitter::User.new(
421
+ :id => 5678,
422
+ :screen_name => 'friend',
423
+ :client => @twitter)
424
+ end
425
+
426
+ it "should invoke #friend(:remove, user) on client context" do
427
+ @twitter.should_receive(:friend).with(:remove, @friend).and_return(@friend)
428
+ @user.defriend(@friend)
429
+ end
430
+
431
+ after(:each) do
432
+ nilize(@twitter, @user, @friend)
433
+ end
434
+ end
435
+
436
+ describe Twitter::Status, "#to_s" do
437
+ before(:each) do
438
+ @text = 'Aloha'
439
+ @status = Twitter::Status.new(:text => @text)
440
+ end
441
+
442
+ it "should render text attribute" do
443
+ @status.to_s.should be(@text)
444
+ end
445
+
446
+ after(:each) do
447
+ nilize(@text, @status)
448
+ end
449
+ end
450
+
451
+ describe Twitter::Message, "#to_s" do
452
+ before(:each) do
453
+ @text = 'Aloha'
454
+ @message = Twitter::Message.new(:text => @text)
455
+ end
456
+
457
+ it "should render text attribute" do
458
+ @message.to_s.should be(@text)
459
+ end
460
+
461
+ after(:each) do
462
+ nilize(@text, @message)
463
+ end
464
+ end
@@ -0,0 +1,110 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe String, "representing a class name" do
4
+
5
+ before(:each) do
6
+ @class_name = Twitter::User.class.name
7
+ @xmlized_name = @class_name.downcase # simple case for the moment...since Rails' support for namespaced models sucks!
8
+ end
9
+
10
+ it "should be downcased (minus module namespaces) when xmlized" do
11
+ @class_name.xmlize.should eql(@xmlized_name)
12
+ end
13
+
14
+ after(:each) do
15
+ nilize(@class_name, @xmlized_name)
16
+ end
17
+ end
18
+
19
+ describe "Rails model extensions for model classes", :shared => true do
20
+
21
+ before(:each) do
22
+ @id = 3242334
23
+ @id_s = @id.to_s
24
+ @model = model(@id)
25
+ @model_hash = @model.to_hash
26
+ @json = JSON.unparse(@model_hash)
27
+ @serializer = ActiveRecord::XmlSerializer.new(@model, {:root => @model.class.name.downcase})
28
+ @xml = @serializer.to_s
29
+ end
30
+
31
+ it "should invoke #to_param as expected" do
32
+ @model.should_receive(:id).and_return(@id)
33
+ @model.to_param
34
+ end
35
+
36
+ it "should return string representation for id for #to_param" do
37
+ @model.to_param.class.should eql(String)
38
+ end
39
+
40
+ it "should return output from JSON.unparse for #to_json" do
41
+ @model.should_receive(:to_hash).and_return(@model_hash)
42
+ JSON.should_receive(:unparse).and_return(@json)
43
+ @model.to_json
44
+ end
45
+
46
+ it "should return XmlSerializer string output for #to_xml" do
47
+ ActiveRecord::XmlSerializer.should_receive(:new).and_return(@serializer)
48
+ @serializer.should_receive(:to_s).and_return(@xml)
49
+ @model.to_xml
50
+ end
51
+
52
+ after(:each) do
53
+ nilize(@id, @model)
54
+ end
55
+ end
56
+
57
+ describe Twitter::User, "Rails extensions" do
58
+
59
+ def model(id)
60
+ Twitter::User.new(:id => id)
61
+ end
62
+
63
+ it_should_behave_like "Rails model extensions for model classes"
64
+ end
65
+
66
+ describe Twitter::Status, "Rails extensions" do
67
+
68
+ def model(id)
69
+ Twitter::Status.new(:id => id)
70
+ end
71
+
72
+ it_should_behave_like "Rails model extensions for model classes"
73
+ end
74
+
75
+ describe Twitter::Message, "Rails extensions" do
76
+
77
+ def model(id)
78
+ Twitter::Message.new(:id => id)
79
+ end
80
+
81
+ it_should_behave_like "Rails model extensions for model classes"
82
+ end
83
+
84
+ describe Twitter::RESTError, "Rails extensions" do
85
+
86
+ before(:each) do
87
+ @attributes = { :code => 200, :message => 'Success', :uri => 'http://twitter.com/statuses' }
88
+ @model = Twitter::RESTError.new(@attributes)
89
+ @json = "JSON" # doesn't really matter what the value is
90
+ end
91
+
92
+ it "should return a Hash of attribute name-value pairs for #to_hash" do
93
+ @model.to_hash.should === @attributes
94
+ end
95
+
96
+ it "should invoke XmlSerializer for #to_xml" do
97
+
98
+ @model.to_xml
99
+ end
100
+
101
+ it "should return expected JSON for #to_json" do
102
+ @model.to_hash
103
+ JSON.should_receive(:unparse).and_return(@json)
104
+ @model.to_json
105
+ end
106
+
107
+ after(:each) do
108
+ nilize(@attributes, @model)
109
+ end
110
+ end
@@ -0,0 +1,19 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ VERSION_LIST = [Twitter::Version::MAJOR, Twitter::Version::MINOR, Twitter::Version::REVISION]
4
+
5
+ EXPECTED_VERSION = VERSION_LIST.join('.')
6
+ EXPECTED_NAME = VERSION_LIST.join('_')
7
+
8
+ describe Twitter::Version, ".to_version" do
9
+ it "should return #{EXPECTED_VERSION}" do
10
+ Twitter::Version.to_version.should eql(EXPECTED_VERSION)
11
+ end
12
+ end
13
+
14
+ describe Twitter::Version, ".to_name" do
15
+ it "should return #{EXPECTED_NAME}" do
16
+ Twitter::Version.to_name.should eql(EXPECTED_NAME)
17
+ end
18
+ end
19
+
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mbbx6spp-twitter4r
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
5
+ platform: ruby
6
+ authors:
7
+ - Susan Potter
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-27 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.1.1
23
+ version:
24
+ description:
25
+ email: twitter4r-users@googlegroups.com
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - README
32
+ - CHANGES
33
+ - TODO
34
+ - MIT-LICENSE
35
+ files:
36
+ - lib/twitter/extras.rb
37
+ - lib/twitter/config.rb
38
+ - lib/twitter/core.rb
39
+ - lib/twitter/client/blocks.rb
40
+ - lib/twitter/client/account.rb
41
+ - lib/twitter/client/timeline.rb
42
+ - lib/twitter/client/messaging.rb
43
+ - lib/twitter/client/base.rb
44
+ - lib/twitter/client/favorites.rb
45
+ - lib/twitter/client/status.rb
46
+ - lib/twitter/client/friendship.rb
47
+ - lib/twitter/client/auth.rb
48
+ - lib/twitter/client/user.rb
49
+ - lib/twitter/rails.rb
50
+ - lib/twitter/client.rb
51
+ - lib/twitter/console.rb
52
+ - lib/twitter/version.rb
53
+ - lib/twitter/model.rb
54
+ - lib/twitter/meta.rb
55
+ - lib/twitter/ext.rb
56
+ - lib/twitter/ext/stdlib.rb
57
+ - lib/twitter.rb
58
+ - spec/twitter/config_spec.rb
59
+ - spec/twitter/core_spec.rb
60
+ - spec/twitter/model_spec.rb
61
+ - spec/twitter/client/status_spec.rb
62
+ - spec/twitter/client/timeline_spec.rb
63
+ - spec/twitter/client/auth_spec.rb
64
+ - spec/twitter/client/user_spec.rb
65
+ - spec/twitter/client/messaging_spec.rb
66
+ - spec/twitter/client/base_spec.rb
67
+ - spec/twitter/client/favorites_spec.rb
68
+ - spec/twitter/client/friendship_spec.rb
69
+ - spec/twitter/client/blocks_spec.rb
70
+ - spec/twitter/version_spec.rb
71
+ - spec/twitter/rails_spec.rb
72
+ - spec/twitter/client_spec.rb
73
+ - spec/twitter/meta_spec.rb
74
+ - spec/twitter/console_spec.rb
75
+ - spec/twitter/extras_spec.rb
76
+ - spec/twitter/ext/stdlib_spec.rb
77
+ - README
78
+ - CHANGES
79
+ - TODO
80
+ - MIT-LICENSE
81
+ has_rdoc: true
82
+ homepage: http://twitter4r.rubyforge.org
83
+ post_install_message:
84
+ rdoc_options: []
85
+
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: "0"
93
+ version:
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: "0"
99
+ version:
100
+ requirements: []
101
+
102
+ rubyforge_project: twitter4r
103
+ rubygems_version: 1.2.0
104
+ signing_key:
105
+ specification_version: 2
106
+ summary: A clean Twitter client API in pure Ruby. Will include Twitter add-ons also in Ruby.
107
+ test_files: []
108
+