twitter 6.1.0 → 6.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +22 -15
- data/README.md +69 -394
- data/lib/twitter/base.rb +2 -16
- data/lib/twitter/basic_user.rb +0 -3
- data/lib/twitter/client.rb +5 -19
- data/lib/twitter/configuration.rb +3 -2
- data/lib/twitter/creatable.rb +1 -1
- data/lib/twitter/cursor.rb +0 -1
- data/lib/twitter/entity/uri.rb +0 -4
- data/lib/twitter/error.rb +81 -96
- data/lib/twitter/geo_results.rb +0 -1
- data/lib/twitter/headers.rb +11 -10
- data/lib/twitter/media/photo.rb +4 -0
- data/lib/twitter/media/video.rb +4 -1
- data/lib/twitter/media/video_info.rb +1 -1
- data/lib/twitter/null_object.rb +2 -2
- data/lib/twitter/profile.rb +3 -2
- data/lib/twitter/rate_limit.rb +1 -1
- data/lib/twitter/rest/api.rb +0 -2
- data/lib/twitter/rest/client.rb +0 -78
- data/lib/twitter/rest/direct_messages.rb +3 -3
- data/lib/twitter/rest/favorites.rb +25 -4
- data/lib/twitter/rest/friends_and_followers.rb +1 -3
- data/lib/twitter/rest/lists.rb +18 -29
- data/lib/twitter/rest/oauth.rb +15 -15
- data/lib/twitter/rest/request.rb +105 -16
- data/lib/twitter/rest/saved_searches.rb +0 -2
- data/lib/twitter/rest/search.rb +2 -0
- data/lib/twitter/rest/trends.rb +1 -0
- data/lib/twitter/rest/tweets.rb +80 -15
- data/lib/twitter/rest/undocumented.rb +3 -4
- data/lib/twitter/rest/users.rb +20 -34
- data/lib/twitter/rest/utils.rb +13 -20
- data/lib/twitter/search_results.rb +1 -2
- data/lib/twitter/streaming/client.rb +17 -23
- data/lib/twitter/streaming/connection.rb +23 -10
- data/lib/twitter/streaming/deleted_tweet.rb +0 -1
- data/lib/twitter/streaming/event.rb +6 -6
- data/lib/twitter/streaming/message_parser.rb +1 -1
- data/lib/twitter/streaming/response.rb +2 -2
- data/lib/twitter/trend_results.rb +1 -2
- data/lib/twitter/tweet.rb +1 -5
- data/lib/twitter/user.rb +0 -2
- data/lib/twitter/utils.rb +1 -16
- data/lib/twitter/version.rb +1 -1
- data/twitter.gemspec +13 -13
- metadata +35 -27
- data/lib/twitter/rest/media.rb +0 -30
- data/lib/twitter/rest/request/multipart_with_file.rb +0 -47
- data/lib/twitter/rest/response/parse_error_json.rb +0 -13
- data/lib/twitter/rest/response/parse_json.rb +0 -31
- data/lib/twitter/rest/response/raise_error.rb +0 -32
- data/lib/twitter/token.rb +0 -20
data/lib/twitter/rest/media.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'twitter/error'
|
2
|
-
require 'twitter/headers'
|
3
|
-
require 'twitter/rest/utils'
|
4
|
-
|
5
|
-
module Twitter
|
6
|
-
module REST
|
7
|
-
module Media
|
8
|
-
# Uploads media to attach to a tweet
|
9
|
-
#
|
10
|
-
# @see https://dev.twitter.com/rest/public/uploading-media-multiple-photos
|
11
|
-
# @rate_limited No
|
12
|
-
# @authentication Requires user context
|
13
|
-
# @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid.
|
14
|
-
# @raise [Twitter::Error::UnacceptableIO] Error when the IO object for the media argument does not have a to_io method.
|
15
|
-
# @return [Integer] The uploaded media ID.
|
16
|
-
# @param media [File, Hash] A File object with your picture (PNG, JPEG or GIF)
|
17
|
-
# @param options [Hash] A customizable set of options.
|
18
|
-
def upload(media, options = {})
|
19
|
-
raise(Twitter::Error::UnacceptableIO.new) unless media.respond_to?(:to_io)
|
20
|
-
base_url = 'https://upload.twitter.com'
|
21
|
-
path = '/1.1/media/upload.json'
|
22
|
-
conn = connection.dup
|
23
|
-
conn.url_prefix = base_url
|
24
|
-
headers = Twitter::Headers.new(self, :post, base_url + path, options).request_headers
|
25
|
-
options[:media] = media
|
26
|
-
conn.post(path, options) { |request| request.headers.update(headers) }.env.body[:media_id]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
|
3
|
-
module Twitter
|
4
|
-
module REST
|
5
|
-
class Request
|
6
|
-
class MultipartWithFile < Faraday::Middleware
|
7
|
-
CONTENT_TYPE = 'Content-Type'.freeze
|
8
|
-
BMP_REGEX = /\.bmp/i
|
9
|
-
GIF_REGEX = /\.gif$/i
|
10
|
-
JPEG_REGEX = /\.jpe?g/i
|
11
|
-
PNG_REGEX = /\.png$/i
|
12
|
-
WEBP_REGEX = /\.webp/i
|
13
|
-
|
14
|
-
def call(request)
|
15
|
-
if request.body.is_a?(::Hash)
|
16
|
-
request.body.each do |key, value|
|
17
|
-
next unless value.respond_to?(:to_io)
|
18
|
-
request.body[key] = Faraday::UploadIO.new(value, mime_type(value.path), value.path)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
@app.call(request)
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def mime_type(path)
|
27
|
-
case path
|
28
|
-
when BMP_REGEX
|
29
|
-
'image/bmp'
|
30
|
-
when GIF_REGEX
|
31
|
-
'image/gif'
|
32
|
-
when JPEG_REGEX
|
33
|
-
'image/jpeg'
|
34
|
-
when PNG_REGEX
|
35
|
-
'image/png'
|
36
|
-
when WEBP_REGEX
|
37
|
-
'image/webp'
|
38
|
-
else
|
39
|
-
'application/octet-stream'
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
Faraday::Request.register_middleware twitter_multipart_with_file: Twitter::REST::Request::MultipartWithFile
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
module Twitter
|
5
|
-
module REST
|
6
|
-
module Response
|
7
|
-
class ParseJson < Faraday::Response::Middleware
|
8
|
-
WHITESPACE_REGEX = /\A^\s*$\z/
|
9
|
-
|
10
|
-
def parse(body)
|
11
|
-
case body
|
12
|
-
when WHITESPACE_REGEX, nil
|
13
|
-
nil
|
14
|
-
else
|
15
|
-
JSON.parse(body, symbolize_names: true)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def on_complete(response)
|
20
|
-
response.body = parse(response.body) if respond_to?(:parse) && !unparsable_status_codes.include?(response.status)
|
21
|
-
end
|
22
|
-
|
23
|
-
def unparsable_status_codes
|
24
|
-
[204, 301, 302, 304]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
Faraday::Response.register_middleware twitter_parse_json: Twitter::REST::Response::ParseJson
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'twitter/error'
|
3
|
-
|
4
|
-
module Twitter
|
5
|
-
module REST
|
6
|
-
module Response
|
7
|
-
class RaiseError < Faraday::Response::Middleware
|
8
|
-
def on_complete(response)
|
9
|
-
status_code = response.status.to_i
|
10
|
-
klass = Twitter::Error.errors[status_code]
|
11
|
-
return unless klass
|
12
|
-
raise(handle_forbidden_errors(response)) if klass == Twitter::Error::Forbidden
|
13
|
-
raise(klass.from_response(response))
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def handle_forbidden_errors(response)
|
19
|
-
error = Twitter::Error::Forbidden.from_response(response)
|
20
|
-
klass = Twitter::Error.forbidden_messages[error.message]
|
21
|
-
if klass
|
22
|
-
klass.from_response(response)
|
23
|
-
else
|
24
|
-
error
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
Faraday::Response.register_middleware twitter_raise_error: Twitter::REST::Response::RaiseError
|
data/lib/twitter/token.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'memoizable'
|
2
|
-
require 'twitter/base'
|
3
|
-
|
4
|
-
module Twitter
|
5
|
-
class Token < Twitter::Base
|
6
|
-
include Memoizable
|
7
|
-
|
8
|
-
# @return [String]
|
9
|
-
attr_reader :access_token, :token_type
|
10
|
-
alias to_s access_token
|
11
|
-
|
12
|
-
BEARER_TYPE = 'bearer'.freeze
|
13
|
-
|
14
|
-
# @return [Boolean]
|
15
|
-
def bearer?
|
16
|
-
@attrs[:token_type] == BEARER_TYPE
|
17
|
-
end
|
18
|
-
memoize :bearer?
|
19
|
-
end
|
20
|
-
end
|