twitter 6.2.0 → 8.0.0.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -10
  3. data/LICENSE.md +1 -1
  4. data/README.md +9 -14
  5. data/lib/twitter/base.rb +11 -11
  6. data/lib/twitter/basic_user.rb +3 -2
  7. data/lib/twitter/client.rb +8 -8
  8. data/lib/twitter/creatable.rb +7 -3
  9. data/lib/twitter/cursor.rb +15 -5
  10. data/lib/twitter/direct_message.rb +4 -3
  11. data/lib/twitter/direct_message_event.rb +44 -0
  12. data/lib/twitter/direct_messages/welcome_message.rb +17 -0
  13. data/lib/twitter/direct_messages/welcome_message_rule.rb +12 -0
  14. data/lib/twitter/direct_messages/welcome_message_rule_wrapper.rb +36 -0
  15. data/lib/twitter/direct_messages/welcome_message_wrapper.rb +42 -0
  16. data/lib/twitter/entities.rb +6 -6
  17. data/lib/twitter/entity/hashtag.rb +1 -1
  18. data/lib/twitter/entity/symbol.rb +1 -1
  19. data/lib/twitter/entity/uri.rb +1 -1
  20. data/lib/twitter/entity/user_mention.rb +1 -1
  21. data/lib/twitter/entity.rb +1 -1
  22. data/lib/twitter/enumerable.rb +15 -6
  23. data/lib/twitter/error.rb +52 -9
  24. data/lib/twitter/factory.rb +1 -1
  25. data/lib/twitter/geo/point.rb +1 -1
  26. data/lib/twitter/geo/polygon.rb +1 -1
  27. data/lib/twitter/geo.rb +2 -2
  28. data/lib/twitter/geo_factory.rb +3 -3
  29. data/lib/twitter/geo_results.rb +2 -2
  30. data/lib/twitter/headers.rb +4 -4
  31. data/lib/twitter/identity.rb +2 -2
  32. data/lib/twitter/language.rb +1 -1
  33. data/lib/twitter/list.rb +3 -2
  34. data/lib/twitter/media/animated_gif.rb +1 -1
  35. data/lib/twitter/media/photo.rb +2 -2
  36. data/lib/twitter/media/video.rb +3 -3
  37. data/lib/twitter/media/video_info.rb +2 -2
  38. data/lib/twitter/media_factory.rb +4 -4
  39. data/lib/twitter/metadata.rb +1 -1
  40. data/lib/twitter/null_object.rb +19 -5
  41. data/lib/twitter/oembed.rb +2 -1
  42. data/lib/twitter/place.rb +3 -3
  43. data/lib/twitter/premium_search_results.rb +67 -0
  44. data/lib/twitter/profile.rb +6 -6
  45. data/lib/twitter/profile_banner.rb +2 -2
  46. data/lib/twitter/rate_limit.rb +6 -6
  47. data/lib/twitter/relationship.rb +2 -1
  48. data/lib/twitter/rest/account_activity.rb +99 -0
  49. data/lib/twitter/rest/api.rb +22 -16
  50. data/lib/twitter/rest/client.rb +4 -4
  51. data/lib/twitter/rest/direct_messages/welcome_messages.rb +90 -0
  52. data/lib/twitter/rest/direct_messages.rb +136 -47
  53. data/lib/twitter/rest/favorites.rb +17 -21
  54. data/lib/twitter/rest/form_encoder.rb +27 -0
  55. data/lib/twitter/rest/friends_and_followers.rb +21 -21
  56. data/lib/twitter/rest/help.rb +6 -18
  57. data/lib/twitter/rest/lists.rb +33 -32
  58. data/lib/twitter/rest/oauth.rb +8 -8
  59. data/lib/twitter/rest/places_and_geo.rb +6 -6
  60. data/lib/twitter/rest/premium_search.rb +34 -0
  61. data/lib/twitter/rest/request.rb +64 -31
  62. data/lib/twitter/rest/saved_searches.rb +6 -6
  63. data/lib/twitter/rest/search.rb +6 -5
  64. data/lib/twitter/rest/spam_reporting.rb +3 -3
  65. data/lib/twitter/rest/suggested_users.rb +5 -5
  66. data/lib/twitter/rest/timelines.rb +8 -7
  67. data/lib/twitter/rest/trends.rb +7 -7
  68. data/lib/twitter/rest/tweets.rb +20 -53
  69. data/lib/twitter/rest/undocumented.rb +7 -7
  70. data/lib/twitter/rest/upload_utils.rb +68 -0
  71. data/lib/twitter/rest/users.rb +32 -32
  72. data/lib/twitter/rest/utils.rb +41 -24
  73. data/lib/twitter/saved_search.rb +2 -2
  74. data/lib/twitter/search_results.rb +10 -9
  75. data/lib/twitter/settings.rb +2 -1
  76. data/lib/twitter/size.rb +2 -2
  77. data/lib/twitter/source_user.rb +1 -1
  78. data/lib/twitter/streaming/client.rb +19 -15
  79. data/lib/twitter/streaming/connection.rb +19 -7
  80. data/lib/twitter/streaming/message_parser.rb +7 -7
  81. data/lib/twitter/streaming/response.rb +12 -10
  82. data/lib/twitter/suggestion.rb +3 -3
  83. data/lib/twitter/target_user.rb +1 -1
  84. data/lib/twitter/trend.rb +3 -2
  85. data/lib/twitter/trend_results.rb +5 -5
  86. data/lib/twitter/tweet.rb +13 -4
  87. data/lib/twitter/user.rb +9 -9
  88. data/lib/twitter/utils.rb +6 -4
  89. data/lib/twitter/variant.rb +2 -1
  90. data/lib/twitter/version.rb +4 -4
  91. data/lib/twitter.rb +36 -31
  92. data/twitter.gemspec +19 -19
  93. metadata +33 -37
  94. data/lib/twitter/configuration.rb +0 -27
