twitter 6.1.0 → 6.2.0
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.
- 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
|