twitter 4.4.0 → 4.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/CONTRIBUTING.md +8 -6
- data/README.md +17 -1
- data/lib/twitter.rb +29 -0
- data/lib/twitter/action/follow.rb +0 -1
- data/lib/twitter/action/list_member_added.rb +0 -2
- data/lib/twitter/action/mention.rb +0 -2
- data/lib/twitter/action/tweet.rb +0 -2
- data/lib/twitter/api/friends_and_followers.rb +15 -7
- data/lib/twitter/api/places_and_geo.rb +5 -5
- data/lib/twitter/api/timelines.rb +4 -5
- data/lib/twitter/api/tweets.rb +2 -2
- data/lib/twitter/api/users.rb +5 -5
- data/lib/twitter/api/utils.rb +1 -3
- data/lib/twitter/configurable.rb +0 -2
- data/lib/twitter/configuration.rb +0 -1
- data/lib/twitter/core_ext/enumerable.rb +3 -16
- data/lib/twitter/direct_message.rb +0 -1
- data/lib/twitter/error.rb +0 -2
- data/lib/twitter/list.rb +0 -1
- data/lib/twitter/media/photo.rb +0 -1
- data/lib/twitter/place.rb +0 -1
- data/lib/twitter/profile_banner.rb +0 -1
- data/lib/twitter/relationship.rb +0 -2
- data/lib/twitter/request/multipart_with_file.rb +1 -6
- data/lib/twitter/search_results.rb +0 -1
- data/lib/twitter/settings.rb +0 -1
- data/lib/twitter/suggestion.rb +0 -1
- data/lib/twitter/tweet.rb +0 -8
- data/lib/twitter/user.rb +0 -1
- data/lib/twitter/version.rb +1 -1
- data/spec/twitter/client_spec.rb +6 -8
- data/spec/twitter/error/client_error_spec.rb +0 -20
- data/spec/twitter/geo/point_spec.rb +1 -1
- data/spec/twitter/tweet_spec.rb +4 -4
- data/twitter.gemspec +3 -3
- metadata +190 -189
- data/spec/fixtures/no_user_matches.json +0 -1
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
4.4.1
|
2
|
+
-----
|
3
|
+
* [Do not modify `Thread.abort_on_exception`](https://github.com/sferik/twitter/commit/6de998ced1f3dce97a24e500ecf2348192ae9316)
|
4
|
+
|
1
5
|
4.4.0
|
2
6
|
-----
|
3
7
|
* [Add `Twitter::API::FriendsAndFollowers#friends` and `Twitter::API::FriendsAndFollowers#followers`](https://github.com/sferik/twitter/commit/03e1512a8e5e589771414aaf46db34718f1469ce) ([@tibbon](https://twitter.com/tibbon))
|
data/CONTRIBUTING.md
CHANGED
@@ -12,7 +12,7 @@ Here are some ways *you* can contribute:
|
|
12
12
|
* by writing or editing documentation
|
13
13
|
* by writing specifications
|
14
14
|
* by writing code (**no patch is too small**: fix typos, add comments, clean up
|
15
|
-
inconsistent whitespace)
|
15
|
+
inconsistent whitespace)
|
16
16
|
* by refactoring code
|
17
17
|
* by fixing [issues][]
|
18
18
|
* by reviewing patches
|
@@ -40,11 +40,13 @@ Ideally, a bug report should include a pull request with failing specs.
|
|
40
40
|
6. Run `bundle exec rake spec`. If your specs fail, return to step 5.
|
41
41
|
7. Run `open coverage/index.html`. If your changes are not completely covered
|
42
42
|
by your tests, return to step 3.
|
43
|
-
8
|
44
|
-
|
45
|
-
|
46
|
-
10.
|
47
|
-
|
43
|
+
8 Run `RUBYOPT=W2 bundle exec rake spec 2>&1 | grep twitter`. If your changes
|
44
|
+
produce any warnings, return to step 5.
|
45
|
+
9. Add documentation for your feature or bug fix.
|
46
|
+
10. Run `bundle exec rake yard`. If your changes are not 100% documented, go
|
47
|
+
back to step 9.
|
48
|
+
11. Commit and push your changes.
|
49
|
+
12. [Submit a pull request.][pr]
|
48
50
|
|
49
51
|
[fork]: http://help.github.com/fork-a-repo/
|
50
52
|
[branch]: http://learn.github.com/p/branching.html
|
data/README.md
CHANGED
@@ -371,7 +371,7 @@ Here are some fun facts about this library:
|
|
371
371
|
|
372
372
|
* It is implemented in just 2,000 lines of Ruby code
|
373
373
|
* With over 4,000 lines of specs, the spec-to-code ratio is over 2:1
|
374
|
-
* The spec suite contains 700 examples and runs in about
|
374
|
+
* The spec suite contains over 700 examples and runs in about 5 seconds
|
375
375
|
* It has 100% C0 code coverage (the tests execute every line of
|
376
376
|
source code at least once)
|
377
377
|
* It is comprehensive: you can request all documented Twitter REST API
|
@@ -405,6 +405,22 @@ implementation, you will be personally responsible for providing patches in a
|
|
405
405
|
timely fashion. If critical issues for a particular implementation exist at the
|
406
406
|
time of a major release, support for that Ruby version may be dropped.
|
407
407
|
|
408
|
+
## Versioning
|
409
|
+
|
410
|
+
This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations
|
411
|
+
of this scheme should be reported as bugs. Specifically, if a minor or patch
|
412
|
+
version is released that breaks backward compatibility, that version should be
|
413
|
+
immediately yanked and/or a new version should be immediately released that
|
414
|
+
restores compatibility. Breaking changes to the public API will only be
|
415
|
+
introduced with new major versions. As a result of this policy, you can (and
|
416
|
+
should) specify a dependency on this gem using the [Pessimistic Version
|
417
|
+
Constraint][pvc] with two digits of precision. For example:
|
418
|
+
|
419
|
+
spec.add_dependency 'twitter', '~> 4.0'
|
420
|
+
|
421
|
+
[semver]: http://semver.org/
|
422
|
+
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
423
|
+
|
408
424
|
## Additional Notes
|
409
425
|
This will be the last major version of this library to support Ruby 1.8.
|
410
426
|
Requiring Ruby 1.9 will allow us to [remove][class_variable_get]
|
data/lib/twitter.rb
CHANGED
@@ -1,5 +1,34 @@
|
|
1
|
+
require 'twitter/action_factory'
|
1
2
|
require 'twitter/client'
|
2
3
|
require 'twitter/configurable'
|
4
|
+
require 'twitter/configuration'
|
5
|
+
require 'twitter/cursor'
|
6
|
+
require 'twitter/default'
|
7
|
+
require 'twitter/direct_message'
|
8
|
+
require 'twitter/entity'
|
9
|
+
require 'twitter/entity/hashtag'
|
10
|
+
require 'twitter/entity/url'
|
11
|
+
require 'twitter/entity/user_mention'
|
12
|
+
require 'twitter/geo_factory'
|
13
|
+
require 'twitter/language'
|
14
|
+
require 'twitter/list'
|
15
|
+
require 'twitter/media_factory'
|
16
|
+
require 'twitter/metadata'
|
17
|
+
require 'twitter/oembed'
|
18
|
+
require 'twitter/place'
|
19
|
+
require 'twitter/profile_banner'
|
20
|
+
require 'twitter/rate_limit'
|
21
|
+
require 'twitter/relationship'
|
22
|
+
require 'twitter/saved_search'
|
23
|
+
require 'twitter/search_results'
|
24
|
+
require 'twitter/settings'
|
25
|
+
require 'twitter/size'
|
26
|
+
require 'twitter/source_user'
|
27
|
+
require 'twitter/suggestion'
|
28
|
+
require 'twitter/target_user'
|
29
|
+
require 'twitter/trend'
|
30
|
+
require 'twitter/tweet'
|
31
|
+
require 'twitter/user'
|
3
32
|
|
4
33
|
module Twitter
|
5
34
|
class << self
|
data/lib/twitter/action/tweet.rb
CHANGED
@@ -282,10 +282,7 @@ module Twitter
|
|
282
282
|
# Twitter.followers('sferik')
|
283
283
|
# Twitter.followers(7505382) # Same as above
|
284
284
|
def followers(*args)
|
285
|
-
|
286
|
-
merge_user!(options, args.pop || screen_name)
|
287
|
-
merge_default_cursor!(options)
|
288
|
-
cursor_from_response(:users, Twitter::User, :get, "/1.1/followers/list.json", options)
|
285
|
+
friends_or_followers_from_response(:get, "/1.1/followers/list.json", args)
|
289
286
|
end
|
290
287
|
|
291
288
|
# Returns a cursored collection of user objects for every user the specified user is following (otherwise known as their "friends").
|
@@ -316,12 +313,23 @@ module Twitter
|
|
316
313
|
# Twitter.friends('sferik')
|
317
314
|
# Twitter.friends(7505382) # Same as above
|
318
315
|
def friends(*args)
|
316
|
+
friends_or_followers_from_response(:get, "/1.1/friends/list.json", args)
|
317
|
+
end
|
318
|
+
alias following friends
|
319
|
+
|
320
|
+
private
|
321
|
+
|
322
|
+
# @param request_method [Symbol]
|
323
|
+
# @param path [String]
|
324
|
+
# @param args [Array]
|
325
|
+
# @return [Array<Integer>]
|
326
|
+
def friends_or_followers_from_response(request_method, path, args)
|
319
327
|
options = extract_options!(args)
|
320
|
-
merge_user!(options, args.pop || screen_name)
|
321
328
|
merge_default_cursor!(options)
|
322
|
-
|
329
|
+
merge_user!(options, args.pop || screen_name)
|
330
|
+
cursor_from_response(:users, Twitter::User, request_method, path, options, calling_method)
|
323
331
|
end
|
324
|
-
|
332
|
+
|
325
333
|
end
|
326
334
|
end
|
327
335
|
end
|
@@ -12,7 +12,7 @@ module Twitter
|
|
12
12
|
# @rate_limited Yes
|
13
13
|
# @authentication_required Requires user context
|
14
14
|
# @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
|
15
|
-
# @param place_id [String] A place in the world. These IDs can be retrieved from {Twitter::API::
|
15
|
+
# @param place_id [String] A place in the world. These IDs can be retrieved from {Twitter::API::PlacesAndGeo#reverse_geocode}.
|
16
16
|
# @param options [Hash] A customizable set of options.
|
17
17
|
# @return [Twitter::Place] The requested place.
|
18
18
|
# @example Return all the information about Twitter HQ
|
@@ -41,7 +41,7 @@ module Twitter
|
|
41
41
|
geo_collection_from_response(:get, "/1.1/geo/reverse_geocode.json", options)
|
42
42
|
end
|
43
43
|
|
44
|
-
# Search for places that can be attached to a {Twitter::API::
|
44
|
+
# Search for places that can be attached to a {Twitter::API::Tweets#update}
|
45
45
|
#
|
46
46
|
# @see https://dev.twitter.com/docs/api/1.1/get/geo/search
|
47
47
|
# @rate_limited Yes
|
@@ -68,7 +68,7 @@ module Twitter
|
|
68
68
|
# Locates places near the given coordinates which are similar in name
|
69
69
|
#
|
70
70
|
# @see https://dev.twitter.com/docs/api/1.1/get/geo/similar_places
|
71
|
-
# @note Conceptually, you would use this method to get a list of known places to choose from first. Then, if the desired place doesn't exist, make a request to {Twitter::API::
|
71
|
+
# @note Conceptually, you would use this method to get a list of known places to choose from first. Then, if the desired place doesn't exist, make a request to {Twitter::API::PlacesAndGeo#place} to create a new one. The token contained in the response is the token necessary to create a new place.
|
72
72
|
# @rate_limited Yes
|
73
73
|
# @authentication_required Requires user context
|
74
74
|
# @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
|
@@ -95,7 +95,7 @@ module Twitter
|
|
95
95
|
# @param options [Hash] A customizable set of options.
|
96
96
|
# @option options [String] :name The name a place is known as.
|
97
97
|
# @option options [String] :contained_within This is the place_id which you would like to restrict the search results to. Setting this value means only places within the given place_id will be found.
|
98
|
-
# @option options [String] :token The token found in the response from {Twitter::API::
|
98
|
+
# @option options [String] :token The token found in the response from {Twitter::API::PlacesAndGeo#places_similar}.
|
99
99
|
# @option options [Float] :lat The latitude to search around. This option will be ignored unless it is inside the range -90.0 to +90.0 (North is positive) inclusive. It will also be ignored if there isn't a corresponding :long option.
|
100
100
|
# @option options [Float] :long The longitude to search around. The valid range for longitude is -180.0 to +180.0 (East is positive) inclusive. This option will be ignored if outside that range, if it is not a number, if geo_enabled is disabled, or if there not a corresponding :lat option.
|
101
101
|
# @option options [String] :"attribute:street_address" This option searches for places which have this given street address. There are other well-known and application-specific attributes available. Custom attributes are also permitted.
|
@@ -110,7 +110,7 @@ module Twitter
|
|
110
110
|
|
111
111
|
# @param request_method [Symbol]
|
112
112
|
# @param path [String]
|
113
|
-
# @param
|
113
|
+
# @param params [Hash]
|
114
114
|
# @return [Array]
|
115
115
|
def geo_collection_from_response(request_method, path, params={})
|
116
116
|
collection_from_array(Twitter::Place, send(request_method.to_sym, path, params)[:body][:result][:places])
|
@@ -88,7 +88,6 @@ module Twitter
|
|
88
88
|
# @authentication_required Requires user context
|
89
89
|
# @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
|
90
90
|
# @return [Array<Twitter::Tweet>]
|
91
|
-
# @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, or object.
|
92
91
|
# @param options [Hash] A customizable set of options.
|
93
92
|
# @option options [Integer] :since_id Returns results with an ID greater than (that is, more recent than) the specified ID.
|
94
93
|
# @option options [Integer] :max_id Returns results with an ID less than (that is, older than) or equal to the specified ID.
|
@@ -99,8 +98,8 @@ module Twitter
|
|
99
98
|
# @example Return the 20 most recent retweets posted by the authenticating user
|
100
99
|
# Twitter.retweeted_by_me
|
101
100
|
def retweeted_by_me(options={})
|
102
|
-
retweets_from_timeline(options) do |
|
103
|
-
user_timeline(
|
101
|
+
retweets_from_timeline(options) do |opts|
|
102
|
+
user_timeline(opts)
|
104
103
|
end
|
105
104
|
end
|
106
105
|
|
@@ -146,8 +145,8 @@ module Twitter
|
|
146
145
|
# @example Return the 20 most recent retweets posted by users followed by the authenticating user
|
147
146
|
# Twitter.retweeted_to_me
|
148
147
|
def retweeted_to_me(options={})
|
149
|
-
retweets_from_timeline(options) do |
|
150
|
-
home_timeline(
|
148
|
+
retweets_from_timeline(options) do |opts|
|
149
|
+
home_timeline(opts)
|
151
150
|
end
|
152
151
|
end
|
153
152
|
|
data/lib/twitter/api/tweets.rb
CHANGED
@@ -119,7 +119,7 @@ module Twitter
|
|
119
119
|
# @option options [Integer] :in_reply_to_status_id The ID of an existing status that the update is in reply to.
|
120
120
|
# @option options [Float] :lat The latitude of the location this tweet refers to. This option will be ignored unless it is inside the range -90.0 to +90.0 (North is positive) inclusive. It will also be ignored if there isn't a corresponding :long option.
|
121
121
|
# @option options [Float] :long The longitude of the location this tweet refers to. The valid ranges for longitude is -180.0 to +180.0 (East is positive) inclusive. This option will be ignored if outside that range, if it is not a number, if geo_enabled is disabled, or if there not a corresponding :lat option.
|
122
|
-
# @option options [String] :place_id A place in the world. These IDs can be retrieved from {Twitter::API::
|
122
|
+
# @option options [String] :place_id A place in the world. These IDs can be retrieved from {Twitter::API::PlacesAndGeo#reverse_geocode}.
|
123
123
|
# @option options [String] :display_coordinates Whether or not to put a pin on the exact coordinates a tweet has been sent from.
|
124
124
|
# @option options [Boolean, String, Integer] :trim_user Each tweet returned in a timeline will include a user object with only the author's numerical ID when set to true, 't' or 1.
|
125
125
|
# @example Update the authenticating user's status
|
@@ -195,7 +195,7 @@ module Twitter
|
|
195
195
|
# @option options [Integer] :in_reply_to_status_id The ID of an existing Tweet that the update is in reply to.
|
196
196
|
# @option options [Float] :lat The latitude of the location this tweet refers to. This option will be ignored unless it is inside the range -90.0 to +90.0 (North is positive) inclusive. It will also be ignored if there isn't a corresponding :long option.
|
197
197
|
# @option options [Float] :long The longitude of the location this tweet refers to. The valid ranges for longitude is -180.0 to +180.0 (East is positive) inclusive. This option will be ignored if outside that range, if it is not a number, if geo_enabled is disabled, or if there not a corresponding :lat option.
|
198
|
-
# @option options [String] :place_id A place in the world. These IDs can be retrieved from {Twitter::API::
|
198
|
+
# @option options [String] :place_id A place in the world. These IDs can be retrieved from {Twitter::API::PlacesAndGeo#reverse_geocode}.
|
199
199
|
# @option options [String] :display_coordinates Whether or not to put a pin on the exact coordinates a tweet has been sent from.
|
200
200
|
# @option options [Boolean, String, Integer] :trim_user Each tweet returned in a timeline will include a user object with only the author's numerical ID when set to true, 't' or 1.
|
201
201
|
# @example Update the authenticating user's status
|
data/lib/twitter/api/users.rb
CHANGED
@@ -158,9 +158,10 @@ module Twitter
|
|
158
158
|
# @authentication_required Requires user context
|
159
159
|
# @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
|
160
160
|
# @return [Array] Numeric user ids the authenticating user is blocking.
|
161
|
-
# @param options [Hash] A customizable set of options.
|
162
161
|
# @example Return an array of numeric user ids the authenticating user is blocking
|
163
162
|
# Twitter.blocking_ids
|
163
|
+
# @overload block(options={})
|
164
|
+
# @param options [Hash] A customizable set of options.
|
164
165
|
def blocked_ids(*args)
|
165
166
|
ids_from_response(:get, "/1.1/blocks/ids.json", args)
|
166
167
|
end
|
@@ -247,9 +248,8 @@ module Twitter
|
|
247
248
|
# @option options [Symbol, String] :method Requests users via a GET request instead of the standard POST request if set to ':get'.
|
248
249
|
# @option options [Boolean] :include_entities The tweet entities node will be disincluded when set to false.
|
249
250
|
# @example Return extended information for @sferik and @pengwynn
|
250
|
-
# Twitter.users('sferik', 'pengwynn', :method => :get)
|
251
|
-
# Twitter.users(7505382, 14100886,
|
252
|
-
# Twitter.users(7505382, 14100886, {:method => :get, :include_entities => false}) # See Twitter API documentation
|
251
|
+
# Twitter.users('sferik', 'pengwynn', :method => :get) # Retrieve users with a GET request
|
252
|
+
# Twitter.users(7505382, 14100886, :method => :get) # Same as above
|
253
253
|
def users(*args)
|
254
254
|
options = extract_options!(args)
|
255
255
|
method = options.delete(:method) || :post
|
@@ -394,7 +394,7 @@ module Twitter
|
|
394
394
|
# @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
|
395
395
|
# @raise [Twitter::Error::UnprocessableEntity] Error raised when the image could not be resized or is too large.
|
396
396
|
# @return [nil]
|
397
|
-
# @param
|
397
|
+
# @param banner [File] The Base64-encoded or raw image data being uploaded as the user's new profile banner.
|
398
398
|
# @param options [Hash] A customizable set of options.
|
399
399
|
# @option options [Integer] :width The width of the preferred section of the image being uploaded in pixels. Use with height, offset_left, and offset_top to select the desired region of the image to use.
|
400
400
|
# @option options [Integer] :height The height of the preferred section of the image being uploaded in pixels. Use with width, offset_left, and offset_top to select the desired region of the image to use.
|
data/lib/twitter/api/utils.rb
CHANGED
@@ -24,7 +24,6 @@ module Twitter
|
|
24
24
|
# @param request_method [Symbol]
|
25
25
|
# @param path [String]
|
26
26
|
# @param params [Hash]
|
27
|
-
# @param options [Hash]
|
28
27
|
# @return [Array]
|
29
28
|
def collection_from_response(klass, request_method, path, params={})
|
30
29
|
collection_from_array(klass, send(request_method.to_sym, path, params)[:body])
|
@@ -34,7 +33,6 @@ module Twitter
|
|
34
33
|
# @param request_method [Symbol]
|
35
34
|
# @param path [String]
|
36
35
|
# @param params [Hash]
|
37
|
-
# @param options [Hash]
|
38
36
|
# @return [Object]
|
39
37
|
def object_from_response(klass, request_method, path, params={})
|
40
38
|
response = send(request_method.to_sym, path, params)
|
@@ -68,7 +66,7 @@ module Twitter
|
|
68
66
|
# @param request_method [Symbol]
|
69
67
|
# @param path [String]
|
70
68
|
# @param params [Hash]
|
71
|
-
# @param
|
69
|
+
# @param method_name [Symbol]
|
72
70
|
# @return [Twitter::Cursor]
|
73
71
|
def cursor_from_response(collection_name, klass, request_method, path, params={}, method_name=calling_method)
|
74
72
|
response = send(request_method.to_sym, path, params)
|
data/lib/twitter/configurable.rb
CHANGED
@@ -1,23 +1,10 @@
|
|
1
1
|
module Enumerable
|
2
2
|
|
3
3
|
def threaded_map
|
4
|
-
|
5
|
-
|
6
|
-
each do |object|
|
7
|
-
threads << Thread.new { yield object }
|
8
|
-
end
|
9
|
-
threads.map(&:value)
|
4
|
+
threads = map do |object|
|
5
|
+
Thread.new { yield object }
|
10
6
|
end
|
11
|
-
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def abort_on_exception
|
16
|
-
initial_abort_on_exception = Thread.abort_on_exception
|
17
|
-
Thread.abort_on_exception ||= true
|
18
|
-
yield
|
19
|
-
ensure
|
20
|
-
Thread.abort_on_exception = initial_abort_on_exception
|
7
|
+
threads.map(&:value)
|
21
8
|
end
|
22
9
|
|
23
10
|
end
|
data/lib/twitter/error.rb
CHANGED
data/lib/twitter/list.rb
CHANGED
data/lib/twitter/media/photo.rb
CHANGED
data/lib/twitter/place.rb
CHANGED
data/lib/twitter/relationship.rb
CHANGED
@@ -3,17 +3,12 @@ require 'faraday'
|
|
3
3
|
module Twitter
|
4
4
|
module Request
|
5
5
|
class MultipartWithFile < Faraday::Middleware
|
6
|
-
CONTENT_TYPE = 'Content-Type'
|
7
|
-
class << self
|
8
|
-
attr_accessor :mime_type
|
9
|
-
mime_type = 'multipart/form-data'.freeze
|
10
|
-
end
|
6
|
+
CONTENT_TYPE = 'Content-Type'
|
11
7
|
|
12
8
|
def call(env)
|
13
9
|
env[:body].each do |key, value|
|
14
10
|
if value.respond_to?(:to_io)
|
15
11
|
env[:body][key] = Faraday::UploadIO.new(value, mime_type(value.path), value.path)
|
16
|
-
env[:request_headers][CONTENT_TYPE] = self.class.mime_type
|
17
12
|
end
|
18
13
|
end if env[:body].is_a?(::Hash)
|
19
14
|
@app.call(env)
|
data/lib/twitter/settings.rb
CHANGED
data/lib/twitter/suggestion.rb
CHANGED
data/lib/twitter/tweet.rb
CHANGED
@@ -1,14 +1,6 @@
|
|
1
1
|
require 'twitter/creatable'
|
2
|
-
require 'twitter/entity/hashtag'
|
3
|
-
require 'twitter/entity/url'
|
4
|
-
require 'twitter/entity/user_mention'
|
5
2
|
require 'twitter/exceptable'
|
6
|
-
require 'twitter/geo_factory'
|
7
3
|
require 'twitter/identity'
|
8
|
-
require 'twitter/media_factory'
|
9
|
-
require 'twitter/metadata'
|
10
|
-
require 'twitter/place'
|
11
|
-
require 'twitter/user'
|
12
4
|
|
13
5
|
module Twitter
|
14
6
|
class Tweet < Twitter::Identity
|
data/lib/twitter/user.rb
CHANGED
data/lib/twitter/version.rb
CHANGED
@@ -2,7 +2,7 @@ module Twitter
|
|
2
2
|
class Version
|
3
3
|
MAJOR = 4 unless defined? Twitter::Version::MAJOR
|
4
4
|
MINOR = 4 unless defined? Twitter::Version::MINOR
|
5
|
-
PATCH =
|
5
|
+
PATCH = 1 unless defined? Twitter::Version::PATCH
|
6
6
|
PRE = nil unless defined? Twitter::Version::PRE
|
7
7
|
|
8
8
|
class << self
|
data/spec/twitter/client_spec.rb
CHANGED
@@ -3,9 +3,7 @@ require 'helper'
|
|
3
3
|
describe Twitter::Client do
|
4
4
|
|
5
5
|
subject do
|
6
|
-
|
7
|
-
client.class_eval{public *Twitter::Client.private_instance_methods}
|
8
|
-
client
|
6
|
+
Twitter::Client.new(:consumer_key => "CK", :consumer_secret => "CS", :oauth_token => "OT", :oauth_token_secret => "OS")
|
9
7
|
end
|
10
8
|
|
11
9
|
context "with module configuration" do
|
@@ -112,10 +110,10 @@ describe Twitter::Client do
|
|
112
110
|
|
113
111
|
describe "#connection" do
|
114
112
|
it "looks like Faraday connection" do
|
115
|
-
expect(subject.connection).to respond_to(:run_request)
|
113
|
+
expect(subject.send(:connection)).to respond_to(:run_request)
|
116
114
|
end
|
117
115
|
it "memoizes the connection" do
|
118
|
-
c1, c2 = subject.connection, subject.connection
|
116
|
+
c1, c2 = subject.send(:connection), subject.send(:connection)
|
119
117
|
expect(c1.object_id).to eq c2.object_id
|
120
118
|
end
|
121
119
|
end
|
@@ -133,18 +131,18 @@ describe Twitter::Client do
|
|
133
131
|
end
|
134
132
|
it "catches Faraday errors" do
|
135
133
|
subject.stub!(:connection).and_raise(Faraday::Error::ClientError.new("Oops"))
|
136
|
-
expect{subject.
|
134
|
+
expect{subject.send(:request, :get, "/path")}.to raise_error Twitter::Error::ClientError
|
137
135
|
end
|
138
136
|
it "catches MultiJson::DecodeError errors" do
|
139
137
|
subject.stub!(:connection).and_raise(MultiJson::DecodeError.new("unexpected token", [], "<!DOCTYPE html>"))
|
140
|
-
expect{subject.
|
138
|
+
expect{subject.send(:request, :get, "/path")}.to raise_error Twitter::Error::DecodeError
|
141
139
|
end
|
142
140
|
end
|
143
141
|
|
144
142
|
describe "#auth_header" do
|
145
143
|
it "creates the correct auth headers" do
|
146
144
|
uri = "/1.1/direct_messages.json"
|
147
|
-
authorization = subject.
|
145
|
+
authorization = subject.send(:auth_header, :get, uri)
|
148
146
|
expect(authorization.options[:signature_method]).to eq "HMAC-SHA1"
|
149
147
|
expect(authorization.options[:version]).to eq "1.0"
|
150
148
|
expect(authorization.options[:consumer_key]).to eq "CK"
|
@@ -20,24 +20,4 @@ describe Twitter::Error::ClientError do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
context "when response status is 404 from lookup" do
|
24
|
-
context "using a post request" do
|
25
|
-
before do
|
26
|
-
stub_post("/1.1/users/lookup.json").with(:body => {:screen_name => "not_on_twitter"}).to_return(:status => 404, :body => fixture('no_user_matches.json'))
|
27
|
-
end
|
28
|
-
it "raises Twitter::Error::NotFound" do
|
29
|
-
expect{@client.users('not_on_twitter')}.to raise_error Twitter::Error::NotFound
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "using a get request" do
|
34
|
-
before do
|
35
|
-
stub_get("/1.1/users/lookup.json").with(:query => {:screen_name => "not_on_twitter"}).to_return(:status => 404, :body => fixture('no_user_matches.json'))
|
36
|
-
end
|
37
|
-
it "raises Twitter::Error::NotFound" do
|
38
|
-
expect{@client.users('not_on_twitter', :method => :get)}.to raise_error Twitter::Error::NotFound
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
23
|
end
|
data/spec/twitter/tweet_spec.rb
CHANGED
@@ -122,7 +122,7 @@ describe Twitter::Tweet do
|
|
122
122
|
end
|
123
123
|
it "warns when not set" do
|
124
124
|
Twitter::Tweet.new(:id => 28669546014).hashtags
|
125
|
-
expect($stderr.string).to match
|
125
|
+
expect($stderr.string).to match(/To get hashtags, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
@@ -138,7 +138,7 @@ describe Twitter::Tweet do
|
|
138
138
|
end
|
139
139
|
it "warns when not set" do
|
140
140
|
Twitter::Tweet.new(:id => 28669546014).media
|
141
|
-
expect($stderr.string).to match
|
141
|
+
expect($stderr.string).to match(/To get media, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
@@ -269,7 +269,7 @@ describe Twitter::Tweet do
|
|
269
269
|
end
|
270
270
|
it "warns when not set" do
|
271
271
|
Twitter::Tweet.new(:id => 28669546014).urls
|
272
|
-
expect($stderr.string).to match
|
272
|
+
expect($stderr.string).to match(/To get urls, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
|
273
273
|
end
|
274
274
|
end
|
275
275
|
|
@@ -322,7 +322,7 @@ describe Twitter::Tweet do
|
|
322
322
|
end
|
323
323
|
it "warns when not set" do
|
324
324
|
Twitter::Tweet.new(:id => 28669546014).user_mentions
|
325
|
-
expect($stderr.string).to match
|
325
|
+
expect($stderr.string).to match(/To get user mentions, you must pass `:include_entities => true` when requesting the Twitter::Tweet\./)
|
326
326
|
end
|
327
327
|
end
|
328
328
|
|
data/twitter.gemspec
CHANGED
@@ -4,12 +4,12 @@ require File.expand_path('../lib/twitter/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.add_dependency 'faraday', '~> 0.8'
|
6
6
|
spec.add_dependency 'multi_json', '~> 1.3'
|
7
|
-
spec.add_dependency 'simple_oauth', '~> 0.
|
8
|
-
spec.add_development_dependency '
|
7
|
+
spec.add_dependency 'simple_oauth', '~> 0.2'
|
8
|
+
spec.add_development_dependency 'json'
|
9
|
+
spec.add_development_dependency 'kramdown'
|
9
10
|
spec.add_development_dependency 'pry'
|
10
11
|
spec.add_development_dependency 'pry-nav'
|
11
12
|
spec.add_development_dependency 'rake'
|
12
|
-
spec.add_development_dependency 'redcarpet'
|
13
13
|
spec.add_development_dependency 'rspec'
|
14
14
|
spec.add_development_dependency 'simplecov'
|
15
15
|
spec.add_development_dependency 'timecop'
|
metadata
CHANGED
@@ -1,15 +1,10 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
hash: 47
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 4
|
8
|
-
- 4
|
9
|
-
- 0
|
10
|
-
version: 4.4.0
|
5
|
+
version: 4.4.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- John Nunemaker
|
14
9
|
- Wynn Netherland
|
15
10
|
- Erik Michaels-Ober
|
@@ -17,208 +12,226 @@ authors:
|
|
17
12
|
autorequire:
|
18
13
|
bindir: bin
|
19
14
|
cert_chain: []
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
prerelease: false
|
26
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
|
-
requirements:
|
15
|
+
date: 2012-12-08 00:00:00.000000000 Z
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
29
20
|
- - ~>
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
- 8
|
35
|
-
version: "0.8"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0.8'
|
23
|
+
none: false
|
24
|
+
name: faraday
|
36
25
|
type: :runtime
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: multi_json
|
40
26
|
prerelease: false
|
41
|
-
requirement:
|
27
|
+
requirement: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ~>
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0.8'
|
42
32
|
none: false
|
43
|
-
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
44
36
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
- 3
|
50
|
-
version: "1.3"
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '1.3'
|
39
|
+
none: false
|
40
|
+
name: multi_json
|
51
41
|
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: simple_oauth
|
55
42
|
prerelease: false
|
56
|
-
requirement:
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
57
48
|
none: false
|
58
|
-
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
59
52
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
- 1
|
65
|
-
- 6
|
66
|
-
version: 0.1.6
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.2'
|
55
|
+
none: false
|
56
|
+
name: simple_oauth
|
67
57
|
type: :runtime
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: oj
|
71
58
|
prerelease: false
|
72
|
-
requirement:
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ~>
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.2'
|
73
64
|
none: false
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
none: false
|
72
|
+
name: json
|
81
73
|
type: :development
|
82
|
-
version_requirements: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry
|
85
74
|
prerelease: false
|
86
|
-
requirement:
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
none: false
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
87
|
none: false
|
88
|
-
|
89
|
-
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
hash: 3
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
version: "0"
|
88
|
+
name: kramdown
|
95
89
|
type: :development
|
96
|
-
version_requirements: *id005
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-nav
|
99
90
|
prerelease: false
|
100
|
-
requirement:
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
none: false
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
101
103
|
none: false
|
102
|
-
|
103
|
-
- - ">="
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
hash: 3
|
106
|
-
segments:
|
107
|
-
- 0
|
108
|
-
version: "0"
|
104
|
+
name: pry
|
109
105
|
type: :development
|
110
|
-
version_requirements: *id006
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rake
|
113
106
|
prerelease: false
|
114
|
-
requirement:
|
107
|
+
requirement: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
none: false
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
version_requirements: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
115
119
|
none: false
|
116
|
-
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
hash: 3
|
120
|
-
segments:
|
121
|
-
- 0
|
122
|
-
version: "0"
|
120
|
+
name: pry-nav
|
123
121
|
type: :development
|
124
|
-
version_requirements: *id007
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: redcarpet
|
127
122
|
prerelease: false
|
128
|
-
requirement:
|
123
|
+
requirement: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
none: false
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
version_requirements: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
129
135
|
none: false
|
130
|
-
|
131
|
-
- - ">="
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
hash: 3
|
134
|
-
segments:
|
135
|
-
- 0
|
136
|
-
version: "0"
|
136
|
+
name: rake
|
137
137
|
type: :development
|
138
|
-
version_requirements: *id008
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rspec
|
141
138
|
prerelease: false
|
142
|
-
requirement:
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
none: false
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
143
151
|
none: false
|
144
|
-
|
145
|
-
- - ">="
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
hash: 3
|
148
|
-
segments:
|
149
|
-
- 0
|
150
|
-
version: "0"
|
152
|
+
name: rspec
|
151
153
|
type: :development
|
152
|
-
version_requirements: *id009
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: simplecov
|
155
154
|
prerelease: false
|
156
|
-
requirement:
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
none: false
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
157
167
|
none: false
|
158
|
-
|
159
|
-
- - ">="
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
hash: 3
|
162
|
-
segments:
|
163
|
-
- 0
|
164
|
-
version: "0"
|
168
|
+
name: simplecov
|
165
169
|
type: :development
|
166
|
-
version_requirements: *id010
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: timecop
|
169
170
|
prerelease: false
|
170
|
-
requirement:
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
none: false
|
177
|
+
- !ruby/object:Gem::Dependency
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ! '>='
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
171
183
|
none: false
|
172
|
-
|
173
|
-
- - ">="
|
174
|
-
- !ruby/object:Gem::Version
|
175
|
-
hash: 3
|
176
|
-
segments:
|
177
|
-
- 0
|
178
|
-
version: "0"
|
184
|
+
name: timecop
|
179
185
|
type: :development
|
180
|
-
version_requirements: *id011
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: webmock
|
183
186
|
prerelease: false
|
184
|
-
requirement:
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ! '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
none: false
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
version_requirements: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
185
199
|
none: false
|
186
|
-
|
187
|
-
- - ">="
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
hash: 3
|
190
|
-
segments:
|
191
|
-
- 0
|
192
|
-
version: "0"
|
200
|
+
name: webmock
|
193
201
|
type: :development
|
194
|
-
version_requirements: *id012
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: yard
|
197
202
|
prerelease: false
|
198
|
-
requirement:
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - ! '>='
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
none: false
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ! '>='
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
199
215
|
none: false
|
200
|
-
|
201
|
-
- - ">="
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
hash: 3
|
204
|
-
segments:
|
205
|
-
- 0
|
206
|
-
version: "0"
|
216
|
+
name: yard
|
207
217
|
type: :development
|
208
|
-
|
218
|
+
prerelease: false
|
219
|
+
requirement: !ruby/object:Gem::Requirement
|
220
|
+
requirements:
|
221
|
+
- - ! '>='
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: '0'
|
224
|
+
none: false
|
209
225
|
description: A Ruby interface to the Twitter API.
|
210
|
-
email:
|
226
|
+
email:
|
211
227
|
- nunemaker@gmail.com
|
212
228
|
- wynn.netherland@gmail.com
|
213
229
|
- sferik@gmail.com
|
214
230
|
- steve.richert@gmail.com
|
215
231
|
executables: []
|
216
|
-
|
217
232
|
extensions: []
|
218
|
-
|
219
233
|
extra_rdoc_files: []
|
220
|
-
|
221
|
-
files:
|
234
|
+
files:
|
222
235
|
- .yardopts
|
223
236
|
- CHANGELOG.md
|
224
237
|
- CONTRIBUTING.md
|
@@ -353,7 +366,6 @@ files:
|
|
353
366
|
- spec/fixtures/media_timeline.json
|
354
367
|
- spec/fixtures/members.json
|
355
368
|
- spec/fixtures/memberships.json
|
356
|
-
- spec/fixtures/no_user_matches.json
|
357
369
|
- spec/fixtures/not_acceptable.json
|
358
370
|
- spec/fixtures/not_following.json
|
359
371
|
- spec/fixtures/not_found.json
|
@@ -458,41 +470,31 @@ files:
|
|
458
470
|
- spec/twitter/user_spec.rb
|
459
471
|
- spec/twitter_spec.rb
|
460
472
|
homepage: http://sferik.github.com/twitter/
|
461
|
-
licenses:
|
473
|
+
licenses:
|
462
474
|
- MIT
|
463
475
|
post_install_message:
|
464
476
|
rdoc_options: []
|
465
|
-
|
466
|
-
require_paths:
|
477
|
+
require_paths:
|
467
478
|
- lib
|
468
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
479
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
480
|
+
requirements:
|
481
|
+
- - ! '>='
|
482
|
+
- !ruby/object:Gem::Version
|
483
|
+
version: '0'
|
469
484
|
none: false
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
segments:
|
475
|
-
- 0
|
476
|
-
version: "0"
|
477
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
478
|
-
none: false
|
479
|
-
requirements:
|
480
|
-
- - ">="
|
481
|
-
- !ruby/object:Gem::Version
|
482
|
-
hash: 23
|
483
|
-
segments:
|
484
|
-
- 1
|
485
|
-
- 3
|
486
|
-
- 6
|
485
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
486
|
+
requirements:
|
487
|
+
- - ! '>='
|
488
|
+
- !ruby/object:Gem::Version
|
487
489
|
version: 1.3.6
|
490
|
+
none: false
|
488
491
|
requirements: []
|
489
|
-
|
490
492
|
rubyforge_project:
|
491
|
-
rubygems_version: 1.8.
|
493
|
+
rubygems_version: 1.8.23
|
492
494
|
signing_key:
|
493
495
|
specification_version: 3
|
494
496
|
summary: A Ruby interface to the Twitter API.
|
495
|
-
test_files:
|
497
|
+
test_files:
|
496
498
|
- spec/fixtures/about_me.json
|
497
499
|
- spec/fixtures/activity_summary.json
|
498
500
|
- spec/fixtures/all.json
|
@@ -530,7 +532,6 @@ test_files:
|
|
530
532
|
- spec/fixtures/media_timeline.json
|
531
533
|
- spec/fixtures/members.json
|
532
534
|
- spec/fixtures/memberships.json
|
533
|
-
- spec/fixtures/no_user_matches.json
|
534
535
|
- spec/fixtures/not_acceptable.json
|
535
536
|
- spec/fixtures/not_following.json
|
536
537
|
- spec/fixtures/not_found.json
|
@@ -1 +0,0 @@
|
|
1
|
-
{"errors":[{"code":17,"message":"No user matches for specified terms"}]}
|