@@ -1,10 +1,10 @@
1
- require 'twitter/arguments'
2
- require 'twitter/cursor'
3
- require 'twitter/relationship'
4
- require 'twitter/rest/request'
5
- require 'twitter/rest/utils'
6
- require 'twitter/user'
7
- require 'twitter/utils'
1
+ require "twitter/arguments"
2
+ require "twitter/cursor"
3
+ require "twitter/relationship"
4
+ require "twitter/rest/request"
5
+ require "twitter/rest/utils"
6
+ require "twitter/user"
7
+ require "twitter/utils"
8
8
 
9
9
  module Twitter
10
10
  module REST
@@ -27,7 +27,7 @@ module Twitter
27
27
  # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, URI, or object.
28
28
  # @param options [Hash] A customizable set of options.
29
29
  def friend_ids(*args)
30
- cursor_from_response_with_user(:ids, nil, '/1.1/friends/ids.json', args)
30
+ cursor_from_response_with_user(:ids, nil, "/1.1/friends/ids.json", args)
31
31
  end
32
32
 
33
33
  # @see https://dev.twitter.com/rest/reference/get/followers/ids
@@ -45,7 +45,7 @@ module Twitter
45
45
  # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, URI, or object.
46
46
  # @param options [Hash] A customizable set of options.
47
47
  def follower_ids(*args)
48
- cursor_from_response_with_user(:ids, nil, '/1.1/followers/ids.json', args)
48
+ cursor_from_response_with_user(:ids, nil, "/1.1/followers/ids.json", args)
49
49
  end
50
50
 
51
51
  # 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.
@@ -63,7 +63,7 @@ module Twitter
63
63
  def friendships(*args)
64
64
  arguments = Twitter::Arguments.new(args)
65
65
  merge_users!(arguments.options, arguments)
66
- perform_get_with_objects('/1.1/friendships/lookup.json', arguments.options, Twitter::User)
66
+ perform_get_with_objects("/1.1/friendships/lookup.json", arguments.options, Twitter::User)
67
67
  end
68
68
 
69
69
  # Returns an array of numeric IDs for every user who has a pending request to follow the authenticating user
@@ -75,7 +75,7 @@ module Twitter
75
75
  # @return [Twitter::Cursor]
76
76
  # @param options [Hash] A customizable set of options.
77
77
  def friendships_incoming(options = {})
