twitter 7.0.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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -4
  3. data/README.md +4 -6
  4. data/lib/twitter/base.rb +11 -11
  5. data/lib/twitter/basic_user.rb +3 -2
  6. data/lib/twitter/client.rb +3 -3
  7. data/lib/twitter/creatable.rb +2 -2
  8. data/lib/twitter/cursor.rb +3 -3
  9. data/lib/twitter/direct_message.rb +4 -5
  10. data/lib/twitter/direct_message_event.rb +3 -3
  11. data/lib/twitter/direct_messages/welcome_message.rb +3 -3
  12. data/lib/twitter/direct_messages/welcome_message_rule.rb +2 -2
  13. data/lib/twitter/direct_messages/welcome_message_rule_wrapper.rb +3 -3
  14. data/lib/twitter/direct_messages/welcome_message_wrapper.rb +3 -3
  15. data/lib/twitter/entities.rb +6 -6
  16. data/lib/twitter/entity/hashtag.rb +1 -1
  17. data/lib/twitter/entity/symbol.rb +1 -1
  18. data/lib/twitter/entity/uri.rb +1 -1
  19. data/lib/twitter/entity/user_mention.rb +1 -1
  20. data/lib/twitter/entity.rb +1 -1
  21. data/lib/twitter/enumerable.rb +1 -3
  22. data/lib/twitter/error.rb +7 -6
  23. data/lib/twitter/factory.rb +1 -1
  24. data/lib/twitter/geo/point.rb +1 -1
  25. data/lib/twitter/geo/polygon.rb +1 -1
  26. data/lib/twitter/geo.rb +2 -2
  27. data/lib/twitter/geo_factory.rb +3 -3
  28. data/lib/twitter/geo_results.rb +2 -2
  29. data/lib/twitter/headers.rb +4 -4
  30. data/lib/twitter/identity.rb +2 -2
  31. data/lib/twitter/language.rb +1 -1
  32. data/lib/twitter/list.rb +3 -2
  33. data/lib/twitter/media/animated_gif.rb +1 -1
  34. data/lib/twitter/media/photo.rb +2 -2
  35. data/lib/twitter/media/video.rb +3 -3
  36. data/lib/twitter/media/video_info.rb +2 -2
  37. data/lib/twitter/media_factory.rb +4 -4
  38. data/lib/twitter/metadata.rb +1 -1
  39. data/lib/twitter/null_object.rb +4 -4
  40. data/lib/twitter/oembed.rb +2 -1
  41. data/lib/twitter/place.rb +3 -3
  42. data/lib/twitter/premium_search_results.rb +5 -5
  43. data/lib/twitter/profile.rb +8 -8
  44. data/lib/twitter/profile_banner.rb +2 -2
  45. data/lib/twitter/rate_limit.rb +4 -4
  46. data/lib/twitter/relationship.rb +2 -1
  47. data/lib/twitter/rest/account_activity.rb +3 -3
  48. data/lib/twitter/rest/api.rb +19 -19
  49. data/lib/twitter/rest/client.rb +4 -4
  50. data/lib/twitter/rest/direct_messages/welcome_messages.rb +13 -13
  51. data/lib/twitter/rest/direct_messages.rb +17 -17
  52. data/lib/twitter/rest/favorites.rb +15 -19
  53. data/lib/twitter/rest/form_encoder.rb +27 -0
  54. data/lib/twitter/rest/friends_and_followers.rb +21 -21
  55. data/lib/twitter/rest/help.rb +6 -18
  56. data/lib/twitter/rest/lists.rb +32 -32
  57. data/lib/twitter/rest/oauth.rb +8 -8
  58. data/lib/twitter/rest/places_and_geo.rb +6 -6
  59. data/lib/twitter/rest/premium_search.rb +3 -3
  60. data/lib/twitter/rest/request.rb +28 -21
  61. data/lib/twitter/rest/saved_searches.rb +6 -6
  62. data/lib/twitter/rest/search.rb +3 -3
  63. data/lib/twitter/rest/spam_reporting.rb +3 -3
  64. data/lib/twitter/rest/suggested_users.rb +5 -5
  65. data/lib/twitter/rest/timelines.rb +7 -7
  66. data/lib/twitter/rest/trends.rb +7 -7
  67. data/lib/twitter/rest/tweets.rb +19 -23
  68. data/lib/twitter/rest/undocumented.rb +7 -7
  69. data/lib/twitter/rest/upload_utils.rb +13 -13
  70. data/lib/twitter/rest/users.rb +32 -32
  71. data/lib/twitter/rest/utils.rb +17 -17
  72. data/lib/twitter/saved_search.rb +2 -2
  73. data/lib/twitter/search_results.rb +6 -6
  74. data/lib/twitter/settings.rb +2 -1
  75. data/lib/twitter/size.rb +2 -2
  76. data/lib/twitter/source_user.rb +1 -1
  77. data/lib/twitter/streaming/client.rb +14 -14
  78. data/lib/twitter/streaming/connection.rb +4 -5
  79. data/lib/twitter/streaming/message_parser.rb +6 -6
  80. data/lib/twitter/streaming/response.rb +11 -10
  81. data/lib/twitter/suggestion.rb +3 -3
  82. data/lib/twitter/target_user.rb +1 -1
  83. data/lib/twitter/trend.rb +3 -2
  84. data/lib/twitter/trend_results.rb +5 -5
  85. data/lib/twitter/tweet.rb +3 -3
  86. data/lib/twitter/user.rb +9 -9
  87. data/lib/twitter/utils.rb +2 -2
  88. data/lib/twitter/variant.rb +2 -1
  89. data/lib/twitter/version.rb +3 -3
  90. data/lib/twitter.rb +36 -36
  91. data/twitter.gemspec +19 -18
  92. metadata +23 -22
  93. data/lib/twitter/configuration.rb +0 -27
