twitter 5.6.0 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +8 -0
  4. data/README.md +3 -3
  5. data/Rakefile +1 -1
  6. data/lib/twitter/base.rb +0 -8
  7. data/lib/twitter/client.rb +2 -1
  8. data/lib/twitter/cursor.rb +2 -15
  9. data/lib/twitter/error.rb +90 -18
  10. data/lib/twitter/geo_results.rb +0 -10
  11. data/lib/twitter/request.rb +4 -4
  12. data/lib/twitter/rest/api.rb +43 -0
  13. data/lib/twitter/rest/client.rb +10 -44
  14. data/lib/twitter/rest/direct_messages.rb +138 -0
  15. data/lib/twitter/rest/favorites.rb +108 -0
  16. data/lib/twitter/rest/friends_and_followers.rb +281 -0
  17. data/lib/twitter/rest/help.rb +56 -0
  18. data/lib/twitter/rest/lists.rb +497 -0
  19. data/lib/twitter/rest/oauth.rb +65 -0
  20. data/lib/twitter/rest/places_and_geo.rb +84 -0
  21. data/lib/twitter/rest/request/multipart_with_file.rb +5 -5
  22. data/lib/twitter/rest/response/parse_json.rb +2 -4
  23. data/lib/twitter/rest/response/raise_error.rb +24 -15
  24. data/lib/twitter/rest/saved_searches.rb +93 -0
  25. data/lib/twitter/rest/search.rb +37 -0
  26. data/lib/twitter/rest/spam_reporting.rb +27 -0
  27. data/lib/twitter/rest/suggested_users.rb +49 -0
  28. data/lib/twitter/rest/timelines.rb +200 -0
  29. data/lib/twitter/rest/trends.rb +57 -0
  30. data/lib/twitter/rest/tweets.rb +309 -0
  31. data/lib/twitter/rest/undocumented.rb +49 -0
  32. data/lib/twitter/rest/users.rb +383 -0
  33. data/lib/twitter/rest/utils.rb +205 -0
  34. data/lib/twitter/search_results.rb +2 -13
  35. data/lib/twitter/trend_results.rb +0 -10
  36. data/lib/twitter/version.rb +1 -1
  37. data/spec/helper.rb +1 -1
  38. data/spec/twitter/error_spec.rb +26 -42
  39. data/spec/twitter/rest/{api/direct_messages_spec.rb → direct_messages_spec.rb} +1 -1
  40. data/spec/twitter/rest/{api/favorites_spec.rb → favorites_spec.rb} +1 -1
  41. data/spec/twitter/rest/{api/friends_and_followers_spec.rb → friends_and_followers_spec.rb} +1 -1
  42. data/spec/twitter/rest/{api/geo_spec.rb → geo_spec.rb} +1 -1
  43. data/spec/twitter/rest/{api/help_spec.rb → help_spec.rb} +1 -1
  44. data/spec/twitter/rest/{api/lists_spec.rb → lists_spec.rb} +1 -1
  45. data/spec/twitter/rest/{api/oauth_spec.rb → oauth_spec.rb} +4 -8
  46. data/spec/twitter/rest/{api/saved_searches_spec.rb → saved_searches_spec.rb} +1 -1
  47. data/spec/twitter/rest/{api/search_spec.rb → search_spec.rb} +1 -1
  48. data/spec/twitter/rest/{api/spam_reporting_spec.rb → spam_reporting_spec.rb} +1 -1
  49. data/spec/twitter/rest/{api/suggested_users_spec.rb → suggested_users_spec.rb} +1 -1
  50. data/spec/twitter/rest/{api/timelines_spec.rb → timelines_spec.rb} +1 -1
  51. data/spec/twitter/rest/{api/trends_spec.rb → trends_spec.rb} +1 -1
  52. data/spec/twitter/rest/{api/tweets_spec.rb → tweets_spec.rb} +74 -5
  53. data/spec/twitter/rest/{api/undocumented_spec.rb → undocumented_spec.rb} +1 -1
  54. data/spec/twitter/rest/{api/users_spec.rb → users_spec.rb} +5 -5
  55. data/spec/twitter/tweet_spec.rb +1 -1
  56. data/twitter.gemspec +0 -1
  57. metadata +247 -237
  58. metadata.gz.sig +0 -0
  59. checksums.yaml +0 -7
  60. checksums.yaml.gz.sig +0 -0
  61. data/lib/twitter/error/already_favorited.rb +0 -10
  62. data/lib/twitter/error/already_posted.rb +0 -10
  63. data/lib/twitter/error/already_retweeted.rb +0 -10
  64. data/lib/twitter/error/bad_gateway.rb +0 -10
  65. data/lib/twitter/error/bad_request.rb +0 -10
  66. data/lib/twitter/error/configuration_error.rb +0 -8
  67. data/lib/twitter/error/forbidden.rb +0 -10
  68. data/lib/twitter/error/gateway_timeout.rb +0 -10
  69. data/lib/twitter/error/internal_server_error.rb +0 -10
  70. data/lib/twitter/error/not_acceptable.rb +0 -10
  71. data/lib/twitter/error/not_found.rb +0 -10
  72. data/lib/twitter/error/request_timeout.rb +0 -10
  73. data/lib/twitter/error/service_unavailable.rb +0 -10
  74. data/lib/twitter/error/too_many_requests.rb +0 -12
  75. data/lib/twitter/error/unauthorized.rb +0 -10
  76. data/lib/twitter/error/unprocessable_entity.rb +0 -10
  77. data/lib/twitter/rest/api/direct_messages.rb +0 -140
  78. data/lib/twitter/rest/api/favorites.rb +0 -115
  79. data/lib/twitter/rest/api/friends_and_followers.rb +0 -284
  80. data/lib/twitter/rest/api/help.rb +0 -58
  81. data/lib/twitter/rest/api/lists.rb +0 -500
  82. data/lib/twitter/rest/api/oauth.rb +0 -67
  83. data/lib/twitter/rest/api/places_and_geo.rb +0 -86
  84. data/lib/twitter/rest/api/saved_searches.rb +0 -95
  85. data/lib/twitter/rest/api/search.rb +0 -39
  86. data/lib/twitter/rest/api/spam_reporting.rb +0 -29
  87. data/lib/twitter/rest/api/suggested_users.rb +0 -51
  88. data/lib/twitter/rest/api/timelines.rb +0 -202
  89. data/lib/twitter/rest/api/trends.rb +0 -58
  90. data/lib/twitter/rest/api/tweets.rb +0 -297
  91. data/lib/twitter/rest/api/undocumented.rb +0 -51
  92. data/lib/twitter/rest/api/users.rb +0 -383
  93. data/lib/twitter/rest/api/utils.rb +0 -212