78
- perform_get_with_cursor('/1.1/friendships/incoming.json', options, :ids)
78
+ perform_get_with_cursor("/1.1/friendships/incoming.json", options, :ids)
79
79
  end
80
80
 
81
81
  # Returns an array of numeric IDs for every protected user for whom the authenticating user has a pending follow request
@@ -87,7 +87,7 @@ module Twitter
87
87
  # @return [Twitter::Cursor]
88
88
  # @param options [Hash] A customizable set of options.
89
89
  def friendships_outgoing(options = {})
90
- perform_get_with_cursor('/1.1/friendships/outgoing.json', options, :ids)
90
+ perform_get_with_cursor("/1.1/friendships/outgoing.json", options, :ids)
91
91
  end
92
92
 
93
93
  # Allows the authenticating user to follow the specified users, unless they are already followed
@@ -131,7 +131,7 @@ module Twitter
131
131
  def follow!(*args)
132
132
  arguments = Twitter::Arguments.new(args)
133
133
  pmap(arguments) do |user|
134
- perform_post_with_object('/1.1/friendships/create.json', merge_user(arguments.options, user), Twitter::User)
134
+ perform_post_with_object("/1.1/friendships/create.json", merge_user(arguments.options, user), Twitter::User)
135
135
  end.compact
136
136
  end
137
137
  alias create_friendship! follow!
@@ -149,7 +149,7 @@ module Twitter
149
149
  # @param users [Enumerable<Integer, String, Twitter::User>] A collection of Twitter user IDs, screen names, or objects.
150
150
  # @param options [Hash] A customizable set of options.
151
151
  def unfollow(*args)
152
- parallel_users_from_response(:post, '/1.1/friendships/destroy.json', args)
152
+ parallel_users_from_response(:post, "/1.1/friendships/destroy.json", args)
153
153
  end
154
154
  alias destroy_friendship unfollow
155
155
 
@@ -166,7 +166,7 @@ module Twitter
166
166
  # @option options [Boolean] :retweets Enable/disable retweets from the target user.
167
167
  def friendship_update(user, options = {})
168
168
  merge_user!(options, user)
169
- perform_post_with_object('/1.1/friendships/update.json', options, Twitter::Relationship)
169
+ perform_post_with_object("/1.1/friendships/update.json", options, Twitter::Relationship)
170
170
  end
171
171
 
172
172
  # Returns detailed information about the relationship between two users
@@ -181,11 +181,11 @@ module Twitter
181
181
  # @param options [Hash] A customizable set of options.
182
182
  def friendship(source, target, options = {})
183
183
  options = options.dup
184
- merge_user!(options, source, 'source')
184
+ merge_user!(options, source, "source")
185
185
  options[:source_id] = options.delete(:source_user_id) unless options[:source_user_id].nil?
186
- merge_user!(options, target, 'target')
186
+ merge_user!(options, target, "target")
187
187
  options[:target_id] = options.delete(:target_user_id) unless options[:target_user_id].nil?
188
- perform_get_with_object('/1.1/friendships/show.json', options, Twitter::Relationship)
188
+ perform_get_with_object("/1.1/friendships/show.json", options, Twitter::Relationship)
189
189
  end
190
190
  alias friendship_show friendship
191
191
  alias relationship friendship
@@ -225,7 +225,7 @@ module Twitter
225
225
  # @option options [Boolean, String, Integer] :skip_status Do not include contributee's Tweets when set to true, 't' or 1.
226
226
  # @option options [Boolean, String, Integer] :include_user_entities The user entities node will be disincluded when set to false.
227
227
  def followers(*args)
228
- cursor_from_response_with_user(:users, Twitter::User, '/1.1/followers/list.json', args)
228
+ cursor_from_response_with_user(:users, Twitter::User, "/1.1/followers/list.json", args)
229
229
  end
230
230
 
231
231
  # Returns a cursored collection of user objects for every user the specified user is following (otherwise known as their "friends").
@@ -249,7 +249,7 @@ module Twitter
249
249
  # @option options [Boolean, String, Integer] :skip_status Do not include contributee's Tweets when set to true, 't' or 1.
250
250
  # @option options [Boolean, String, Integer] :include_user_entities The user entities node will be disincluded when set to false.
251
251
  def friends(*args)