@@ -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
@@ -486,7 +486,7 @@ module Twitter
486
486
  return hash if hash[:owner_id] || hash[:owner_screen_name]
487
487
 
488
488
  if user
489
- merge_user!(hash, user, 'owner')
489
+ merge_user!(hash, user, "owner")
490
490
  hash[:owner_id] = hash.delete(:owner_user_id) unless hash[:owner_user_id].nil?
491
491
  else
492
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
@@ -1,5 +1,5 @@
1
- require 'twitter/rest/request'
2
- require 'twitter/premium_search_results'
1
+ require "twitter/rest/request"
2
+ require "twitter/premium_search_results"
3
3
 
4
4
  module Twitter
5
5
  module REST
@@ -24,7 +24,7 @@ module Twitter
24
24
  options = options.clone
25
25
  options[:maxResults] ||= MAX_TWEETS_PER_REQUEST
26
26
  request_config[:request_method] = :json_post if request_config[:request_method].nil? || request_config[:request_method] == :post
27
- request_config[:product] ||= '30day'
27
+ request_config[:product] ||= "30day"
28
28
  path = "/1.1/tweets/search/#{request_config[:product]}/#{dev_environment}.json"
29
29
  request = Twitter::REST::Request.new(self, request_config[:request_method], path, options.merge(query: query))
30
30
  Twitter::PremiumSearchResults.new(request, request_config)
@@ -1,18 +1,19 @@
1
- require 'addressable/uri'
2
- require 'http'
3
- require 'http/form_data'
4
- require 'json'
5
- require 'openssl'
6
- require 'twitter/error'
7
- require 'twitter/headers'
8
- require 'twitter/rate_limit'
9
- require 'twitter/utils'
1
+ require "addressable/uri"
2
+ require "http"
3
+ require "http/form_data"
4
+ require "json"
5
+ require "openssl"
6
+ require "twitter/error"
7
+ require "twitter/headers"
8
+ require "twitter/rate_limit"
9
+ require "twitter/utils"
10
+ require "twitter/rest/form_encoder"
10
11
 
11
12
  module Twitter
12
13
  module REST
13
14
  class Request # rubocop:disable Metrics/ClassLength
14
15
  include Twitter::Utils
15
- BASE_URL = 'https://api.twitter.com'.freeze
16
+ BASE_URL = "https://api.twitter.com".freeze
16
17
  attr_accessor :client, :headers, :options, :path, :rate_limit,
17
18
  :request_method, :uri
18
19
  alias verb request_method
