twitter 4.4.2 → 4.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +7 -0
- data/lib/twitter.rb +1 -1
- data/lib/twitter/api/arguments.rb +13 -0
- data/lib/twitter/api/direct_messages.rb +8 -7
- data/lib/twitter/api/favorites.rb +11 -10
- data/lib/twitter/api/friends_and_followers.rb +16 -31
- data/lib/twitter/api/help.rb +1 -1
- data/lib/twitter/api/lists.rb +41 -51
- data/lib/twitter/api/places_and_geo.rb +5 -5
- data/lib/twitter/api/saved_searches.rb +9 -8
- data/lib/twitter/api/spam_reporting.rb +1 -1
- data/lib/twitter/api/suggested_users.rb +6 -5
- data/lib/twitter/api/timelines.rb +6 -8
- data/lib/twitter/api/trends.rb +3 -3
- data/lib/twitter/api/tweets.rb +14 -13
- data/lib/twitter/api/undocumented.rb +7 -9
- data/lib/twitter/api/users.rb +22 -19
- data/lib/twitter/api/utils.rb +61 -62
- data/lib/twitter/base.rb +0 -1
- data/lib/twitter/configurable.rb +24 -5
- data/lib/twitter/core_ext/kernel.rb +0 -5
- data/lib/twitter/cursor.rb +1 -1
- data/lib/twitter/default.rb +9 -5
- data/lib/twitter/error/configuration_error.rb +8 -0
- data/lib/twitter/tweet.rb +6 -3
- data/lib/twitter/version.rb +1 -1
- data/spec/fixtures/about_me.json +1 -1
- data/spec/fixtures/by_friends.json +1 -1
- data/spec/fixtures/category.json +1 -1
- data/spec/fixtures/contributees.json +1 -1
- data/spec/fixtures/direct_messages.json +1 -1
- data/spec/fixtures/followers_list.json +1 -1
- data/spec/fixtures/followers_list2.json +1 -1
- data/spec/fixtures/friends_list.json +1 -1
- data/spec/fixtures/friends_list2.json +1 -1
- data/spec/fixtures/lists.json +1 -1
- data/spec/fixtures/locations.json +1 -1
- data/spec/fixtures/members.json +1 -1
- data/spec/fixtures/memberships.json +1 -1
- data/spec/fixtures/memberships2.json +1 -1
- data/spec/fixtures/retweets.json +1 -1
- data/spec/fixtures/search.json +1 -1
- data/spec/fixtures/search_malformed.json +1 -1
- data/spec/fixtures/subscriptions.json +1 -1
- data/spec/fixtures/subscriptions2.json +1 -1
- data/spec/fixtures/user_timeline.json +1 -1
- data/spec/fixtures/users_list.json +1 -1
- data/spec/fixtures/users_list2.json +1 -1
- data/spec/twitter/api/favorites_spec.rb +4 -4
- data/spec/twitter/api/friends_and_followers_spec.rb +32 -28
- data/spec/twitter/api/suggested_users_spec.rb +1 -1
- data/spec/twitter/api/tweets_spec.rb +4 -4
- data/spec/twitter/api/users_spec.rb +6 -6
- data/spec/twitter/client_spec.rb +1 -1
- data/spec/twitter_spec.rb +24 -0
- data/twitter.gemspec +3 -4
- metadata +10 -48
- data/spec/fixtures/all.json +0 -1
- data/spec/fixtures/contributors.json +0 -1
- data/spec/fixtures/enhance_your_calm.text +0 -11
- data/spec/fixtures/favorites.json +0 -1
- data/spec/fixtures/image_facets.json +0 -1
- data/spec/fixtures/media_timeline.json +0 -1
- data/spec/fixtures/profile_image.text +0 -24
- data/spec/fixtures/recommendations.json +0 -1
- data/spec/fixtures/related_results.json +0 -1
- data/spec/fixtures/retweeted_status.json +0 -1
- data/spec/fixtures/retweeters_of.json +0 -1
- data/spec/fixtures/status_with_media.json +0 -104
- data/spec/fixtures/trends_current.json +0 -1
- data/spec/fixtures/trends_daily.json +0 -1
- data/spec/fixtures/trends_weekly.json +0 -1
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
4.4.3
|
2
|
+
-----
|
3
|
+
* [Add `Twitter::API::Arguments` class; remove `extract_options!` helper method](https://github.com/sferik/twitter/commit/65972c599ced8da27fbbfa72aeead92464355583)
|
4
|
+
* [Ensure credentials set via `Twitter.configure` are of a valid type](https://github.com/sferik/twitter/commit/fc152dbe56b99639896bcaaf7fe158659e8c50b9)
|
5
|
+
* [Delegate `Twitter::Tweet#profile_image_url` and `Twitter::Tweet#profile_image_url_https` to `Twitter::Tweet#user`](https://github.com/sferik/twitter/commit/7bd6f8f589a91a8c82363d07da77ec012890c6cb)
|
6
|
+
* [Fix timeout bug; lock `faraday` dependency to version < 0.10](https://github.com/sferik/twitter/commit/01e2781e4a78137ca4e5e6d3e4faf2552ee9ec76)
|
7
|
+
|
1
8
|
4.4.2
|
2
9
|
-----
|
3
10
|
* [Fix to `Twitter::API::FriendsAndFollowers#friends` and `Twitter::API::FriendsAndFollowers#followers`](https://github.com/sferik/twitter/commit/d97438f5de89a1a15ad8ff5e67e8e0c7d412911f) ([@nbraem](https://twitter.com/nbraem))
|
data/lib/twitter.rb
CHANGED
@@ -38,7 +38,7 @@ module Twitter
|
|
38
38
|
#
|
39
39
|
# @return [Twitter::Client]
|
40
40
|
def client
|
41
|
-
@client = Twitter::Client.new(options) unless defined?(@client) && @client.
|
41
|
+
@client = Twitter::Client.new(options) unless defined?(@client) && @client.hash == options.hash
|
42
42
|
@client
|
43
43
|
end
|
44
44
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'twitter/api/arguments'
|
1
2
|
require 'twitter/api/utils'
|
2
3
|
require 'twitter/direct_message'
|
3
4
|
require 'twitter/user'
|
@@ -23,7 +24,7 @@ module Twitter
|
|
23
24
|
# @example Return the 20 most recent direct messages sent to the authenticating user
|
24
25
|
# Twitter.direct_messages_received
|
25
26
|
def direct_messages_received(options={})
|
26
|
-
|
27
|
+
objects_from_response(Twitter::DirectMessage, :get, "/1.1/direct_messages.json", options)
|
27
28
|
end
|
28
29
|
|
29
30
|
# Returns the 20 most recent direct messages sent by the authenticating user
|
@@ -42,7 +43,7 @@ module Twitter
|
|
42
43
|
# @example Return the 20 most recent direct messages sent by the authenticating user
|
43
44
|
# Twitter.direct_messages_sent
|
44
45
|
def direct_messages_sent(options={})
|
45
|
-
|
46
|
+
objects_from_response(Twitter::DirectMessage, :get, "/1.1/direct_messages/sent.json", options)
|
46
47
|
end
|
47
48
|
|
48
49
|
# Returns a direct message
|
@@ -92,12 +93,12 @@ module Twitter
|
|
92
93
|
# @param ids [Array<Integer>, Set<Integer>] An array of Tweet IDs.
|
93
94
|
# @param options [Hash] A customizable set of options.
|
94
95
|
def direct_messages(*args)
|
95
|
-
|
96
|
-
if
|
97
|
-
direct_messages_received(options)
|
96
|
+
arguments = Twitter::API::Arguments.new(args)
|
97
|
+
if arguments.empty?
|
98
|
+
direct_messages_received(arguments.options)
|
98
99
|
else
|
99
|
-
|
100
|
-
direct_message(id, options)
|
100
|
+
arguments.flatten.threaded_map do |id|
|
101
|
+
direct_message(id, arguments.options)
|
101
102
|
end
|
102
103
|
end
|
103
104
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'twitter/api/arguments'
|
1
2
|
require 'twitter/api/utils'
|
2
3
|
require 'twitter/error/already_favorited'
|
3
4
|
require 'twitter/error/forbidden'
|
@@ -32,11 +33,11 @@ module Twitter
|
|
32
33
|
# @example Return the 20 most recent favorite Tweets for @sferik
|
33
34
|
# Twitter.favorites('sferik')
|
34
35
|
def favorites(*args)
|
35
|
-
|
36
|
-
if user =
|
37
|
-
merge_user!(options, user)
|
36
|
+
arguments = Twitter::API::Arguments.new(args)
|
37
|
+
if user = arguments.pop
|
38
|
+
merge_user!(arguments.options, user)
|
38
39
|
end
|
39
|
-
|
40
|
+
objects_from_response(Twitter::Tweet, :get, "/1.1/favorites/list.json", arguments.options)
|
40
41
|
end
|
41
42
|
alias favourites favorites
|
42
43
|
|
@@ -76,10 +77,10 @@ module Twitter
|
|
76
77
|
# @param ids [Array<Integer>, Set<Integer>] An array of Tweet IDs.
|
77
78
|
# @param options [Hash] A customizable set of options.
|
78
79
|
def favorite(*args)
|
79
|
-
|
80
|
-
|
80
|
+
arguments = Twitter::API::Arguments.new(args)
|
81
|
+
arguments.flatten.threaded_map do |id|
|
81
82
|
begin
|
82
|
-
object_from_response(Twitter::Tweet, :post, "/1.1/favorites/create.json", options.merge(:id => id))
|
83
|
+
object_from_response(Twitter::Tweet, :post, "/1.1/favorites/create.json", arguments.options.merge(:id => id))
|
83
84
|
rescue Twitter::Error::Forbidden => error
|
84
85
|
raise unless error.message == Twitter::Error::AlreadyFavorited::MESSAGE
|
85
86
|
end
|
@@ -106,10 +107,10 @@ module Twitter
|
|
106
107
|
# @param ids [Array<Integer>, Set<Integer>] An array of Tweet IDs.
|
107
108
|
# @param options [Hash] A customizable set of options.
|
108
109
|
def favorite!(*args)
|
109
|
-
|
110
|
-
|
110
|
+
arguments = Twitter::API::Arguments.new(args)
|
111
|
+
arguments.flatten.threaded_map do |id|
|
111
112
|
begin
|
112
|
-
object_from_response(Twitter::Tweet, :post, "/1.1/favorites/create.json", options.merge(:id => id))
|
113
|
+
object_from_response(Twitter::Tweet, :post, "/1.1/favorites/create.json", arguments.options.merge(:id => id))
|
113
114
|
rescue Twitter::Error::Forbidden => error
|
114
115
|
handle_forbidden_error(Twitter::Error::AlreadyFavorited, error)
|
115
116
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'twitter/api/arguments'
|
1
2
|
require 'twitter/api/utils'
|
2
3
|
require 'twitter/cursor'
|
3
4
|
require 'twitter/error/forbidden'
|
@@ -31,7 +32,7 @@ module Twitter
|
|
31
32
|
# Twitter.friend_ids('sferik')
|
32
33
|
# Twitter.friend_ids(7505382) # Same as above
|
33
34
|
def friend_ids(*args)
|
34
|
-
|
35
|
+
cursor_from_response_with_user(:ids, nil, :get, "/1.1/friends/ids.json", args, :friend_ids)
|
35
36
|
end
|
36
37
|
|
37
38
|
# @see https://dev.twitter.com/docs/api/1.1/get/followers/ids
|
@@ -56,7 +57,7 @@ module Twitter
|
|
56
57
|
# Twitter.follower_ids('sferik')
|
57
58
|
# Twitter.follower_ids(7505382) # Same as above
|
58
59
|
def follower_ids(*args)
|
59
|
-
|
60
|
+
cursor_from_response_with_user(:ids, nil, :get, "/1.1/followers/ids.json", args, :follower_ids)
|
60
61
|
end
|
61
62
|
|
62
63
|
# Returns the relationship of the authenticating user to the comma separated list of up to 100 screen_names or user_ids provided. Values for connections can be: following, following_requested, followed_by, none.
|
@@ -76,9 +77,9 @@ module Twitter
|
|
76
77
|
# @param users [Array<Integer, String, Twitter::User>, Set<Integer, String, Twitter::User>] An array of Twitter user IDs, screen names, or objects.
|
77
78
|
# @param options [Hash] A customizable set of options.
|
78
79
|
def friendships(*args)
|
79
|
-
|
80
|
-
merge_users!(options,
|
81
|
-
|
80
|
+
arguments = Twitter::API::Arguments.new(args)
|
81
|
+
merge_users!(arguments.options, arguments)
|
82
|
+
objects_from_response(Twitter::User, :get, "/1.1/friendships/lookup.json", arguments.options)
|
82
83
|
end
|
83
84
|
|
84
85
|
# Returns an array of numeric IDs for every user who has a pending request to follow the authenticating user
|
@@ -93,7 +94,6 @@ module Twitter
|
|
93
94
|
# @example Return an array of numeric IDs for every user who has a pending request to follow the authenticating user
|
94
95
|
# Twitter.friendships_incoming
|
95
96
|
def friendships_incoming(options={})
|
96
|
-
merge_default_cursor!(options)
|
97
97
|
cursor_from_response(:ids, nil, :get, "/1.1/friendships/incoming.json", options, :friendships_incoming)
|
98
98
|
end
|
99
99
|
|
@@ -109,7 +109,6 @@ module Twitter
|
|
109
109
|
# @example Return an array of numeric IDs for every protected user for whom the authenticating user has a pending follow request
|
110
110
|
# Twitter.friendships_outgoing
|
111
111
|
def friendships_outgoing(options={})
|
112
|
-
merge_default_cursor!(options)
|
113
112
|
cursor_from_response(:ids, nil, :get, "/1.1/friendships/outgoing.json", options, :friendships_outgoing)
|
114
113
|
end
|
115
114
|
|
@@ -129,17 +128,17 @@ module Twitter
|
|
129
128
|
# @param options [Hash] A customizable set of options.
|
130
129
|
# @option options [Boolean] :follow (false) Enable notifications for the target user.
|
131
130
|
def follow(*args)
|
132
|
-
|
131
|
+
arguments = Twitter::API::Arguments.new(args)
|
133
132
|
# Twitter always turns on notifications if the "follow" option is present, even if it's set to false
|
134
133
|
# so only send follow if it's true
|
135
|
-
options[:follow] = true if !!options.delete(:follow)
|
134
|
+
arguments.options[:follow] = true if !!arguments.options.delete(:follow)
|
136
135
|
existing_friends = Thread.new do
|
137
136
|
friend_ids.ids
|
138
137
|
end
|
139
138
|
new_friends = Thread.new do
|
140
139
|
users(args).map(&:id)
|
141
140
|
end
|
142
|
-
follow!(new_friends.value - existing_friends.value, options)
|
141
|
+
follow!(new_friends.value - existing_friends.value, arguments.options)
|
143
142
|
end
|
144
143
|
alias friendship_create follow
|
145
144
|
|
@@ -159,14 +158,13 @@ module Twitter
|
|
159
158
|
# @param options [Hash] A customizable set of options.
|
160
159
|
# @option options [Boolean] :follow (false) Enable notifications for the target user.
|
161
160
|
def follow!(*args)
|
162
|
-
|
161
|
+
arguments = Twitter::API::Arguments.new(args)
|
163
162
|
# Twitter always turns on notifications if the "follow" option is present, even if it's set to false
|
164
163
|
# so only send follow if it's true
|
165
|
-
options[:follow] = true if !!options.delete(:follow)
|
166
|
-
|
164
|
+
arguments.options[:follow] = true if !!arguments.options.delete(:follow)
|
165
|
+
arguments.flatten.threaded_map do |user|
|
167
166
|
begin
|
168
|
-
merge_user
|
169
|
-
object_from_response(Twitter::User, :post, "/1.1/friendships/create.json", options)
|
167
|
+
object_from_response(Twitter::User, :post, "/1.1/friendships/create.json", merge_user(arguments.options, user))
|
170
168
|
rescue Twitter::Error::Forbidden
|
171
169
|
# This error will be raised if the user doesn't have permission to
|
172
170
|
# follow list_member, for whatever reason.
|
@@ -190,7 +188,7 @@ module Twitter
|
|
190
188
|
# @param users [Array<Integer, String, Twitter::User>, Set<Integer, String, Twitter::User>] An array of Twitter user IDs, screen names, or objects.
|
191
189
|
# @param options [Hash] A customizable set of options.
|
192
190
|
def unfollow(*args)
|
193
|
-
|
191
|
+
threaded_user_objects_from_response(:post, "/1.1/friendships/destroy.json", args)
|
194
192
|
end
|
195
193
|
alias friendship_destroy unfollow
|
196
194
|
|
@@ -282,7 +280,7 @@ module Twitter
|
|
282
280
|
# Twitter.followers('sferik')
|
283
281
|
# Twitter.followers(7505382) # Same as above
|
284
282
|
def followers(*args)
|
285
|
-
|
283
|
+
cursor_from_response_with_user(:users, Twitter::User, :get, "/1.1/followers/list.json", args, :followers)
|
286
284
|
end
|
287
285
|
|
288
286
|
# Returns a cursored collection of user objects for every user the specified user is following (otherwise known as their "friends").
|
@@ -313,23 +311,10 @@ module Twitter
|
|
313
311
|
# Twitter.friends('sferik')
|
314
312
|
# Twitter.friends(7505382) # Same as above
|
315
313
|
def friends(*args)
|
316
|
-
|
314
|
+
cursor_from_response_with_user(:users, Twitter::User, :get, "/1.1/friends/list.json", args, :friends)
|
317
315
|
end
|
318
316
|
alias following friends
|
319
317
|
|
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, calling_method)
|
327
|
-
options = extract_options!(args)
|
328
|
-
merge_default_cursor!(options)
|
329
|
-
merge_user!(options, args.pop || screen_name) unless options[:user_id] || options[:screen_name]
|
330
|
-
cursor_from_response(:users, Twitter::User, request_method, path, options, calling_method)
|
331
|
-
end
|
332
|
-
|
333
318
|
end
|
334
319
|
end
|
335
320
|
end
|
data/lib/twitter/api/help.rb
CHANGED
@@ -30,7 +30,7 @@ module Twitter
|
|
30
30
|
# @example Return the list of languages Twitter supports
|
31
31
|
# Twitter.languages
|
32
32
|
def languages(options={})
|
33
|
-
|
33
|
+
objects_from_response(Twitter::Language, :get, "/1.1/help/languages.json", options)
|
34
34
|
end
|
35
35
|
|
36
36
|
# Returns {https://twitter.com/privacy Twitter's Privacy Policy}
|
data/lib/twitter/api/lists.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
require 'twitter/api/arguments'
|
1
2
|
require 'twitter/api/utils'
|
3
|
+
require 'twitter/core_ext/enumerable'
|
2
4
|
require 'twitter/cursor'
|
3
5
|
require 'twitter/error/forbidden'
|
4
6
|
require 'twitter/error/not_found'
|
@@ -30,7 +32,7 @@ module Twitter
|
|
30
32
|
# Twitter.lists('sferik')
|
31
33
|
# Twitter.lists(7505382)
|
32
34
|
def lists(*args)
|
33
|
-
|
35
|
+
objects_from_response_with_user(Twitter::List, :get, "/1.1/lists/list.json", args)
|
34
36
|
end
|
35
37
|
alias lists_subscribed_to lists
|
36
38
|
|
@@ -63,10 +65,10 @@ module Twitter
|
|
63
65
|
# Twitter.list_timeline(7505382, 'presidents')
|
64
66
|
# Twitter.list_timeline(7505382, 8863586)
|
65
67
|
def list_timeline(*args)
|
66
|
-
|
67
|
-
merge_list!(options,
|
68
|
-
merge_owner!(options,
|
69
|
-
|
68
|
+
arguments = Twitter::API::Arguments.new(args)
|
69
|
+
merge_list!(arguments.options, arguments.pop)
|
70
|
+
merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
|
71
|
+
objects_from_response(Twitter::Tweet, :get, "/1.1/lists/statuses.json", arguments.options)
|
70
72
|
end
|
71
73
|
|
72
74
|
# Removes the specified member from the list
|
@@ -95,7 +97,7 @@ module Twitter
|
|
95
97
|
# Twitter.list_remove_member('sferik', 8863586, 'BarackObama')
|
96
98
|
# Twitter.list_remove_member(7505382, 'presidents', 813286)
|
97
99
|
def list_remove_member(*args)
|
98
|
-
|
100
|
+
list_from_response_with_user(:post, "/1.1/lists/members/destroy.json", args)
|
99
101
|
end
|
100
102
|
|
101
103
|
# List the lists the specified user has been added to
|
@@ -120,7 +122,7 @@ module Twitter
|
|
120
122
|
# Twitter.memberships('sferik')
|
121
123
|
# Twitter.memberships(7505382)
|
122
124
|
def memberships(*args)
|
123
|
-
|
125
|
+
cursor_from_response_with_user(:lists, Twitter::List, :get, "/1.1/lists/memberships.json", args, :memberships)
|
124
126
|
end
|
125
127
|
|
126
128
|
# Returns the subscribers of the specified list
|
@@ -147,7 +149,7 @@ module Twitter
|
|
147
149
|
# Twitter.list_subscribers('sferik', 8863586)
|
148
150
|
# Twitter.list_subscribers(7505382, 'presidents')
|
149
151
|
def list_subscribers(*args)
|
150
|
-
|
152
|
+
cursor_from_response_with_list(:get, "/1.1/lists/subscribers.json", args, :list_subscribers)
|
151
153
|
end
|
152
154
|
|
153
155
|
# Make the authenticated user follow the specified list
|
@@ -260,7 +262,7 @@ module Twitter
|
|
260
262
|
# Twitter.list_add_members(7505382, 8863586, ['BarackObama', 'pengwynn'])
|
261
263
|
# Twitter.list_add_members(7505382, 8863586, [813286, 18755393])
|
262
264
|
def list_add_members(*args)
|
263
|
-
|
265
|
+
list_from_response_with_users(:post, "/1.1/lists/members/create_all.json", args)
|
264
266
|
end
|
265
267
|
|
266
268
|
# Check if a user is a member of the specified list
|
@@ -315,7 +317,7 @@ module Twitter
|
|
315
317
|
# Twitter.list_members(7505382, 'presidents')
|
316
318
|
# Twitter.list_members(7505382, 8863586)
|
317
319
|
def list_members(*args)
|
318
|
-
|
320
|
+
cursor_from_response_with_list(:get, "/1.1/lists/members.json", args, :list_members)
|
319
321
|
end
|
320
322
|
|
321
323
|
# Add a member to a list
|
@@ -344,7 +346,7 @@ module Twitter
|
|
344
346
|
# Twitter.list_add_member(7505382, 'presidents', 813286)
|
345
347
|
# Twitter.list_add_member(7505382, 8863586, 813286)
|
346
348
|
def list_add_member(*args)
|
347
|
-
|
349
|
+
list_from_response_with_user(:post, "/1.1/lists/members/create.json", args)
|
348
350
|
end
|
349
351
|
|
350
352
|
# Deletes the specified list
|
@@ -469,7 +471,7 @@ module Twitter
|
|
469
471
|
# Twitter.subscriptions('sferik')
|
470
472
|
# Twitter.subscriptions(7505382)
|
471
473
|
def subscriptions(*args)
|
472
|
-
|
474
|
+
cursor_from_response_with_user(:lists, Twitter::List, :get, "/1.1/lists/subscriptions.json", args, :subscriptions)
|
473
475
|
end
|
474
476
|
|
475
477
|
# Removes specified members from the list
|
@@ -501,7 +503,7 @@ module Twitter
|
|
501
503
|
# Twitter.list_remove_members(7505382, 8863586, ['BarackObama', 'pengwynn'])
|
502
504
|
# Twitter.list_remove_members(7505382, 8863586, [813286, 18755393])
|
503
505
|
def list_remove_members(*args)
|
504
|
-
|
506
|
+
list_from_response_with_users(:post, "/1.1/lists/members/destroy_all.json", args)
|
505
507
|
end
|
506
508
|
|
507
509
|
private
|
@@ -511,57 +513,45 @@ module Twitter
|
|
511
513
|
# @param args [Array]
|
512
514
|
# @return [Array<Twitter::User>]
|
513
515
|
def list_from_response(request_method, path, args)
|
514
|
-
|
515
|
-
merge_list!(options,
|
516
|
-
merge_owner!(options,
|
517
|
-
object_from_response(Twitter::List, request_method, path, options)
|
516
|
+
arguments = Twitter::API::Arguments.new(args)
|
517
|
+
merge_list!(arguments.options, arguments.pop)
|
518
|
+
merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
|
519
|
+
object_from_response(Twitter::List, request_method, path, arguments.options)
|
518
520
|
end
|
519
521
|
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
options = extract_options!(args)
|
526
|
-
merge_default_cursor!(options)
|
527
|
-
merge_user!(options, args.pop || screen_name) unless options[:user_id] || options[:screen_name]
|
528
|
-
cursor_from_response(:lists, Twitter::List, request_method, path, options, calling_method)
|
529
|
-
end
|
530
|
-
|
531
|
-
def list_users(request_method, path, args, calling_method)
|
532
|
-
options = extract_options!(args)
|
533
|
-
merge_default_cursor!(options)
|
534
|
-
merge_list!(options, args.pop)
|
535
|
-
merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
|
536
|
-
cursor_from_response(:users, Twitter::User, request_method, path, options, calling_method)
|
522
|
+
def cursor_from_response_with_list(request_method, path, args, calling_method)
|
523
|
+
arguments = Twitter::API::Arguments.new(args)
|
524
|
+
merge_list!(arguments.options, arguments.pop)
|
525
|
+
merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
|
526
|
+
cursor_from_response(:users, Twitter::User, request_method, path, arguments.options, calling_method)
|
537
527
|
end
|
538
528
|
|
539
529
|
def list_user?(request_method, path, args)
|
540
|
-
|
541
|
-
merge_user!(options,
|
542
|
-
merge_list!(options,
|
543
|
-
merge_owner!(options,
|
544
|
-
send(request_method.to_sym, path, options)
|
530
|
+
arguments = Twitter::API::Arguments.new(args)
|
531
|
+
merge_user!(arguments.options, arguments.pop)
|
532
|
+
merge_list!(arguments.options, arguments.pop)
|
533
|
+
merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
|
534
|
+
send(request_method.to_sym, path, arguments.options)
|
545
535
|
true
|
546
536
|
rescue Twitter::Error::NotFound, Twitter::Error::Forbidden
|
547
537
|
false
|
548
538
|
end
|
549
539
|
|
550
|
-
def
|
551
|
-
|
552
|
-
merge_user!(options,
|
553
|
-
merge_list!(options,
|
554
|
-
merge_owner!(options,
|
555
|
-
object_from_response(Twitter::List, request_method, path, options)
|
540
|
+
def list_from_response_with_user(request_method, path, args)
|
541
|
+
arguments = Twitter::API::Arguments.new(args)
|
542
|
+
merge_user!(arguments.options, arguments.pop)
|
543
|
+
merge_list!(arguments.options, arguments.pop)
|
544
|
+
merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
|
545
|
+
object_from_response(Twitter::List, request_method, path, arguments.options)
|
556
546
|
end
|
557
547
|
|
558
|
-
def
|
559
|
-
|
560
|
-
members =
|
561
|
-
merge_list!(options,
|
562
|
-
merge_owner!(options,
|
548
|
+
def list_from_response_with_users(request_method, path, args)
|
549
|
+
arguments = Twitter::API::Arguments.new(args)
|
550
|
+
members = arguments.pop
|
551
|
+
merge_list!(arguments.options, arguments.pop)
|
552
|
+
merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
|
563
553
|
members.flatten.each_slice(MAX_USERS_PER_REQUEST).threaded_map do |users|
|
564
|
-
object_from_response(Twitter::List, request_method, path, merge_users(options, users))
|
554
|
+
object_from_response(Twitter::List, request_method, path, merge_users(arguments.options, users))
|
565
555
|
end.last
|
566
556
|
end
|
567
557
|
|
@@ -38,7 +38,7 @@ module Twitter
|
|
38
38
|
# @example Return an array of places within the specified region
|
39
39
|
# Twitter.reverse_geocode(:lat => "37.7821120598956", :long => "-122.400612831116")
|
40
40
|
def reverse_geocode(options={})
|
41
|
-
|
41
|
+
geo_objects_from_response(:get, "/1.1/geo/reverse_geocode.json", options)
|
42
42
|
end
|
43
43
|
|
44
44
|
# Search for places that can be attached to a {Twitter::API::Tweets#update}
|
@@ -61,7 +61,7 @@ module Twitter
|
|
61
61
|
# @example Return an array of places near the IP address 74.125.19.104
|
62
62
|
# Twitter.geo_search(:ip => "74.125.19.104")
|
63
63
|
def geo_search(options={})
|
64
|
-
|
64
|
+
geo_objects_from_response(:get, "/1.1/geo/search.json", options)
|
65
65
|
end
|
66
66
|
alias places_nearby geo_search
|
67
67
|
|
@@ -82,7 +82,7 @@ module Twitter
|
|
82
82
|
# @example Return an array of places similar to Twitter HQ
|
83
83
|
# Twitter.similar_places(:lat => "37.7821120598956", :long => "-122.400612831116", :name => "Twitter HQ")
|
84
84
|
def similar_places(options={})
|
85
|
-
|
85
|
+
geo_objects_from_response(:get, "/1.1/geo/similar_places.json", options)
|
86
86
|
end
|
87
87
|
alias places_similar similar_places
|
88
88
|
|
@@ -112,8 +112,8 @@ module Twitter
|
|
112
112
|
# @param path [String]
|
113
113
|
# @param params [Hash]
|
114
114
|
# @return [Array]
|
115
|
-
def
|
116
|
-
|
115
|
+
def geo_objects_from_response(request_method, path, params={})
|
116
|
+
objects_from_array(Twitter::Place, send(request_method.to_sym, path, params)[:body][:result][:places])
|
117
117
|
end
|
118
118
|
|
119
119
|
end
|