252
- cursor_from_response_with_user(:users, Twitter::User, '/1.1/friends/list.json', args)
252
+ cursor_from_response_with_user(:users, Twitter::User, "/1.1/friends/list.json", args)
253
253
  end
254
254
  alias following friends
255
255
 
@@ -261,7 +261,7 @@ module Twitter
261
261
  # @return [Array<Integer>]
262
262
  # @param options [Hash] A customizable set of options.
263
263
  def no_retweet_ids(options = {})
264
- perform_get('/1.1/friendships/no_retweets/ids.json', options).collect(&:to_i)
264
+ perform_get("/1.1/friendships/no_retweets/ids.json", options).collect(&:to_i)
265
265
  end
266
266
  alias no_retweets_ids no_retweet_ids
267
267
  end
@@ -1,24 +1,12 @@
1
- require 'twitter/configuration'
2
- require 'twitter/language'
3
- require 'twitter/rest/request'
4
- require 'twitter/rest/utils'
1
+ require "twitter/language"
2
+ require "twitter/rest/request"
3
+ require "twitter/rest/utils"
5
4
 
6
5
  module Twitter
7
6
  module REST
8
7
  module Help
9
8
  include Twitter::REST::Utils
10
9
 
11
- # Returns the current configuration used by Twitter
12
- #
13
- # @see https://dev.twitter.com/rest/reference/get/help/configuration
14
- # @rate_limited Yes
15
- # @authentication Requires user context
16
- # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
17
- # @return [Twitter::Configuration] Twitter's configuration.
18
- def configuration(options = {})
19
- perform_get_with_object('/1.1/help/configuration.json', options, Twitter::Configuration)
20
- end
21
-
22
10
  # Returns the list of languages supported by Twitter
23
11
  #
24
12
  # @see https://dev.twitter.com/rest/reference/get/help/languages
@@ -27,7 +15,7 @@ module Twitter
27
15
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
28
16
  # @return [Array<Twitter::Language>]
29
17
  def languages(options = {})
30
- perform_get_with_objects('/1.1/help/languages.json', options, Twitter::Language)
18
+ perform_get_with_objects("/1.1/help/languages.json", options, Twitter::Language)
31
19
  end
32
20
 
33
21
  # Returns {https://twitter.com/privacy Twitter's Privacy Policy}
@@ -38,7 +26,7 @@ module Twitter
38
26
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
39
27
  # @return [String]
40
28
  def privacy(options = {})
41
- perform_get('/1.1/help/privacy.json', options)[:privacy]
29
+ perform_get("/1.1/help/privacy.json", options)[:privacy]
42
30
  end
43
31
 
44
32
  # Returns {https://twitter.com/tos Twitter's Terms of Service}
@@ -49,7 +37,7 @@ module Twitter
49
37
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
50
38
  # @return [String]
51
39
  def tos(options = {})
52
- perform_get('/1.1/help/tos.json', options)[:tos]
40
+ perform_get("/1.1/help/tos.json", options)[:tos]
53
41
  end
54
42
  end
55
43
  end
@@ -1,14 +1,14 @@
1
- require 'addressable/uri'
2
- require 'twitter/arguments'
3
- require 'twitter/cursor'
4
- require 'twitter/error'
5
- require 'twitter/list'
6
- require 'twitter/rest/request'
7
- require 'twitter/rest/utils'
8
- require 'twitter/tweet'
9
- require 'twitter/user'
10
- require 'twitter/utils'
11
- require 'uri'
1
+ require "addressable/uri"
2
+ require "twitter/arguments"
3
+ require "twitter/cursor"
4
+ require "twitter/error"
5
+ require "twitter/list"
6
+ require "twitter/rest/request"
7
+ require "twitter/rest/utils"
8
+ require "twitter/tweet"
9
+ require "twitter/user"
10
+ require "twitter/utils"
11
+ require "uri"
12
12
 
13
13
  module Twitter
14
14
  module REST
@@ -32,7 +32,7 @@ module Twitter
32
32
  # @param options [Hash] A customizable set of options.
33
33
  # @option options [Boolean] :reverse Set this to true if you would like owned lists to be returned first.
34
34
  def lists(*args)