@@ -1,212 +0,0 @@
1
- require 'addressable/uri'
2
- require 'twitter/arguments'
3
- require 'twitter/request'
4
- require 'twitter/user'
5
- require 'twitter/utils'
6
-
7
- module Twitter
8
- module REST
9
- module API
10
- module Utils
11
- include Twitter::Utils
12
- URI_SUBSTRING = '://'
13
- DEFAULT_CURSOR = -1
14
-
15
- private
16
-
17
- # Take a URI string or Twitter::Identity object and return its ID
18
- #
19
- # @param object [Integer, String, URI, Twitter::Identity] An ID, URI, or object.
20
- # @return [Integer]
21
- def extract_id(object)
22
- case object
23
- when ::Integer
24
- object
25
- when ::String
26
- object.split('/').last.to_i
27
- when URI
28
- object.path.split('/').last.to_i
29
- when Twitter::Identity
30
- object.id
31
- end
32
- end
33
-
34
- # @param request_method [Symbol]
35
- # @param path [String]
36
- # @param options [Hash]
37
- # @param klass [Class]
38
- def perform_with_object(request_method, path, options, klass)
39
- request = Twitter::Request.new(self, request_method, path, options)
40
- request.perform_with_object(klass)
41
- end
42
-
43
- # @param request_method [Symbol]
44
- # @param path [String]
45
- # @param options [Hash]
46
- # @param klass [Class]
47
- def perform_with_objects(request_method, path, options, klass)
48
- request = Twitter::Request.new(self, request_method, path, options)
49
- request.perform_with_objects(klass)
50
- end
51
-
52
- # @param request_method [Symbol]
53
- # @param path [String]
54
- # @param options [Hash]
55
- # @param klass [Class]
56
- def perform_with_cursor(request_method, path, options, collection_name, klass = nil) # rubocop:disable ParameterLists
57
- merge_default_cursor!(options)
58
- request = Twitter::Request.new(self, request_method, path, options)
59
- request.perform_with_cursor(collection_name.to_sym, klass)
60
- end
61
-
62
- # @param request_method [Symbol]
63
- # @param path [String]
64
- # @param args [Array]
65
- # @return [Array<Twitter::User>]
66
- def parallel_user_objects_from_response(request_method, path, args)
67
- arguments = Twitter::Arguments.new(args)
68
- parallel_map(arguments) do |user|
69
- perform_with_object(request_method, path, merge_user(arguments.options, user), Twitter::User)
70
- end
71
- end
72
-
73
- # @param request_method [Symbol]
74
- # @param path [String]
75
- # @param args [Array]
76
- # @return [Array<Twitter::User>]
77
- def user_objects_from_response(request_method, path, args)
78
- arguments = Twitter::Arguments.new(args)
79
- merge_user!(arguments.options, arguments.pop || screen_name) unless arguments.options[:user_id] || arguments.options[:screen_name]
80
- perform_with_objects(request_method, path, arguments.options, Twitter::User)
81
- end
82
-
83
- # @param klass [Class]
84
- # @param request_method [Symbol]
85
- # @param path [String]
86
- # @param args [Array]
87
- # @return [Array]
88
- def objects_from_response_with_user(klass, request_method, path, args)
89
- arguments = Twitter::Arguments.new(args)
90
- merge_user!(arguments.options, arguments.pop)
91
- perform_with_objects(request_method, path, arguments.options, klass)
92
- end
93
-
94
- # @param klass [Class]
95
- # @param request_method [Symbol]
96
- # @param path [String]
97
- # @param args [Array]
98
- # @return [Array]
99
- def parallel_objects_from_response(klass, request_method, path, args)
100
- arguments = Twitter::Arguments.new(args)
101
- parallel_map(arguments) do |object|
102
- perform_with_object(request_method, path, arguments.options.merge(:id => extract_id(object)), klass)
103
- end
104
- end
105
-
106
- # @param collection_name [Symbol]
107
- # @param klass [Class]
108
- # @param request_method [Symbol]
109
- # @param path [String]
110
- # @param args [Array]
111
- # @return [Twitter::Cursor]
112
- def cursor_from_response_with_user(collection_name, klass, request_method, path, args) # rubocop:disable ParameterLists
113
- arguments = Twitter::Arguments.new(args)
114
- merge_user!(arguments.options, arguments.pop || screen_name) unless arguments.options[:user_id] || arguments.options[:screen_name]
115
- perform_with_cursor(request_method, path, arguments.options, collection_name, klass)
116
- end
117
-
118
- def handle_forbidden_error(klass, error)
119
- error = klass.new(error) if error.message == klass::MESSAGE
120
- fail(error)
121
- end
122
-
123
- def screen_name
124
- @screen_name ||= verify_credentials.screen_name
125
- end
126
-
127
- def merge_default_cursor!(options)
128
- options[:cursor] = DEFAULT_CURSOR unless options[:cursor]
129
- end
130
-
131
- # Take a user and merge it into the hash with the correct key
132
- #
133
- # @param hash [Hash]
134
- # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, URI, or object.
135
- # @return [Hash]
136
- def merge_user(hash, user, prefix = nil)
137
- merge_user!(hash.dup, user, prefix)
138
- end
139
-
140
- # Take a user and merge it into the hash with the correct key
141
- #
142
- # @param hash [Hash]
143
- # @param user [Integer, String, URI, Twitter::User] A Twitter user ID, screen name, URI, or object.
144
- # @return [Hash]
145
- def merge_user!(hash, user, prefix = nil)
146
- case user
147
- when Integer
148
- set_compound_key('user_id', user, hash, prefix)
149
- when String
150
- if user[URI_SUBSTRING]
151
- set_compound_key('screen_name', user.split('/').last, hash, prefix)
152
- else
153
- set_compound_key('screen_name', user, hash, prefix)
154
- end
155
- when URI, Addressable::URI
156
- set_compound_key('screen_name', user.path.split('/').last, hash, prefix)
157
- when Twitter::User
158
- set_compound_key('user_id', user.id, hash, prefix)
159
- end
160
- end
161
-
162
- def set_compound_key(key, value, hash, prefix = nil)
163
- compound_key = [prefix, key].compact.join('_').to_sym
164
- hash[compound_key] = value
165
- hash
166
- end
167
-
168
- # Take a multiple users and merge them into the hash with the correct keys
169
- #
170
- # @param hash [Hash]
171
- # @param users [Enumerable<Integer, String, Twitter::User>] A collection of Twitter user IDs, screen_names, or objects.
172
- # @return [Hash]
173
- def merge_users(hash, users)
174
- merge_users!(hash.dup, users)
175
- end
176
-
177
- # Take a multiple users and merge them into the hash with the correct keys
178
- #
179
- # @param hash [Hash]
180
- # @param users [Enumerable<Integer, String, URI, Twitter::User>] A collection of Twitter user IDs, screen_names, URIs, or objects.
181
- # @return [Hash]
182
- def merge_users!(hash, users)
183
- user_ids, screen_names = collect_user_ids_and_screen_names(users)
184
- hash[:user_id] = user_ids.join(',') unless user_ids.empty?
185
- hash[:screen_name] = screen_names.join(',') unless screen_names.empty?
186
- hash
187
- end
188
-
189
- def collect_user_ids_and_screen_names(users) # rubocop:disable MethodLength
190
- user_ids, screen_names = [], []
191
- users.flatten.each do |user|
192
- case user
193
- when Integer
194
- user_ids << user
195
- when String
196
- if user[URI_SUBSTRING]
197
- screen_names << user.split('/').last
198
- else
199
- screen_names << user
200
- end
201
- when URI
202
- screen_names << user.path.split('/').last
203
- when Twitter::User
204
- user_ids << user.id
205
- end
206
- end
207
- [user_ids, screen_names]
208
- end
209
- end
210
- end
211
- end
212
- end