@@ -24,7 +25,7 @@ module Twitter
24
25
  # @return [Twitter::REST::Request]
25
26
  def initialize(client, request_method, path, options = {}, params = nil)
26
27
  @client = client
27
- @uri = Addressable::URI.parse(path.start_with?('http') ? path : BASE_URL + path)
28
+ @uri = Addressable::URI.parse(path.start_with?("http") ? path : BASE_URL + path)
28
29
  multipart_options = params || options
29
30
  set_multipart_options!(request_method, multipart_options)
30
31
  @path = uri.path
@@ -36,7 +37,7 @@ module Twitter
36
37
  # @return [Array, Hash]
37
38
  def perform
38
39
  response = http_client.headers(@headers).public_send(@request_method, @uri.to_s, request_options)
39
- response_body = response.body.empty? ? '' : symbolize_keys!(response.parse)
40
+ response_body = response.body.empty? ? "" : symbolize_keys!(response.parse)
40
41
  response_headers = response.headers
41
42
  fail_or_return_response_body(response.code, response_body, response_headers)
42
43
  end
@@ -44,7 +45,12 @@ module Twitter
44
45
  private
45
46
 
46
47
  def request_options
47
- options = {@options_key => @options}
48
+ options = if @options_key == :form
49
+ {form: HTTP::FormData.create(@options, encoder: Twitter::REST::FormEncoder.method(:encode))}
50
+ else
51
+ {@options_key => @options}
52
+ end
53
+
48
54
  if @params
49
55
  if options[:params]
50
56
  options[:params].merge(@params)
@@ -60,7 +66,7 @@ module Twitter
60
66
  file = options.delete(:file)
61
67
 
62
68
  options[key] = if file.is_a?(StringIO)
63
- HTTP::FormData::File.new(file, content_type: 'video/mp4')
69
+ HTTP::FormData::File.new(file, content_type: "video/mp4")
64
70
  else
65
71
  HTTP::FormData::File.new(file, filename: File.basename(file), content_type: content_type(File.basename(file)))
66
72
  end
@@ -82,13 +88,13 @@ module Twitter
82
88
  def content_type(basename)
83
89
  case basename
84
90
  when /\.gif$/i
85
- 'image/gif'
91
+ "image/gif"
86
92
  when /\.jpe?g/i
87
- 'image/jpeg'
93
+ "image/jpeg"
88
94
  when /\.png$/i
89
- 'image/png'
95
+ "image/png"
90
96
  else
91
- 'application/octet-stream'
97
+ "application/octet-stream"
92
98
  end
93
99
  end
94
100
 
@@ -106,7 +112,7 @@ module Twitter
106
112
  forbidden_error(body, headers)
107
113
  elsif !klass.nil?
108
114
  klass.from_response(body, headers)
109
- elsif body&.is_a?(Hash) && (err = body.dig(:processing_info, :error))
115
+ elsif body.is_a?(Hash) && (err = body.dig(:processing_info, :error))
110
116
  Twitter::Error::MediaError.from_processing_response(err, headers)
111
117
  end
112
118
  end
@@ -122,11 +128,12 @@ module Twitter
122
128
  end
123
129
 
124
130
  def symbolize_keys!(object)
125
- if object.is_a?(Array)
131
+ case object
132
+ when Array
126
133
  object.each_with_index do |val, index|
127
134
  object[index] = symbolize_keys!(val)
128
135
  end
129
- elsif object.is_a?(Hash)
136
+ when Hash
130
137
  object.dup.each_key do |key|
131
138
  object[key.to_sym] = symbolize_keys!(object.delete(key))
132
139
  end
@@ -1,7 +1,7 @@
1
- require 'twitter/arguments'
2
- require 'twitter/rest/utils'
3
- require 'twitter/saved_search'
4
- require 'twitter/utils'
1
+ require "twitter/arguments"
2
+ require "twitter/rest/utils"
3
+ require "twitter/saved_search"
4
+ require "twitter/utils"
5
5
 
6
6
  module Twitter
7
7
  module REST
@@ -32,7 +32,7 @@ module Twitter
32
32
  def saved_searches(*args)
33
33
  arguments = Twitter::Arguments.new(args)