35
- objects_from_response_with_user(Twitter::List, :get, '/1.1/lists/list.json', args)
35
+ objects_from_response_with_user(Twitter::List, :get, "/1.1/lists/list.json", args)
36
36
  end
37
37
  alias lists_subscribed_to lists
38
38
 
@@ -61,7 +61,7 @@ module Twitter
61
61
  arguments = Twitter::Arguments.new(args)
62
62
  merge_list!(arguments.options, arguments.pop)
63
63
  merge_owner!(arguments.options, arguments.pop)
64
- perform_get_with_objects('/1.1/lists/statuses.json', arguments.options, Twitter::Tweet)
64
+ perform_get_with_objects("/1.1/lists/statuses.json", arguments.options, Twitter::Tweet)
65
65
  end
66
66
 
67
67
  # Removes the specified member from the list
@@ -82,7 +82,7 @@ module Twitter
82
82
  # @param user_to_remove [Integer, String] The user id or screen name of the list member to remove.
83
83
  # @param options [Hash] A customizable set of options.
84
84
  def remove_list_member(*args)
85
- list_from_response_with_user('/1.1/lists/members/destroy.json', args)
85
+ list_from_response_with_user("/1.1/lists/members/destroy.json", args)
86
86
  end
87
87
 
88
88
  # List the lists the specified user has been added to
@@ -102,7 +102,7 @@ module Twitter
102
102
  # @option options [Integer] :count The amount of results to return per page. Defaults to 20. No more than 1000 results will ever be returned in a single page.
103
103
  # @option options [Boolean, String, Integer] :filter_to_owned_lists When set to true, t or 1, will return just lists the authenticating user owns, and the user represented by user_id or screen_name is a member of.
104
104
  def memberships(*args)
105
- cursor_from_response_with_user(:lists, Twitter::List, '/1.1/lists/memberships.json', args)
105
+ cursor_from_response_with_user(:lists, Twitter::List, "/1.1/lists/memberships.json", args)
106
106
  end
107
107
 
108
108
  # Returns the subscribers of the specified list
@@ -121,7 +121,7 @@ module Twitter
121
121
  # @param list [Integer, String, Twitter::List] A Twitter list ID, slug, URI, or object.
122
122
  # @param options [Hash] A customizable set of options.
123
123
  def list_subscribers(*args)
124
- cursor_from_response_with_list('/1.1/lists/subscribers.json', args)
124
+ cursor_from_response_with_list("/1.1/lists/subscribers.json", args)
125
125
  end
126
126
 
127
127
  # Make the authenticated user follow the specified list
@@ -140,7 +140,7 @@ module Twitter
140
140
  # @param list [Integer, String, Twitter::List] A Twitter list ID, slug, URI, or object.
141
141
  # @param options [Hash] A customizable set of options.
142
142
  def list_subscribe(*args)
143
- list_from_response(:post, '/1.1/lists/subscribers/create.json', args)
143
+ list_from_response(:post, "/1.1/lists/subscribers/create.json", args)
144
144
  end
145
145
 
146
146
  # Check if a user is a subscriber of the specified list
@@ -162,7 +162,7 @@ module Twitter
162
162
  # @param options [Hash] A customizable set of options.
163
163
  # @return [Boolean] true if user is a subscriber of the specified list, otherwise false.
164
164
  def list_subscriber?(*args)
165
- list_user?(:get, '/1.1/lists/subscribers/show.json', args)
165
+ list_user?(:get, "/1.1/lists/subscribers/show.json", args)
166
166
  end
167
167
 
168
168
  # Unsubscribes the authenticated user form the specified list
@@ -181,7 +181,7 @@ module Twitter
181
181
  # @param list [Integer, String, Twitter::List] A Twitter list ID, slug, URI, or object.
182
182
  # @param options [Hash] A customizable set of options.
183
183
  def list_unsubscribe(*args)
184
- list_from_response(:post, '/1.1/lists/subscribers/destroy.json', args)
184
+ list_from_response(:post, "/1.1/lists/subscribers/destroy.json", args)
185
185
  end
186
186
 
187
187
  # Adds specified members to a list
@@ -204,7 +204,7 @@ module Twitter
204
204
  # @param users [Enumerable<Integer, String, Twitter::User>] A collection of Twitter user IDs, screen names, or objects.
