twitter 4.5.0 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ oq
2
+ ;[�=Y�3�fe�a�p
3
+ Z�VۭV &'.3"p�zd1S���Ru"+\r�iF��%�=Dr�_���ǵ~���xM�O��1.�O�ߏ1���E�ݥ;=�>�uݭ���~3��|B�͠�gO~��}��D�&E[wy���k�W�����W*��=�t�c��fO��O0�%I�=�fص��k":j菃p�7E�p/�28����1A%�i� 2I �!�n
@@ -1,6 +1,13 @@
1
+ 4.6.0
2
+ -----
3
+ * [Make `Twitter::Base#attrs` call methods if they exist](https://github.com/sferik/twitter/commit/ff4f2daccd1acdfddcea7139d4dd6490b55129db)
4
+ * [Allow `Twitter::API::Tweets#oembed` and `Twitter::API::Tweets#oembeds` to take a URL](https://github.com/sferik/twitter/commit/0d986fa4b0c254e8c816bce086c3f6648d8fd3d7) ([@bshelton229](https://twitter.com/bshelton229))
5
+ * [Add `Twitter::Tweet#filter_level` and `Twitter##Tweet#lang` attribute readers](https://github.com/sferik/twitter/commit/283aafbe1219e55f19a76517d9edce497001fca2)
6
+ * [Add "Quick Start Guide" to the `README`](https://github.com/sferik/twitter/commit/afc24ee1bd07f19ef7fb8fd6b85aede34f3ab156) ([@coreyhaines](https://twitter.com/coreyhaines))
7
+
1
8
  4.5.0
2
9
  -----
3
- * [Add no_retweet_ids](https://github.com/sferik/twitter/commit/cab8d6ebf3afdbd24463932262798a132d70a6f1)
10
+ * [Add no_retweet_ids](https://github.com/sferik/twitter/commit/cab8d6ebf3afdbd24463932262798a132d70a6f1) ([@tibbon](https://twitter.com/tibbon))
4
11
 
5
12
  4.4.4
6
13
  -----
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2006-2012 John Nunemaker, Wynn Netherland, Erik Michaels-Ober, Steve Richert
1
+ Copyright (c) 2006-2013 John Nunemaker, Wynn Netherland, Erik Michaels-Ober, Steve Richert
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,31 +1,67 @@
1
1
  # The Twitter Ruby Gem
2
+
2
3
  [![Gem Version](https://badge.fury.io/rb/twitter.png)][gem]
3
4
  [![Build Status](https://secure.travis-ci.org/sferik/twitter.png?branch=master)][travis]
4
5
  [![Dependency Status](https://gemnasium.com/sferik/twitter.png?travis)][gemnasium]
5
- [![Code Climate](https://codeclimate.com/badge.png)][codeclimate]
6
+ [![Code Climate](https://codeclimate.com/github/sferik/twitter.png)][codeclimate]
7
+ [![Coverage Status](https://coveralls.io/repos/sferik/twitter/badge.png?branch=master)][coveralls]
6
8
  [![Click here to make a donation](http://www.pledgie.com/campaigns/18388.png)][pledgie]
7
9
 
8
10
  [gem]: https://rubygems.org/gems/twitter
9
11
  [travis]: http://travis-ci.org/sferik/twitter
10
12
  [gemnasium]: https://gemnasium.com/sferik/twitter
11
13
  [codeclimate]: https://codeclimate.com/github/sferik/twitter
14
+ [coveralls]: https://coveralls.io/r/sferik/twitter
12
15
  [pledgie]: http://pledgie.com/campaigns/18388
13
16
 
14
17
  A Ruby interface to the Twitter API.
15
18
 
16
19
  ## Installation
17
- ```sh
18
- gem install twitter
20
+ gem install twitter
21
+
22
+ To ensure the code you're installing hasn't been tampered with, it's
23
+ recommended that you verify the signature. To do this, you need to add my
24
+ public key as a trusted certificate (you only need to do this once):
25
+
26
+ gem cert --add <(curl -Ls https://gist.github.com/sferik/4701180/raw/public_cert.pem)
27
+
28
+ Then, install the gem with the high security trust policy:
29
+
30
+ gem install twitter -P HighSecurity
31
+
32
+ ## Quick Start Guide
33
+ So you want to get up and tweeting as fast as possible?
34
+
35
+ First, [register your application with Twitter][register].
36
+
37
+ Then, copy and paste in your OAuth data.
38
+
39
+ ```ruby
40
+ Twitter.configure do |config|
41
+ config.consumer_key = YOUR_CONSUMER_KEY
42
+ config.consumer_secret = YOUR_CONSUMER_SECRET
43
+ config.oauth_token = YOUR_OAUTH_TOKEN
44
+ config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
45
+ end
19
46
  ```
20
47
 
48
+ That's it! You're ready to Tweet:
49
+ ```ruby
50
+ Twitter.update("I'm tweeting with @gem!")
51
+ ```
52
+
53
+ For more examples of how to use the gem, read the [documentation][] or see [Usage Examples][] below.
54
+
55
+ [register]: https://dev.twitter.com/apps/new
56
+ [Usage Examples]: #usage-examples
57
+
58
+ ## CLI
59
+
21
60
  Looking for the Twitter command-line interface? It was [removed][] from this
22
- gem in version 0.5.0 and now exists as a [separate project][separate]:
61
+ gem in version 0.5.0 and now exists as a [separate project][t].
23
62
 
24
- ```sh
25
- gem install t
26
- ```
27
63
  [removed]: https://github.com/sferik/twitter/commit/dd2445e3e2c97f38b28a3f32ea902536b3897adf
28
- [separate]: https://github.com/sferik/t
64
+ [t]: https://github.com/sferik/t
29
65
 
30
66
  ## Documentation
31
67
  [http://rdoc.info/gems/twitter][documentation]
@@ -49,132 +85,11 @@ wiki][apps]!
49
85
 
50
86
  [apps]: https://github.com/sferik/twitter/wiki/apps
51
87
 
52
- ## What's new in version 4?
53
-
54
- #### Twitter API v1.1
55
-
56
- Version 4 of this library targets Twitter API v1.1. To understand the
57
- implications of this change, please read the following announcements from
58
- Twitter:
59
-
60
- * [Changes coming in Version 1.1 of the Twitter API][coming]
61
- * [Current status: API v1.1][status]
62
- * [Overview: Version 1.1 of the Twitter API][overview]
63
-
64
- [coming]: https://dev.twitter.com/blog/changes-coming-to-twitter-api
65
- [status]: https://dev.twitter.com/blog/current-status-api-v1.1
66
- [overview]: https://dev.twitter.com/docs/api/1.1/overview
67
-
68
- Despite the removal of certain underlying functionality in Twitter API v1.1,
69
- this library aims to preserve backward-compatibility wherever possible. For
70
- example, despite the removal of the [`GET
71
- statuses/retweeted_by_user`][retweeted_by_user] resource, the
72
- `Twitter::API#retweeted_by_user` method continues to exist, implemented by
73
- making multiple requests to the [`GET statuses/user_timeline`][user_timeline]
74
- resource. As a result, there is no longer a one-to-one correlation between
75
- method calls and Twitter API requests. In fact, it's possible for a single
76
- method call to exceed the Twitter API rate limit for a resource. If you think
77
- this might cause a problem for your application, feel free to [join the
78
- discussion][discussion].
79
-
80
- [retweeted_by_user]: https://dev.twitter.com/docs/api/1/get/statuses/retweeted_by_user
81
- [user_timeline]: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
82
- [discussion]: https://dev.twitter.com/discussions/10644
83
-
84
- #### Rate Limiting
85
-
86
- Another consequence of Twitter API v1.1 is that the
87
- `Twitter::Client#rate_limit` method has been removed, since the concept of a
88
- client-wide rate limit no longer exists. Rate limits are now applied on a
89
- per-resource level, however, since there is no longer a one-to-one mapping
90
- between methods and Twitter API resources, it's not entirely obvious how rate
91
- limit information should be exposed. I've decided to go back to the pre-3.0.0
92
- behavior of including rate limit information on `Twitter::Error` objects.
93
- Here's an example of how to handle rate limits:
94
-
95
- ```ruby
96
- MAX_ATTEMPTS = 3
97
- num_attempts = 0
98
- begin
99
- num_attempts += 1
100
- retweets = Twitter.retweeted_by_user("sferik")
101
- rescue Twitter::Error::TooManyRequests => error
102
- if num_attempts <= MAX_ATTEMPTS
103
- # NOTE: Your process could go to sleep for up to 15 minutes but if you
104
- # retry any sooner, it will almost certainly fail with the same exception.
105
- sleep error.rate_limit.reset_in
106
- retry
107
- else
108
- raise
109
- end
110
- end
111
- ```
112
- #### Methods Missing
113
-
114
- As a consequence of moving to Twitter API v1.1, the following methods from
115
- version 3 are no longer available in version 4:
116
-
117
- * `Twitter::API#accept`
118
- * `Twitter::API#deny`
119
- * `Twitter::API#disable_notifications`
120
- * `Twitter::API#enable_notifications`
121
- * `Twitter::API#end_session`
122
- * `Twitter::API#rate_limit_status`
123
- * `Twitter::API#rate_limited?`
124
- * `Twitter::API#recommendations`
125
- * `Twitter::API#related_results`
126
- * `Twitter::API#retweeted_to_user`
127
- * `Twitter::API#trends_daily`
128
- * `Twitter::API#trends_weekly`
129
- * `Twitter::Client#rate_limit`
130
- * `Twitter::RateLimit#class`
131
-
132
- #### Custom Endpoints
133
-
134
- The `Twitter::API#update_with_media` method no longer uses the custom
135
- `upload.twitter.com` endpoint, so `media_endpoint` configuration has been
136
- removed. Likewise, the `Twitter::API#search` method no longer uses the custom
137
- `search.twitter.com` endpoint, so `search_endpoint` configuration has also been
138
- removed.
139
-
140
- #### Errors
141
-
142
- It's worth mentioning new error classes:
143
-
144
- * `Twitter::Error::GatewayTimeout`
145
- * `Twitter::Error::TooManyRequests`
146
- * `Twitter::Error::UnprocessableEntity`
147
-
148
- In previous versions of this library, rate limit errors were indicated by
149
- raising either `Twitter::Error::BadRequest` or
150
- `Twitter::Error::EnhanceYourCalm` (for the Search API). As of version 4, the
151
- library will raise `Twitter::Error::TooManyRequests` for all rate limit errors.
152
- The `Twitter::Error::EnhanceYourCalm` class has been aliased to
153
- `Twitter::Error::TooManyRequests`.
154
-
155
- #### Identity Map
156
-
157
- In version 4, the identity map is [disabled by default][disabled]. If you want
158
- to enable this feature, you can use the [default identity map][default] or
159
- [write a custom identity map][custom].
160
-
161
- ```ruby
162
- Twitter.identity_map = Twitter::IdentityMap
163
- ```
164
-
165
- [disabled]: https://github.com/sferik/twitter/commit/c6c5960bea998abdc3e82cbb8dd68766a2df52e1
166
- [default]: https://github.com/sferik/twitter/blob/master/lib/twitter/identity_map.rb
167
- [custom]: https://github.com/sferik/twitter/blob/master/etc/sqlite_identity_map.rb
168
-
169
88
  ## Configuration
170
-
171
- Twitter API v1.1 requires you to authenticate via OAuth, so you'll need a
172
- registered Twitter application. To register a new application, sign-in using
173
- your Twitter account and the fill out the form at
174
- http://dev.twitter.com/apps/new. If you've previously registered a Twitter
175
- application, it will be listed at http://dev.twitter.com/apps. Once you've
176
- registered an application, make sure to set the correct access level, otherwise
177
- you may see the error:
89
+ Twitter API v1.1 requires you to authenticate via OAuth, so you'll need to
90
+ [register your application with Twitter][register]. Once you've registered an
91
+ application, make sure to set the correct access level, otherwise you may see
92
+ the error:
178
93
 
179
94
  Read-only application cannot POST
180
95
 
@@ -199,12 +114,10 @@ end
199
114
 
200
115
  Alternately, you can set the following environment variables:
201
116
 
202
- ```sh
203
- TWITTER_CONSUMER_KEY
204
- TWITTER_CONSUMER_SECRET
205
- TWITTER_OAUTH_TOKEN
206
- TWITTER_OAUTH_TOKEN_SECRET
207
- ```
117
+ TWITTER_CONSUMER_KEY
118
+ TWITTER_CONSUMER_SECRET
119
+ TWITTER_OAUTH_TOKEN
120
+ TWITTER_OAUTH_TOKEN_SECRET
208
121
 
209
122
  After configuration, requests can be made like so:
210
123
 
@@ -213,7 +126,6 @@ Twitter.update("I'm tweeting with @gem!")
213
126
  ```
214
127
 
215
128
  #### Thread Safety
216
-
217
129
  Applications that make requests on behalf of multiple Twitter users should
218
130
  avoid using global configuration. In this case, you may still specify the
219
131
  `consumer_key` and `consumer_secret` globally. (In a Rails application, this
@@ -230,12 +142,12 @@ Then, for each user's access token/secret pair, instantiate a
230
142
  `Twitter::Client`:
231
143
 
232
144
  ```ruby
233
- @client_erik = Twitter::Client.new(
145
+ erik = Twitter::Client.new(
234
146
  :oauth_token => "Erik's access token",
235
147
  :oauth_token_secret => "Erik's access secret"
236
148
  )
237
149
 
238
- @client_john = Twitter::Client.new(
150
+ john = Twitter::Client.new(
239
151
  :oauth_token => "John's access token",
240
152
  :oauth_token_secret => "John's access secret"
241
153
  )
@@ -244,15 +156,15 @@ Then, for each user's access token/secret pair, instantiate a
244
156
  You can now make threadsafe requests as the authenticated user:
245
157
 
246
158
  ```ruby
247
- Thread.new{@client_erik.update("Tweeting as Erik!")}
248
- Thread.new{@client_john.update("Tweeting as John!")}
159
+ Thread.new{erik.update("Tweeting as Erik!")}
160
+ Thread.new{john.update("Tweeting as John!")}
249
161
  ```
250
162
 
251
163
  Or, if you prefer, you can specify all configuration options when instantiating
252
164
  a `Twitter::Client`:
253
165
 
254
166
  ```ruby
255
- @client = Twitter::Client.new(
167
+ client = Twitter::Client.new(
256
168
  :consumer_key => "an application's consumer key",
257
169
  :consumer_secret => "an application's consumer secret",
258
170
  :oauth_token => "a user's access token",
@@ -263,7 +175,6 @@ a `Twitter::Client`:
263
175
  This may be useful if you're using multiple consumer key/secret pairs.
264
176
 
265
177
  #### Middleware
266
-
267
178
  The Faraday middleware stack is fully configurable and is exposed as a
268
179
  `Faraday::Builder` object. You can modify the default middleware in-place:
269
180
 
@@ -360,7 +271,6 @@ Twitter.search("#ruby -rt", :lang => "ja", :count => 1).results.first.text
360
271
  For more usage examples, please see the full [documentation][].
361
272
 
362
273
  ## Streaming
363
-
364
274
  To access the Twitter Streaming API, we recommend [TweetStream][].
365
275
 
366
276
  [tweetstream]: https://github.com/intridea/tweetstream
@@ -374,7 +284,6 @@ recommend [Oj][].
374
284
  [oj]: https://rubygems.org/gems/oj
375
285
 
376
286
  ## Statistics
377
-
378
287
  Here are some fun facts about this library:
379
288
 
380
289
  * It is implemented in just 2,000 lines of Ruby code
@@ -396,13 +305,15 @@ Here are some fun facts about this library:
396
305
 
397
306
  ## Supported Ruby Versions
398
307
  This library aims to support and is [tested against][travis] the following Ruby
399
- version:
308
+ implementations:
400
309
 
401
310
  * Ruby 1.8.7
402
311
  * Ruby 1.9.2
403
312
  * Ruby 1.9.3
404
313
  * Ruby 2.0.0
405
314
 
315
+ If something doesn't work on one of these interpreters, it's a bug.
316
+
406
317
  This library may inadvertently work (or seem to work) on other Ruby
407
318
  implementations, however support will only be provided for the versions listed
408
319
  above.
@@ -410,12 +321,11 @@ above.
410
321
  If you would like this library to support another Ruby version, you may
411
322
  volunteer to be a maintainer. Being a maintainer entails making sure all tests
412
323
  run and pass on that implementation. When something breaks on your
413
- implementation, you will be personally responsible for providing patches in a
414
- timely fashion. If critical issues for a particular implementation exist at the
415
- time of a major release, support for that Ruby version may be dropped.
324
+ implementation, you will be responsible for providing patches in a timely
325
+ fashion. If critical issues for a particular implementation exist at the time
326
+ of a major release, support for that Ruby version may be dropped.
416
327
 
417
328
  ## Versioning
418
-
419
329
  This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations
420
330
  of this scheme should be reported as bugs. Specifically, if a minor or patch
421
331
  version is released that breaks backward compatibility, that version should be
@@ -430,6 +340,116 @@ Constraint][pvc] with two digits of precision. For example:
430
340
  [semver]: http://semver.org/
431
341
  [pvc]: http://docs.rubygems.org/read/chapter/16#page74
432
342
 
343
+ ## What's new in version 4?
344
+ #### Twitter API v1.1
345
+ Version 4 of this library targets Twitter API v1.1. To understand the
346
+ implications of this change, please read the following announcements from
347
+ Twitter:
348
+
349
+ * [Changes coming in Version 1.1 of the Twitter API][coming]
350
+ * [Current status: API v1.1][status]
351
+ * [Overview: Version 1.1 of the Twitter API][overview]
352
+
353
+ [coming]: https://dev.twitter.com/blog/changes-coming-to-twitter-api
354
+ [status]: https://dev.twitter.com/blog/current-status-api-v1.1
355
+ [overview]: https://dev.twitter.com/docs/api/1.1/overview
356
+
357
+ Despite the removal of certain underlying functionality in Twitter API v1.1,
358
+ this library aims to preserve backward-compatibility wherever possible. For
359
+ example, despite the removal of the [`GET
360
+ statuses/retweeted_by_user`][retweeted_by_user] resource, the
361
+ `Twitter::API#retweeted_by_user` method continues to exist, implemented by
362
+ making multiple requests to the [`GET statuses/user_timeline`][user_timeline]
363
+ resource. As a result, there is no longer a one-to-one correlation between
364
+ method calls and Twitter API requests. In fact, it's possible for a single
365
+ method call to exceed the Twitter API rate limit for a resource. If you think
366
+ this might cause a problem for your application, feel free to [join the
367
+ discussion][discussion].
368
+
369
+ [retweeted_by_user]: https://dev.twitter.com/docs/api/1/get/statuses/retweeted_by_user
370
+ [user_timeline]: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
371
+ [discussion]: https://dev.twitter.com/discussions/10644
372
+
373
+ #### Rate Limiting
374
+ Another consequence of Twitter API v1.1 is that the
375
+ `Twitter::Client#rate_limit` method has been removed, since the concept of a
376
+ client-wide rate limit no longer exists. Rate limits are now applied on a
377
+ per-resource level, however, since there is no longer a one-to-one mapping
378
+ between methods and Twitter API resources, it's not entirely obvious how rate
379
+ limit information should be exposed. I've decided to go back to the pre-3.0.0
380
+ behavior of including rate limit information on `Twitter::Error` objects.
381
+ Here's an example of how to handle rate limits:
382
+
383
+ ```ruby
384
+ MAX_ATTEMPTS = 3
385
+ num_attempts = 0
386
+ begin
387
+ num_attempts += 1
388
+ retweets = Twitter.retweeted_by_user("sferik")
389
+ rescue Twitter::Error::TooManyRequests => error
390
+ if num_attempts <= MAX_ATTEMPTS
391
+ # NOTE: Your process could go to sleep for up to 15 minutes but if you
392
+ # retry any sooner, it will almost certainly fail with the same exception.
393
+ sleep error.rate_limit.reset_in
394
+ retry
395
+ else
396
+ raise
397
+ end
398
+ end
399
+ ```
400
+ #### Methods Missing
401
+ As a consequence of moving to Twitter API v1.1, the following methods from
402
+ version 3 are no longer available in version 4:
403
+
404
+ * `Twitter::API#accept`
405
+ * `Twitter::API#deny`
406
+ * `Twitter::API#disable_notifications`
407
+ * `Twitter::API#enable_notifications`
408
+ * `Twitter::API#end_session`
409
+ * `Twitter::API#rate_limit_status`
410
+ * `Twitter::API#rate_limited?`
411
+ * `Twitter::API#recommendations`
412
+ * `Twitter::API#related_results`
413
+ * `Twitter::API#retweeted_to_user`
414
+ * `Twitter::API#trends_daily`
415
+ * `Twitter::API#trends_weekly`
416
+ * `Twitter::Client#rate_limit`
417
+ * `Twitter::RateLimit#class`
418
+
419
+ #### Custom Endpoints
420
+ The `Twitter::API#update_with_media` method no longer uses the custom
421
+ `upload.twitter.com` endpoint, so `media_endpoint` configuration has been
422
+ removed. Likewise, the `Twitter::API#search` method no longer uses the custom
423
+ `search.twitter.com` endpoint, so `search_endpoint` configuration has also been
424
+ removed.
425
+
426
+ #### Errors
427
+ It's worth mentioning new error classes:
428
+
429
+ * `Twitter::Error::GatewayTimeout`
430
+ * `Twitter::Error::TooManyRequests`
431
+ * `Twitter::Error::UnprocessableEntity`
432
+
433
+ In previous versions of this library, rate limit errors were indicated by
434
+ raising either `Twitter::Error::BadRequest` or
435
+ `Twitter::Error::EnhanceYourCalm` (for the Search API). As of version 4, the
436
+ library will raise `Twitter::Error::TooManyRequests` for all rate limit errors.
437
+ The `Twitter::Error::EnhanceYourCalm` class has been aliased to
438
+ `Twitter::Error::TooManyRequests`.
439
+
440
+ #### Identity Map
441
+ In version 4, the identity map is [disabled by default][disabled]. If you want
442
+ to enable this feature, you can use the [default identity map][default] or
443
+ [write a custom identity map][custom].
444
+
445
+ ```ruby
446
+ Twitter.identity_map = Twitter::IdentityMap
447
+ ```
448
+
449
+ [disabled]: https://github.com/sferik/twitter/commit/c6c5960bea998abdc3e82cbb8dd68766a2df52e1
450
+ [default]: lib/twitter/identity_map.rb
451
+ [custom]: etc/sqlite_identity_map.rb
452
+
433
453
  ## Additional Notes
434
454
  This will be the last major version of this library to support Ruby 1.8.
435
455
  Requiring Ruby 1.9 will allow us to [remove][class_variable_get]
@@ -446,7 +466,7 @@ critical security vulnerabilities are discovered.
446
466
  [ruby192]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/367983
447
467
 
448
468
  ## Copyright
449
- Copyright (c) 2006-2012 John Nunemaker, Wynn Netherland, Erik Michaels-Ober, Steve Richert.
469
+ Copyright (c) 2006-2013 John Nunemaker, Wynn Netherland, Erik Michaels-Ober, Steve Richert.
450
470
  See [LICENSE][] for details.
451
471
 
452
- [license]: https://github.com/sferik/twitter/blob/master/LICENSE.md
472
+ [license]: LICENSE.md
@@ -115,7 +115,7 @@ module Twitter
115
115
  # Allows the authenticating user to follow the specified users, unless they are already followed
116
116
  #
117
117
  # @see https://dev.twitter.com/docs/api/1.1/post/friendships/create
118
- # @rate_limited No
118
+ # @rate_limited Yes
119
119
  # @authentication Requires user context
120
120
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
121
121
  # @return [Array<Twitter::User>] The followed users.
@@ -259,7 +259,7 @@ module Twitter
259
259
  # @authentication Requires user context
260
260
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
261
261
  # @return [Twitter::Cursor]
262
- # @overload friend_ids(options={})
262
+ # @overload followers(options={})
263
263
  # Returns an array of numeric IDs for every user the authenticated user is following
264
264
  #
265
265
  # @param options [Hash] A customizable set of options.
@@ -267,8 +267,8 @@ module Twitter
267
267
  # @option options [Boolean, String, Integer] :skip_status Do not include contributee's Tweets when set to true, 't' or 1.
268
268
  # @option options [Boolean, String, Integer] :include_user_entities The user entities node will be disincluded when set to false.
269
269
  # @example Return the authenticated user's friends' IDs
270
- # Twitter.friend_ids
271
- # @overload friend_ids(user, options={})
270
+ # Twitter.followers
271
+ # @overload followers(user, options={})
272
272
  # Returns an array of numeric IDs for every user the specified user is following
273
273
  #
274
274
  # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, or object.
@@ -290,7 +290,7 @@ module Twitter
290
290
  # @authentication Requires user context
291
291
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
292
292
  # @return [Twitter::Cursor]
293
- # @overload friend_ids(options={})
293
+ # @overload friends(options={})
294
294
  # Returns an array of numeric IDs for every user the authenticated user is following
295
295
  #
296
296
  # @param options [Hash] A customizable set of options.
@@ -298,8 +298,8 @@ module Twitter
298
298
  # @option options [Boolean, String, Integer] :skip_status Do not include contributee's Tweets when set to true, 't' or 1.
299
299
  # @option options [Boolean, String, Integer] :include_user_entities The user entities node will be disincluded when set to false.
300
300
  # @example Return the authenticated user's friends' IDs
301
- # Twitter.friend_ids
302
- # @overload friend_ids(user, options={})
301
+ # Twitter.friends
302
+ # @overload friends(user, options={})
303
303
  # Returns an array of numeric IDs for every user the specified user is following
304
304
  #
305
305
  # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, or object.
@@ -330,7 +330,7 @@ module Twitter
330
330
  get("/1.1/friendships/no_retweets/ids.json", options)[:body].map(&:to_i)
331
331
  end
332
332
  alias no_retweets_ids no_retweet_ids
333
-
333
+
334
334
  end
335
335
  end
336
336
  end
@@ -212,7 +212,7 @@ module Twitter
212
212
  # @authentication Requires user context
213
213
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
214
214
  # @return [Twitter::OEmbed] OEmbed for the requested Tweet.
215
- # @param id [Integer, String] A Tweet ID.
215
+ # @param id_or_url [Integer, String] A Tweet ID or URL.
216
216
  # @param options [Hash] A customizable set of options.
217
217
  # @option options [Integer] :maxwidth The maximum width in pixels that the embed should be rendered at. This value is constrained to be between 250 and 550 pixels.
218
218
  # @option options [Boolean, String, Integer] :hide_media Specifies whether the embedded Tweet should automatically expand images which were uploaded via {https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media POST statuses/update_with_media}. When set to either true, t or 1 images will not be expanded. Defaults to false.
@@ -223,8 +223,9 @@ module Twitter
223
223
  # @option options [String] :lang Language code for the rendered embed. This will affect the text and localization of the rendered HTML.
224
224
  # @example Return oEmbeds for Tweet with the ID 25938088801
225
225
  # Twitter.status_with_activity(25938088801)
226
- def oembed(id, options={})
227
- object_from_response(Twitter::OEmbed, :get, "/1.1/statuses/oembed.json?id=#{id}", options)
226
+ def oembed(id_or_url, options={})
227
+ key = id_or_url.is_a?(String) && id_or_url.match(%r{^https?://}i) ? "url" : "id"
228
+ object_from_response(Twitter::OEmbed, :get, "/1.1/statuses/oembed.json?#{key}=#{id_or_url}", options)
228
229
  end
229
230
 
230
231
  # Returns oEmbeds for Tweets
@@ -250,8 +251,8 @@ module Twitter
250
251
  # @option options [String] :lang Language code for the rendered embed. This will affect the text and localization of the rendered HTML.
251
252
  def oembeds(*args)
252
253
  arguments = Twitter::API::Arguments.new(args)
253
- arguments.flatten.threaded_map do |id|
254
- object_from_response(Twitter::OEmbed, :get, "/1.1/statuses/oembed.json?id=#{id}", arguments.options)
254
+ arguments.flatten.threaded_map do |id_or_url|
255
+ oembed(id_or_url, arguments.options)
255
256
  end
256
257
  end
257
258
 
@@ -270,6 +270,7 @@ module Twitter
270
270
  # Returns extended information for the authenticated user
271
271
  #
272
272
  # @param options [Hash] A customizable set of options.
273
+ # @option options [Boolean] :include_entities The tweet entities node will be disincluded when set to false.
273
274
  # @option options [Boolean, String, Integer] :skip_status Do not include user's Tweets when set to true, 't' or 1.
274
275
  # @example Return extended information for the authenticated user
275
276
  # Twitter.user
@@ -278,6 +279,8 @@ module Twitter
278
279
  #
279
280
  # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, or object.
280
281
  # @param options [Hash] A customizable set of options.
282
+ # @option options [Boolean] :include_entities The tweet entities node will be disincluded when set to false.
283
+ # @option options [Boolean, String, Integer] :skip_status Do not include user's Tweets when set to true, 't' or 1.
281
284
  # @example Return extended information for @sferik
282
285
  # Twitter.user('sferik')
283
286
  # Twitter.user(7505382) # Same as above
@@ -93,7 +93,9 @@ module Twitter
93
93
  #
94
94
  # @return [Hash]
95
95
  def attrs
96
- @attrs
96
+ @attrs.inject({}) do |attrs, (key, value)|
97
+ attrs.merge!(key => respond_to?(key) ? send(key) : value)
98
+ end
97
99
  end
98
100
  alias to_hash attrs
99
101
 
@@ -22,7 +22,7 @@ module Twitter
22
22
  body[:error]
23
23
  elsif body[:errors]
24
24
  first = Array(body[:errors]).first
25
- if first.kind_of?(Hash)
25
+ if first.is_a?(Hash)
26
26
  first[:message].chomp
27
27
  else
28
28
  first.chomp
@@ -10,9 +10,8 @@ module Twitter
10
10
  include Twitter::Exceptable
11
11
  attr_reader :favorited, :favoriters, :from_user_id, :from_user_name,
12
12
  :in_reply_to_screen_name, :in_reply_to_attrs_id, :in_reply_to_status_id,
13
- :in_reply_to_user_id, :iso_language_code, :repliers, :retweeted,
14
- :retweeters, :source, :text, :to_user, :to_user_id, :to_user_name,
15
- :truncated
13
+ :in_reply_to_user_id, :lang, :repliers, :retweeted, :retweeters, :source,
14
+ :text, :to_user, :to_user_id, :to_user_name, :truncated
16
15
  alias in_reply_to_tweet_id in_reply_to_status_id
17
16
  alias favourited favorited
18
17
  alias favourited? favorited?
@@ -40,6 +39,10 @@ module Twitter
40
39
  @attrs[:from_user] || user && user.screen_name
41
40
  end
42
41
 
42
+ def filter_level
43
+ @attrs[:filter_level] || "none"
44
+ end
45
+
43
46
  # @return [String]
44
47
  # @note May be > 140 characters.
45
48
  def full_text
@@ -138,8 +141,8 @@ module Twitter
138
141
  # @param key [Symbol]
139
142
  def entities(klass, key)
140
143
  if entities?
141
- Array(@attrs[:entities][key.to_sym]).map do |user_mention|
142
- klass.fetch_or_new(user_mention)
144
+ Array(@attrs[:entities][key.to_sym]).map do |entity|
145
+ klass.fetch_or_new(entity)
143
146
  end
144
147
  else
145
148
  warn "#{Kernel.caller.first}: To get #{key.to_s.tr('_', ' ')}, you must pass `:include_entities => true` when requesting the #{self.class.name}."
@@ -32,6 +32,13 @@ module Twitter
32
32
  alias update_count statuses_count
33
33
  alias updates_count statuses_count
34
34
 
35
+ # @return [Array<Twitter::Entity::Url>]
36
+ def description_urls
37
+ @description_urls ||= Array(@attrs[:entities][:description][:urls]).map do |entity|
38
+ Twitter::Entity::Url.fetch_or_new(entity)
39
+ end
40
+ end
41
+
35
42
  # Return the URL to the user's profile banner image
36
43
  #
37
44
  # @param size [String, Symbol] The size of the image. Must be one of: 'mobile', 'mobile_retina', 'web', 'web_retina', 'ipad', or 'ipad_retina'
@@ -1,7 +1,7 @@
1
1
  module Twitter
2
2
  class Version
3
3
  MAJOR = 4 unless defined? Twitter::Version::MAJOR
4
- MINOR = 5 unless defined? Twitter::Version::MINOR
4
+ MINOR = 6 unless defined? Twitter::Version::MINOR
5
5
  PATCH = 0 unless defined? Twitter::Version::PATCH
6
6
  PRE = nil unless defined? Twitter::Version::PRE
7
7
 
@@ -1,9 +1,11 @@
1
- unless ENV['CI']
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter 'spec'
5
- end
6
- end
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
7
9
 
8
10
  require 'twitter'
9
11
  require 'twitter/identity_map'
@@ -13,6 +15,8 @@ require 'tempfile'
13
15
  require 'timecop'
14
16
  require 'webmock/rspec'
15
17
 
18
+ WebMock.disable_net_connect!(:allow => 'coveralls.io')
19
+
16
20
  RSpec.configure do |config|
17
21
  config.expect_with :rspec do |c|
18
22
  c.syntax = :expect
@@ -220,11 +220,16 @@ describe Twitter::API::Tweets do
220
220
  describe "#oembed" do
221
221
  before do
222
222
  stub_get("/1.1/statuses/oembed.json").with(:query => {:id => "25938088801"}).to_return(:body => fixture("oembed.json"), :headers => {:content_type => "application/json; charset=utf-8"})
223
+ stub_get("/1.1/statuses/oembed.json").with(:query => {:url => "https://twitter.com/sferik/status/25938088801"}).to_return(:body => fixture("oembed.json"), :headers => {:content_type => "application/json; charset=utf-8"})
223
224
  end
224
225
  it "requests the correct resource" do
225
226
  @client.oembed(25938088801)
226
227
  expect(a_get("/1.1/statuses/oembed.json").with(:query => {:id => "25938088801"})).to have_been_made
227
228
  end
229
+ it "requests the correct resource when a URL is given" do
230
+ @client.oembed("https://twitter.com/sferik/status/25938088801")
231
+ expect(a_get("/1.1/statuses/oembed.json").with(:query => {:url => "https://twitter.com/sferik/status/25938088801"}))
232
+ end
228
233
  it "returns an array of OEmbed instances" do
229
234
  oembed = @client.oembed(25938088801)
230
235
  expect(oembed).to be_a Twitter::OEmbed
@@ -234,11 +239,16 @@ describe Twitter::API::Tweets do
234
239
  describe "#oembeds" do
235
240
  before do
236
241
  stub_get("/1.1/statuses/oembed.json").with(:query => {:id => "25938088801"}).to_return(:body => fixture("oembed.json"), :headers => {:content_type => "application/json; charset=utf-8"})
242
+ stub_get("/1.1/statuses/oembed.json").with(:query => {:url => "https://twitter.com/sferik/status/25938088801"}).to_return(:body => fixture("oembed.json"), :headers => {:content_type => "application/json; charset=utf-8"})
237
243
  end
238
244
  it "requests the correct resource" do
239
245
  @client.oembeds(25938088801)
240
246
  expect(a_get("/1.1/statuses/oembed.json").with(:query => {:id => "25938088801"})).to have_been_made
241
247
  end
248
+ it "requests the correct resource when a URL is given" do
249
+ @client.oembeds("https://twitter.com/sferik/status/25938088801")
250
+ expect(a_get("/1.1/statuses/oembed.json").with(:query => {:url => "https://twitter.com/sferik/status/25938088801"})).to have_been_made
251
+ end
242
252
  it "returns an array of OEmbed instances" do
243
253
  oembeds = @client.oembeds(25938088801)
244
254
  expect(oembeds).to be_an Array
@@ -104,13 +104,13 @@ describe Twitter::Tweet do
104
104
 
105
105
  describe "#hashtags" do
106
106
  it "returns an Array of Entity::Hashtag when entities are set" do
107
- hashtags_hash = [
107
+ hashtags_array = [
108
108
  {
109
109
  :text => 'twitter',
110
110
  :indices => [10, 33],
111
111
  }
112
112
  ]
113
- hashtags = Twitter::Tweet.new(:id => 28669546014, :entities => {:hashtags => hashtags_hash}).hashtags
113
+ hashtags = Twitter::Tweet.new(:id => 28669546014, :entities => {:hashtags => hashtags_array}).hashtags
114
114
  expect(hashtags).to be_an Array
115
115
  expect(hashtags.first).to be_a Twitter::Entity::Hashtag
116
116
  expect(hashtags.first.indices).to eq [10, 33]
@@ -234,7 +234,7 @@ describe Twitter::Tweet do
234
234
  end
235
235
 
236
236
  it "returns true if there are entities set" do
237
- urls_hash = [
237
+ urls_array = [
238
238
  {
239
239
  :url => 'http://example.com/t.co',
240
240
  :expanded_url => 'http://example.com/expanded',
@@ -242,14 +242,14 @@ describe Twitter::Tweet do
242
242
  :indices => [10, 33],
243
243
  }
244
244
  ]
245
- tweet = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_hash})
245
+ tweet = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_array})
246
246
  expect(tweet.entities?).to be_true
247
247
  end
248
248
  end
249
249
 
250
250
  describe "#urls" do
251
251
  it "returns an Array of Entity::Url when entities are set" do
252
- urls_hash = [
252
+ urls_array = [
253
253
  {
254
254
  :url => 'http://example.com/t.co',
255
255
  :expanded_url => 'http://example.com/expanded',
@@ -257,7 +257,7 @@ describe Twitter::Tweet do
257
257
  :indices => [10, 33],
258
258
  }
259
259
  ]
260
- urls = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_hash}).urls
260
+ urls = Twitter::Tweet.new(:id => 28669546014, :entities => {:urls => urls_array}).urls
261
261
  expect(urls).to be_an Array
262
262
  expect(urls.first).to be_a Twitter::Entity::Url
263
263
  expect(urls.first.indices).to eq [10, 33]
@@ -301,7 +301,7 @@ describe Twitter::Tweet do
301
301
 
302
302
  describe "#user_mentions" do
303
303
  it "returns an Array of Entity::UserMention when entities are set" do
304
- user_mentions_hash = [
304
+ user_mentions_array = [
305
305
  {
306
306
  :screen_name => 'sferik',
307
307
  :name => 'Erik Michaels-Ober',
@@ -310,7 +310,7 @@ describe Twitter::Tweet do
310
310
  :id => 7505382,
311
311
  }
312
312
  ]
313
- user_mentions = Twitter::Tweet.new(:id => 28669546014, :entities => {:user_mentions => user_mentions_hash}).user_mentions
313
+ user_mentions = Twitter::Tweet.new(:id => 28669546014, :entities => {:user_mentions => user_mentions_array}).user_mentions
314
314
  expect(user_mentions).to be_an Array
315
315
  expect(user_mentions.first).to be_a Twitter::Entity::UserMention
316
316
  expect(user_mentions.first.indices).to eq [0, 6]
@@ -31,6 +31,28 @@ describe Twitter::User do
31
31
  end
32
32
  end
33
33
 
34
+ describe "#description_urls" do
35
+ it "returns an Array of Entity::Url" do
36
+ urls_array = [
37
+ {
38
+ :url => 'http://example.com/t.co',
39
+ :expanded_url => 'http://example.com/expanded',
40
+ :display_url => 'example.com/expanded',
41
+ :indices => [10, 33],
42
+ }
43
+ ]
44
+ description_urls = Twitter::User.new(:id => 7505382, :entities => {:description => {:urls => urls_array}}).description_urls
45
+ expect(description_urls).to be_an Array
46
+ expect(description_urls.first).to be_a Twitter::Entity::Url
47
+ expect(description_urls.first.indices).to eq [10, 33]
48
+ expect(description_urls.first.display_url).to eq 'example.com/expanded'
49
+ end
50
+ it "is empty when not set" do
51
+ description_urls = Twitter::User.new(:id => 7505382, :entities => {:description => {:urls => []}}).description_urls
52
+ expect(description_urls).to be_empty
53
+ end
54
+ end
55
+
34
56
  describe "#profile_banner_url" do
35
57
  it "returns a String when profile_banner_url is set" do
36
58
  user = Twitter::User.new(:id => 7505382, :profile_banner_url => "https://si0.twimg.com/profile_banners/7505382/1348266581")
@@ -1,13 +1,17 @@
1
- # encoding: utf-8
2
- require File.expand_path('../lib/twitter/version', __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'twitter/version'
3
5
 
4
6
  Gem::Specification.new do |spec|
5
- spec.add_dependency 'faraday', ['~> 0.8', '< 0.10']
6
- spec.add_dependency 'multi_json', ['~> 1.0']
7
- spec.add_dependency 'simple_oauth', ['~> 0.2']
8
- spec.authors = ["John Nunemaker", "Wynn Netherland", "Erik Michaels-Ober", "Steve Richert"]
7
+ spec.add_dependency 'faraday', ['~> 0.8', '< 0.10']
8
+ spec.add_dependency 'multi_json', '~> 1.0'
9
+ spec.add_dependency 'simple_oauth', '~> 0.2'
10
+ spec.add_development_dependency 'bundler', '~> 1.0'
11
+ spec.authors = ["John Nunemaker", "Wynn Netherland", "Erik Michaels-Ober", "Steve Richert", "Steve Agalloco"]
12
+ spec.cert_chain = ['certs/sferik.pem']
9
13
  spec.description = %q{A Ruby interface to the Twitter API.}
10
- spec.email = ['nunemaker@gmail.com', 'wynn.netherland@gmail.com', 'sferik@gmail.com', 'steve.richert@gmail.com']
14
+ spec.email = ['nunemaker@gmail.com', 'wynn.netherland@gmail.com', 'sferik@gmail.com', 'steve.richert@gmail.com', 'steve.agalloco@gmail.com']
11
15
  spec.files = %w(.yardopts CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md Rakefile twitter.gemspec)
12
16
  spec.files += Dir.glob("lib/**/*.rb")
13
17
  spec.files += Dir.glob("spec/**/*")
@@ -15,7 +19,8 @@ Gem::Specification.new do |spec|
15
19
  spec.licenses = ['MIT']
16
20
  spec.name = 'twitter'
17
21
  spec.require_paths = ['lib']
18
- spec.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
22
+ spec.required_rubygems_version = '>= 1.3.6'
23
+ spec.signing_key = File.expand_path("~/.gem/private_key.pem") if $0 =~ /gem\z/
19
24
  spec.summary = spec.description
20
25
  spec.test_files = Dir.glob("spec/**/*")
21
26
  spec.version = Twitter::Version
metadata CHANGED
@@ -1,22 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter
3
3
  version: !ruby/object:Gem::Version
4
+ version: 4.6.0
4
5
  prerelease:
5
- version: 4.5.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - John Nunemaker
9
9
  - Wynn Netherland
10
10
  - Erik Michaels-Ober
11
11
  - Steve Richert
12
+ - Steve Agalloco
12
13
  autorequire:
13
14
  bindir: bin
14
- cert_chain: []
15
- date: 2013-01-26 00:00:00.000000000 Z
15
+ cert_chain:
16
+ - !binary |-
17
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMakNDQWhhZ0F3SUJB
18
+ Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE5TVE4d0RRWURWUVFEREFaelpt
19
+ VnkKYVdzeEZUQVRCZ29Ka2lhSmsvSXNaQUVaRmdWbmJXRnBiREVUTUJFR0Nn
20
+ bVNKb21UOGl4a0FSa1dBMk52YlRBZQpGdzB4TXpBeU1ETXhNREF5TWpkYUZ3
21
+ MHhOREF5TURNeE1EQXlNamRhTUQweER6QU5CZ05WQkFNTUJuTm1aWEpwCmF6
22
+ RVZNQk1HQ2dtU0pvbVQ4aXhrQVJrV0JXZHRZV2xzTVJNd0VRWUtDWkltaVpQ
23
+ eUxHUUJHUllEWTI5dE1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4
24
+ QU1JSUJDZ0tDQVFFQWwweDVkeDh1S3hpN1Rrckl1eUJVVEpWQgp2MW85M25V
25
+ QjlqL3k0TTk2Z1Yycll3QWNpMUpQQnNlTmQ2RnliempvM1lHdUhsN0VRSHVT
26
+ SE5hZjFwMmx4ZXcvCnk2MEpYSUpCQmdQY0RLL0tDUDROVUhvZm0wamZvWUQr
27
+ SDV1TkpmSENOcTcvWnNUeE90RTNSYTkyczBCQ01UcG0Kd0JNTWxXUjVNdGRF
28
+ aElZdUJPNFhobmVqWWdIMEwvN0JMMmx5bW50Vm5zci9hZ2RRb29qUUNOMUlR
29
+ bXNSSnZyUgpkdVpSTzN0WnZvSW8xcEJjNEpFZWhEdXFDZXlCZ1BMT3FNb0t0
30
+ UWxvbGQxVFFzMWtXVUJLN0tXTUZFaEtDL0tnCnp5ektSSFFvOXlEWXdPdllu
31
+ Z29CTFkrVC9sd0NUNGR5c3NkaHpSYmZueEFoYUt1NFNBc3NJd2FDMDF5Vm93
32
+ SUQKQVFBQm96a3dOekFKQmdOVkhSTUVBakFBTUIwR0ExVWREZ1FXQkJTMHJ1
33
+ RGZSYWs1Y2kxT3BETlgvWmRERWtJcwppVEFMQmdOVkhROEVCQU1DQkxBd0RR
34
+ WUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFISFNNcy9NUDBzT2FMa0V2NEpvCnp2
35
+ a20zcW41QTZ0MHZhSHg3NzRjbWVqeU1VKzV3eVN4UmV6c3BMN1VMaDlOZXVL
36
+ Mk9oVStPZTNUcHFyQWc1VEsKUjhHUUlMblZ1MkZlbUdBNnNBa1BEbGNQdGdB
37
+ NmllSTE5UFpPRjZIVkxtYy9JRC9kUC9OZ1pXV3pFZXFRS21jSwoyK0hNK1NF
38
+ RURoWmtTY1lla3c0Wk9lMTY0WnRaRzgxNm9BdjV4MHBHaXRTSWt1bVVwN1Y4
39
+ aUVaLzZlaHI3WTllClhPZzRlZXVuNUwvSmptakFSb1cya05kdmtSRDNjMkVl
40
+ U0xxV3ZRUnNCbHlwSGZoczZKSnVMbHlaUEdoVTNSL3YKU2YzbFZLcEJDV2dS
41
+ cEdUdnk0NVhWcEIrNTl5MzNQSm1FdVExUFRFT1l2UXlhbzlVS01BQWFBTi83
42
+ cVdRdGpsMApobHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
43
+ date: 2013-03-08 00:00:00.000000000 Z
16
44
  dependencies:
17
45
  - !ruby/object:Gem::Dependency
18
- prerelease: false
19
- version_requirements: !ruby/object:Gem::Requirement
46
+ name: faraday
47
+ requirement: !ruby/object:Gem::Requirement
48
+ none: false
20
49
  requirements:
21
50
  - - ~>
22
51
  - !ruby/object:Gem::Version
@@ -24,10 +53,10 @@ dependencies:
24
53
  - - <
25
54
  - !ruby/object:Gem::Version
26
55
  version: '0.10'
27
- none: false
28
56
  type: :runtime
29
- name: faraday
30
- requirement: !ruby/object:Gem::Requirement
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
31
60
  requirements:
32
61
  - - ~>
33
62
  - !ruby/object:Gem::Version
@@ -35,45 +64,61 @@ dependencies:
35
64
  - - <
36
65
  - !ruby/object:Gem::Version
37
66
  version: '0.10'
38
- none: false
39
67
  - !ruby/object:Gem::Dependency
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
68
+ name: multi_json
69
+ requirement: !ruby/object:Gem::Requirement
70
+ none: false
42
71
  requirements:
43
72
  - - ~>
44
73
  - !ruby/object:Gem::Version
45
74
  version: '1.0'
46
- none: false
47
75
  type: :runtime
48
- name: multi_json
49
- requirement: !ruby/object:Gem::Requirement
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ none: false
50
79
  requirements:
51
80
  - - ~>
52
81
  - !ruby/object:Gem::Version
53
82
  version: '1.0'
54
- none: false
55
83
  - !ruby/object:Gem::Dependency
84
+ name: simple_oauth
85
+ requirement: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '0.2'
91
+ type: :runtime
56
92
  prerelease: false
57
93
  version_requirements: !ruby/object:Gem::Requirement
94
+ none: false
58
95
  requirements:
59
96
  - - ~>
60
97
  - !ruby/object:Gem::Version
61
98
  version: '0.2'
62
- none: false
63
- type: :runtime
64
- name: simple_oauth
99
+ - !ruby/object:Gem::Dependency
100
+ name: bundler
65
101
  requirement: !ruby/object:Gem::Requirement
102
+ none: false
66
103
  requirements:
67
104
  - - ~>
68
105
  - !ruby/object:Gem::Version
69
- version: '0.2'
106
+ version: '1.0'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
70
110
  none: false
111
+ requirements:
112
+ - - ~>
113
+ - !ruby/object:Gem::Version
114
+ version: '1.0'
71
115
  description: A Ruby interface to the Twitter API.
72
116
  email:
73
117
  - nunemaker@gmail.com
74
118
  - wynn.netherland@gmail.com
75
119
  - sferik@gmail.com
76
120
  - steve.richert@gmail.com
121
+ - steve.agalloco@gmail.com
77
122
  executables: []
78
123
  extensions: []
79
124
  extra_rdoc_files: []
@@ -315,17 +360,17 @@ rdoc_options: []
315
360
  require_paths:
316
361
  - lib
317
362
  required_ruby_version: !ruby/object:Gem::Requirement
363
+ none: false
318
364
  requirements:
319
365
  - - ! '>='
320
366
  - !ruby/object:Gem::Version
321
367
  version: '0'
322
- none: false
323
368
  required_rubygems_version: !ruby/object:Gem::Requirement
369
+ none: false
324
370
  requirements:
325
371
  - - ! '>='
326
372
  - !ruby/object:Gem::Version
327
373
  version: 1.3.6
328
- none: false
329
374
  requirements: []
330
375
  rubyforge_project:
331
376
  rubygems_version: 1.8.25
Binary file