34
34
  if arguments.empty?
35
- perform_get_with_objects('/1.1/saved_searches/list.json', arguments.options, Twitter::SavedSearch)
35
+ perform_get_with_objects("/1.1/saved_searches/list.json", arguments.options, Twitter::SavedSearch)
36
36
  else
37
37
  pmap(arguments) do |id|
38
38
  saved_search(id, arguments.options)
@@ -63,7 +63,7 @@ module Twitter
63
63
  # @param query [String] The query of the search the user would like to save.
64
64
  # @param options [Hash] A customizable set of options.
65
65
  def create_saved_search(query, options = {})
66
- perform_post_with_object('/1.1/saved_searches/create.json', options.merge(query: query), Twitter::SavedSearch)
66
+ perform_post_with_object("/1.1/saved_searches/create.json", options.merge(query: query), Twitter::SavedSearch)
67
67
  end
68
68
 
69
69
  # Destroys saved searches for the authenticated user
@@ -1,5 +1,5 @@
1
- require 'twitter/rest/request'
2
- require 'twitter/search_results'
1
+ require "twitter/rest/request"
2
+ require "twitter/search_results"
3
3
 
4
4
  module Twitter
5
5
  module REST
@@ -30,7 +30,7 @@ module Twitter
30
30
  def search(query, options = {})
31
31
  options = options.dup
32
32
  options[:count] ||= MAX_TWEETS_PER_REQUEST
33
- request = Twitter::REST::Request.new(self, :get, '/1.1/search/tweets.json', options.merge(q: query))
33
+ request = Twitter::REST::Request.new(self, :get, "/1.1/search/tweets.json", options.merge(q: query))
34
34
  Twitter::SearchResults.new(request)
35
35
  end
36
36
  end
@@ -1,5 +1,5 @@
1
- require 'twitter/rest/utils'
2
- require 'twitter/user'
1
+ require "twitter/rest/utils"
2
+ require "twitter/user"
3
3
 
4
4
  module Twitter
5
5
  module REST
@@ -19,7 +19,7 @@ module Twitter
19
19
  # @param users [Enumerable<Integer, String, Twitter::User>] A collection of Twitter user IDs, screen names, or objects.
20
20
  # @param options [Hash] A customizable set of options.
21
21
  def report_spam(*args)
22
- parallel_users_from_response(:post, '/1.1/users/report_spam.json', args)
22
+ parallel_users_from_response(:post, "/1.1/users/report_spam.json", args)
23
23
  end
24
24
  end
25
25
  end
@@ -1,7 +1,7 @@
1
- require 'twitter/arguments'
2
- require 'twitter/rest/utils'
3
- require 'twitter/suggestion'
4
- require 'twitter/user'
1
+ require "twitter/arguments"
2
+ require "twitter/rest/utils"
3
+ require "twitter/suggestion"
4
+ require "twitter/user"
5
5
 
6
6
  module Twitter
7
7
  module REST
@@ -28,7 +28,7 @@ module Twitter
28
28
  if arguments.last
29
29
  perform_get_with_object("/1.1/users/suggestions/#{arguments.pop}.json", arguments.options, Twitter::Suggestion)
30
30
  else
31
- perform_get_with_objects('/1.1/users/suggestions.json', arguments.options, Twitter::Suggestion)
31
+ perform_get_with_objects("/1.1/users/suggestions.json", arguments.options, Twitter::Suggestion)
32
32
  end
33
33
  end
34
34
 
@@ -1,6 +1,6 @@
1
- require 'twitter/rest/utils'
2
- require 'twitter/tweet'
3
- require 'twitter/user'
1
+ require "twitter/rest/utils"
2
+ require "twitter/tweet"
3
+ require "twitter/user"
4
4
 
5
5
  module Twitter
6
6
  module REST
@@ -23,7 +23,7 @@ module Twitter
23
23
  # @option options [Integer] :count Specifies the number of records to retrieve. Must be less than or equal to 200.
24
24
  # @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.
25
25
  def mentions_timeline(options = {})
26
- perform_get_with_objects('/1.1/statuses/mentions_timeline.json', options, Twitter::Tweet)
26
+ perform_get_with_objects("/1.1/statuses/mentions_timeline.json", options, Twitter::Tweet)
27
27
  end