205
205
  # @param options [Hash] A customizable set of options.
206
206
  def add_list_members(*args)
207
- list_from_response_with_users('/1.1/lists/members/create_all.json', args)
207
+ list_from_response_with_users("/1.1/lists/members/create_all.json", args)
208
208
  end
209
209
 
210
210
  # Check if a user is a member of the specified list
@@ -225,7 +225,7 @@ module Twitter
225
225
  # @param user_to_check [Integer, String] The user ID or screen name of the list member.
226
226
  # @param options [Hash] A customizable set of options.
227
227
  def list_member?(*args)
228
- list_user?(:get, '/1.1/lists/members/show.json', args)
228
+ list_user?(:get, "/1.1/lists/members/show.json", args)
229
229
  end
230
230
 
231
231
  # Returns the members of the specified list
@@ -244,7 +244,7 @@ module Twitter
244
244
  # @param list [Integer, String, Twitter::List] A Twitter list ID, slug, URI, or object.
245
245
  # @param options [Hash] A customizable set of options.
246
246
  def list_members(*args)
247
- cursor_from_response_with_list('/1.1/lists/members.json', args)
247
+ cursor_from_response_with_list("/1.1/lists/members.json", args)
248
248
  end
249
249
 
250
250
  # Add a member to a list
@@ -266,7 +266,7 @@ module Twitter
266
266
  # @param user_to_add [Integer, String] The user id or screen name to add to the list.
267
267
  # @param options [Hash] A customizable set of options.
268
268
  def add_list_member(*args)
269
- list_from_response_with_user('/1.1/lists/members/create.json', args)
269
+ list_from_response_with_user("/1.1/lists/members/create.json", args)
270
270
  end
271
271
 
272
272
  # Deletes the specified list
@@ -286,7 +286,7 @@ module Twitter
286
286
  # @param list [Integer, String, Twitter::List] A Twitter list ID, slug, URI, or object.
287
287
  # @param options [Hash] A customizable set of options.
288
288
  def destroy_list(*args)
289
- list_from_response(:post, '/1.1/lists/destroy.json', args)
289
+ list_from_response(:post, "/1.1/lists/destroy.json", args)
290
290
  end
291
291
 
292
292
  # Updates the specified list
@@ -309,7 +309,7 @@ module Twitter
309
309
  # @option options [String] :mode ('public') Whether your list is public or private. Values can be 'public' or 'private'.
310
310
  # @option options [String] :description The description to give the list.
311
311
  def list_update(*args)
312
- list_from_response(:post, '/1.1/lists/update.json', args)
312
+ list_from_response(:post, "/1.1/lists/update.json", args)
313
313
  end
314
314
 
315
315
  # Creates a new list for the authenticated user
@@ -325,7 +325,7 @@ module Twitter
325
325
  # @option options [String] :mode ('public') Whether your list is public or private. Values can be 'public' or 'private'.
326
326
  # @option options [String] :description The description to give the list.
327
327
  def create_list(name, options = {})
328
- perform_post_with_object('/1.1/lists/create.json', options.merge(name: name), Twitter::List)
328
+ perform_post_with_object("/1.1/lists/create.json", options.merge(name: name), Twitter::List)
329
329
  end
330
330
 
331
331
  # Show the specified list
@@ -345,7 +345,7 @@ module Twitter
345
345
  # @param list [Integer, String, Twitter::List] A Twitter list ID, slug, URI, or object.
346
346
  # @param options [Hash] A customizable set of options.
347
347
  def list(*args)
348
- list_from_response(:get, '/1.1/lists/show.json', args)
348
+ list_from_response(:get, "/1.1/lists/show.json", args)
349
349
  end
350
350
 
351
351
  # List the lists the specified user follows
@@ -361,7 +361,7 @@ module Twitter
361
361
  # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, URI, or object.
362
362
  # @param options [Hash] A customizable set of options.
363
363
  def subscriptions(*args)
364
- cursor_from_response_with_user(:lists, Twitter::List, '/1.1/lists/subscriptions.json', args)
364
+ cursor_from_response_with_user(:lists, Twitter::List, "/1.1/lists/subscriptions.json", args)
365
365
  end
366
366
 
367
367
  # Removes specified members from the list
@@ -382,7 +382,7 @@ module Twitter
382
382
  # @param users [Enumerable<Integer, String, Twitter::User>] A collection of Twitter user IDs, screen names, or objects.
383
383
  # @param options [Hash] A customizable set of options.
384
384
  def remove_list_members(*args)
385
- list_from_response_with_users('/1.1/lists/members/destroy_all.json', args)
385
+ list_from_response_with_users("/1.1/lists/members/destroy_all.json", args)
386
386
  end
387
387
 
388
388
  # Returns the lists owned by the specified Twitter user
@@ -400,7 +400,7 @@ module Twitter
400
400
  # @param options [Hash] A customizable set of options.
401
401
  # @option options [Integer] :count The amount of results to return per page. Defaults to 20. No more than 1000 results will ever be returned in a single page.
402
402
  def owned_lists(*args)
403
- cursor_from_response_with_user(:lists, Twitter::List, '/1.1/lists/ownerships.json', args)
403
+ cursor_from_response_with_user(:lists, Twitter::List, "/1.1/lists/ownerships.json", args)
404
404
  end
405
405
 
406
406
  private
@@ -467,7 +467,7 @@ module Twitter
467
467
  end
468
468
 
469
469
  def merge_slug_and_owner!(hash, path)
470
- list = path.split('/')
470
+ list = path.split("/")
471
471
  hash[:slug] = list.pop
472
472
  hash[:owner_screen_name] = list.pop unless list.empty?
473
473
  end
@@ -484,8 +484,9 @@ module Twitter
484
484
  # @return [Hash]
485
485
  def merge_owner!(hash, user)
486
486
  return hash if hash[:owner_id] || hash[:owner_screen_name]
487
+
487
488
  if user
488
- merge_user!(hash, user, 'owner')
489
+ merge_user!(hash, user, "owner")
489
490
  hash[:owner_id] = hash.delete(:owner_user_id) unless hash[:owner_user_id].nil?
490
491
  else
491
492
  hash[:owner_id] = user_id
@@ -1,5 +1,5 @@
1
- require 'twitter/headers'
2
- require 'twitter/rest/utils'
1
+ require "twitter/headers"
2
+ require "twitter/rest/utils"
3
3
 
4
4
  module Twitter
5
5
  module REST
@@ -24,11 +24,11 @@ module Twitter
24
24
  def token(options = {})
25
25
  options = options.dup
26
26
  options[:bearer_token_request] = true
27
- options[:grant_type] ||= 'client_credentials'
28
- url = 'https://api.twitter.com/oauth2/token'
27
+ options[:grant_type] ||= "client_credentials"
28
+ url = "https://api.twitter.com/oauth2/token"
29
29
  headers = Twitter::Headers.new(self, :post, url, options).request_headers
30
30
  response = HTTP.headers(headers).post(url, form: options)
31
- response.parse['access_token']
31
+ response.parse["access_token"]
32
32
  end
33
33
  alias bearer_token token
34
34
 
@@ -44,7 +44,7 @@ module Twitter
44
44
  def invalidate_token(access_token, options = {})
45
45
  options = options.dup
46
46
  options[:access_token] = access_token
47
- perform_post('/oauth2/invalidate_token', options)[:access_token]
47
+ perform_post("/oauth2/invalidate_token", options)[:access_token]
48
48
  end
49
49
 
50
50
  # Allows a registered application to revoke an issued OAuth 2 Bearer Token by presenting its client credentials.
@@ -55,8 +55,8 @@ module Twitter
55
55
  # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
56
56
  # @return [String] The token string.
57
57
  def reverse_token
58
- options = {x_auth_mode: 'reverse_auth'}
59
- url = 'https://api.twitter.com/oauth/request_token'
58
+ options = {x_auth_mode: "reverse_auth"}
59
+ url = "https://api.twitter.com/oauth/request_token"
60
60
  auth_header = Twitter::Headers.new(self, :post, url, options).oauth_auth_header.to_s
61
61
  HTTP.headers(authorization: auth_header).post(url, params: options).to_s
62
62
  end