28
28
  alias mentions mentions_timeline
29
29
 
@@ -46,7 +46,7 @@ module Twitter
46
46
  # @option options [Boolean, String, Integer] :contributor_details Specifies that the contributors element should be enhanced to include the screen_name of the contributor.
47
47
  # @option options [Boolean, String, Integer] :include_rts Specifies that the timeline should include native retweets in addition to regular tweets. Note: If you're using the trim_user parameter in conjunction with include_rts, the retweets will no longer contain a full user object.
48
48
  def user_timeline(*args)
49
- objects_from_response_with_user(Twitter::Tweet, :get, '/1.1/statuses/user_timeline.json', args)
49
+ objects_from_response_with_user(Twitter::Tweet, :get, "/1.1/statuses/user_timeline.json", args)
50
50
  end
51
51
 
52
52
  # Returns the 20 most recent retweets posted by the specified user
@@ -110,7 +110,7 @@ module Twitter
110
110
  # @option options [Boolean, String, Integer] :include_rts Specifies that the timeline should include native retweets in addition to regular tweets. Note: If you're using the trim_user parameter in conjunction with include_rts, the retweets will no longer contain a full user object.
111
111
  # @option options [Boolean, String, Integer] :contributor_details Specifies that the contributors element should be enhanced to include the screen_name of the contributor.
112
112
  def home_timeline(options = {})
113
- perform_get_with_objects('/1.1/statuses/home_timeline.json', options, Twitter::Tweet)
113
+ perform_get_with_objects("/1.1/statuses/home_timeline.json", options, Twitter::Tweet)
114
114
  end
115
115
 
116
116
  # Returns the 20 most recent retweets posted by users the authenticating user follow.
@@ -148,7 +148,7 @@ module Twitter
148
148
  # @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.
149
149
  # @option options [Boolean, String, Integer] :include_user_entities The user entities node will be disincluded when set to false.
150
150
  def retweets_of_me(options = {})
151
- perform_get_with_objects('/1.1/statuses/retweets_of_me.json', options, Twitter::Tweet)
151
+ perform_get_with_objects("/1.1/statuses/retweets_of_me.json", options, Twitter::Tweet)
152
152
  end
153
153
 
154
154
  private
@@ -1,7 +1,7 @@
1
- require 'twitter/place'
2
- require 'twitter/rest/request'
3
- require 'twitter/rest/utils'
4
- require 'twitter/trend_results'
1
+ require "twitter/place"
2
+ require "twitter/rest/request"
3
+ require "twitter/rest/utils"
4
+ require "twitter/trend_results"
5
5
 
6
6
  module Twitter
7
7
  module REST
@@ -21,7 +21,7 @@ module Twitter
21
21
  def trends(id = 1, options = {})
22
22
  options = options.dup
23
23
  options[:id] = id
24
- response = perform_get('/1.1/trends/place.json', options).first
24
+ response = perform_get("/1.1/trends/place.json", options).first
25
25
  Twitter::TrendResults.new(response)
26
26
  end
27
27
  alias local_trends trends
@@ -36,7 +36,7 @@ module Twitter
36
36
  # @param options [Hash] A customizable set of options.
37
37
  # @return [Array<Twitter::Place>]
38
38
  def trends_available(options = {})
39
- perform_get_with_objects('/1.1/trends/available.json', options, Twitter::Place)
39
+ perform_get_with_objects("/1.1/trends/available.json", options, Twitter::Place)
40
40
  end
41
41
  alias trend_locations trends_available
42
42
 
@@ -51,7 +51,7 @@ module Twitter
51
51
  # @option options [Float] :long If provided with a :lat option the available trend locations will be sorted by distance, nearest to furthest, to the co-ordinate pair. The valid ranges for longitude are -180.0 to +180.0 (East is positive) inclusive.
52
52
  # @return [Array<Twitter::Place>]
53
53
  def trends_closest(options = {})
54
- perform_get_with_objects('/1.1/trends/closest.json', options, Twitter::Place)
54
+ perform_get_with_objects("/1.1/trends/closest.json", options, Twitter::Place)
55
55
  end
56
56
  end
57
57
  end