@@ -1,6 +1,6 @@
1
- require 'twitter/geo_results'
2
- require 'twitter/place'
3
- require 'twitter/rest/utils'
1
+ require "twitter/geo_results"
2
+ require "twitter/place"
3
+ require "twitter/rest/utils"
4
4
 
5
5
  module Twitter
6
6
  module REST
@@ -35,7 +35,7 @@ module Twitter
35
35
  # @option options [Integer] :max_results A hint as to the number of results to return. This does not guarantee that the number of results returned will equal max_results, but instead informs how many "nearby" results to return. Ideally, only pass in the number of places you intend to display to the user here.
36
36
  # @return [Array<Twitter::Place>]
37
37
  def reverse_geocode(options = {})
38
- perform_get_with_object('/1.1/geo/reverse_geocode.json', options, Twitter::GeoResults)
38
+ perform_get_with_object("/1.1/geo/reverse_geocode.json", options, Twitter::GeoResults)
39
39
  end
40
40
 
41
41
  # Search for places that can be attached to a {Twitter::REST::Tweets#update}
@@ -56,7 +56,7 @@ module Twitter
56
56
  # @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.
57
57
  # @return [Array<Twitter::Place>]
58
58
  def geo_search(options = {})
59
- perform_get_with_object('/1.1/geo/search.json', options, Twitter::GeoResults)
59
+ perform_get_with_object("/1.1/geo/search.json", options, Twitter::GeoResults)
60
60
  end
61
61
  alias places_nearby geo_search
62
62
 
@@ -75,7 +75,7 @@ module Twitter
75
75
  # @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.
76
76
  # @return [Array<Twitter::Place>]
77
77
  def similar_places(options = {})
78
- perform_get_with_object('/1.1/geo/similar_places.json', options, Twitter::GeoResults)
78
+ perform_get_with_object("/1.1/geo/similar_places.json", options, Twitter::GeoResults)
79
79
  end
80
80
  alias places_similar similar_places
81
81
  end
@@ -0,0 +1,34 @@
1
+ require "twitter/rest/request"
2
+ require "twitter/premium_search_results"
3
+
4
+ module Twitter
5
+ module REST
6
+ module PremiumSearch
7
+ MAX_TWEETS_PER_REQUEST = 100
8
+
9
+ # Returns tweets from the 30-Day API that match a specified query.
10
+ #
11
+ # @see https://developer.twitter.com/en/docs/tweets/search/overview/premium
12
+ # @see https://developer.twitter.com/en/docs/tweets/search/api-reference/premium-search.html#DataEndpoint
13
+ # @rate_limited Yes
14
+ # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
15
+ # @param query [String] A search term.
16
+ # @param options [Hash] A customizable set of options.
17
+ # @option options [String] :tag Tags can be used to segregate rules and their matching data into different logical groups.
18
+ # @option options [Integer] :maxResults The maximum number of search results to be returned by a request. A number between 10 and the system limit (currently 500, 100 for Sandbox environments). By default, a request response will return 100 results
19
+ # @option options [String] :fromDate The oldest UTC timestamp (from most recent 30 days) from which the Tweets will be provided. Date should be formatted as yyyymmddhhmm.
20
+ # @option options [String] :toDate The latest, most recent UTC timestamp to which the activities will be provided. Date should be formatted as yyyymmddhhmm.
21
+ # @option request_config [String] :product Indicates the search endpoint you are making requests to, either 30day or fullarchive. Default 30day
22
+ # @return [Twitter::PremiumSearchResults] Return tweets that match a specified query with search metadata
23
+ def premium_search(query, options = {}, request_config = {})
24
+ options = options.clone
25
+ options[:maxResults] ||= MAX_TWEETS_PER_REQUEST
26
+ request_config[:request_method] = :json_post if request_config[:request_method].nil? || request_config[:request_method] == :post
27
+ request_config[:product] ||= "30day"
28
+ path = "/1.1/tweets/search/#{request_config[:product]}/#{dev_environment}.json"
29
+ request = Twitter::REST::Request.new(self, request_config[:request_method], path, options.merge(query: query))
30
+ Twitter::PremiumSearchResults.new(request, request_config)
31
+ end
32
+ end
33
+ end
34
+ end