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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -10
- data/LICENSE.md +1 -1
- data/README.md +9 -14
- data/lib/twitter/base.rb +11 -11
- data/lib/twitter/basic_user.rb +3 -2
- data/lib/twitter/client.rb +8 -8
- data/lib/twitter/creatable.rb +7 -3
- data/lib/twitter/cursor.rb +15 -5
- data/lib/twitter/direct_message.rb +4 -3
- data/lib/twitter/direct_message_event.rb +44 -0
- data/lib/twitter/direct_messages/welcome_message.rb +17 -0
- data/lib/twitter/direct_messages/welcome_message_rule.rb +12 -0
- data/lib/twitter/direct_messages/welcome_message_rule_wrapper.rb +36 -0
- data/lib/twitter/direct_messages/welcome_message_wrapper.rb +42 -0
- data/lib/twitter/entities.rb +6 -6
- data/lib/twitter/entity/hashtag.rb +1 -1
- data/lib/twitter/entity/symbol.rb +1 -1
- data/lib/twitter/entity/uri.rb +1 -1
- data/lib/twitter/entity/user_mention.rb +1 -1
- data/lib/twitter/entity.rb +1 -1
- data/lib/twitter/enumerable.rb +15 -6
- data/lib/twitter/error.rb +52 -9
- data/lib/twitter/factory.rb +1 -1
- data/lib/twitter/geo/point.rb +1 -1
- data/lib/twitter/geo/polygon.rb +1 -1
- data/lib/twitter/geo.rb +2 -2
- data/lib/twitter/geo_factory.rb +3 -3
- data/lib/twitter/geo_results.rb +2 -2
- data/lib/twitter/headers.rb +4 -4
- data/lib/twitter/identity.rb +2 -2
- data/lib/twitter/language.rb +1 -1
- data/lib/twitter/list.rb +3 -2
- data/lib/twitter/media/animated_gif.rb +1 -1
- data/lib/twitter/media/photo.rb +2 -2
- data/lib/twitter/media/video.rb +3 -3
- data/lib/twitter/media/video_info.rb +2 -2
- data/lib/twitter/media_factory.rb +4 -4
- data/lib/twitter/metadata.rb +1 -1
- data/lib/twitter/null_object.rb +19 -5
- data/lib/twitter/oembed.rb +2 -1
- data/lib/twitter/place.rb +3 -3
- data/lib/twitter/premium_search_results.rb +67 -0
- data/lib/twitter/profile.rb +6 -6
- data/lib/twitter/profile_banner.rb +2 -2
- data/lib/twitter/rate_limit.rb +6 -6
- data/lib/twitter/relationship.rb +2 -1
- data/lib/twitter/rest/account_activity.rb +99 -0
- data/lib/twitter/rest/api.rb +22 -16
- data/lib/twitter/rest/client.rb +4 -4
- data/lib/twitter/rest/direct_messages/welcome_messages.rb +90 -0
- data/lib/twitter/rest/direct_messages.rb +136 -47
- data/lib/twitter/rest/favorites.rb +17 -21
- data/lib/twitter/rest/form_encoder.rb +27 -0
- data/lib/twitter/rest/friends_and_followers.rb +21 -21
- data/lib/twitter/rest/help.rb +6 -18
- data/lib/twitter/rest/lists.rb +33 -32
- data/lib/twitter/rest/oauth.rb +8 -8
- data/lib/twitter/rest/places_and_geo.rb +6 -6
- data/lib/twitter/rest/premium_search.rb +34 -0
- data/lib/twitter/rest/request.rb +64 -31
- data/lib/twitter/rest/saved_searches.rb +6 -6
- data/lib/twitter/rest/search.rb +6 -5
- data/lib/twitter/rest/spam_reporting.rb +3 -3
- data/lib/twitter/rest/suggested_users.rb +5 -5
- data/lib/twitter/rest/timelines.rb +8 -7
- data/lib/twitter/rest/trends.rb +7 -7
- data/lib/twitter/rest/tweets.rb +20 -53
- data/lib/twitter/rest/undocumented.rb +7 -7
- data/lib/twitter/rest/upload_utils.rb +68 -0
- data/lib/twitter/rest/users.rb +32 -32
- data/lib/twitter/rest/utils.rb +41 -24
- data/lib/twitter/saved_search.rb +2 -2
- data/lib/twitter/search_results.rb +10 -9
- data/lib/twitter/settings.rb +2 -1
- data/lib/twitter/size.rb +2 -2
- data/lib/twitter/source_user.rb +1 -1
- data/lib/twitter/streaming/client.rb +19 -15
- data/lib/twitter/streaming/connection.rb +19 -7
- data/lib/twitter/streaming/message_parser.rb +7 -7
- data/lib/twitter/streaming/response.rb +12 -10
- data/lib/twitter/suggestion.rb +3 -3
- data/lib/twitter/target_user.rb +1 -1
- data/lib/twitter/trend.rb +3 -2
- data/lib/twitter/trend_results.rb +5 -5
- data/lib/twitter/tweet.rb +13 -4
- data/lib/twitter/user.rb +9 -9
- data/lib/twitter/utils.rb +6 -4
- data/lib/twitter/variant.rb +2 -1
- data/lib/twitter/version.rb +4 -4
- data/lib/twitter.rb +36 -31
- data/twitter.gemspec +19 -19
- metadata +33 -37
- data/lib/twitter/configuration.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b80e3506c8a84c489163c646cc9dee9796125556ac219c29f324f533436e2699
|
4
|
+
data.tar.gz: 25c98a022fefc26d3c38de160a4afa6edcf619e79b9f72487e61643891eb65fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd410ed4a557fb3e2890e9fc6cd81672f73b1d8dfa4d0c5cb3f793943074f5ef8aba43332e833bc411ac39c1648a0835145a4c722f6c94bd790fcd7d390610c3
|
7
|
+
data.tar.gz: 726be9e6536df1c63fdbf528011ddffeeee5c88bf65031f88555009718626c40a7e8661356abd4c58be6709b289565a4e56fb36127a9512b4c7009d27b4bf26b
|
data/CHANGELOG.md
CHANGED
@@ -1,25 +1,47 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
8.0.0
|
2
|
+
-----
|
3
|
+
* [Fix filter limit issue](https://github.com/sferik/twitter/commit/be91024f7af7e94dd6578e08937975443dc09487)
|
4
|
+
* [Pass custom `HTTP::FormData` with encoder for post requests](https://github.com/sferik/twitter/commit/62d15daf1f7009b532bced2423d2e3878c4a6628)
|
5
|
+
* [Removed the `Twitter::Configuration` class](https://github.com/sferik/twitter/commit/d9b49dbb60427e447b25afad5a4824a068b577c5)
|
6
|
+
* [Replace `http_parser.rb` with `llhttp`](https://github.com/sferik/twitter/commit/b30a831477910fa6b311c6de98fafabc5dccf827)
|
7
|
+
* [Update `buftok` dependency to ~> 0.3.0](https://github.com/sferik/twitter/commit/69237190197cae174cee09b4765230aadf231e3a)
|
8
|
+
* [Update `http` dependency to ~> 5.0](https://github.com/sferik/twitter/commit/d218358b9fdba501d0f4e59a10bd1e86f18e044f)
|
9
|
+
* [Set minimum required ruby version to 2.7.7](https://github.com/sferik/twitter/commit/3b50a1fe31233fbe85e5cf9d722aba13fa61aed8)
|
10
|
+
|
11
|
+
7.0.0
|
12
|
+
-----
|
13
|
+
* [Add `Twitter::DirectMessageEvent`](https://github.com/sferik/twitter/commit/38f6aaa482dcd5f4982abd811dbe6e21e36c2ae8) ([@FabienChaynes](https://twitter.com/FabienChaynes))
|
14
|
+
* [Create `Twitter::DirectMessageEvent` with media](https://github.com/sferik/twitter/commit/21478530ec6f8a798717a5ab8b197b895db3bc28) ([@FabienChaynes](https://twitter.com/FabienChaynes))
|
15
|
+
* [Support for DM welcome messages](https://github.com/sferik/twitter/pull/950) ([@FabienChaynes](https://twitter.com/FabienChaynes))
|
16
|
+
* [Support for closing `Twitter::Streaming::Connection`](https://github.com/sferik/twitter/commit/89e3543aa06e00eeab7eaf5bdd3a33a6112356b1) ([@okkez](https://twitter.com/okkez))
|
17
|
+
* [Add `Twitter::REST::Client#create_direct_message_event`](https://github.com/sferik/twitter/commit/b45d545c7ebfd28e4d908037dd3fde04e3c307cf) ([@cyu](https://twitter.com/cyu))
|
18
|
+
* [Add `Twitter::REST::Client#premium_search`](https://github.com/sferik/twitter/pull/953)
|
19
|
+
* [Add `Twitter::REST::AccountActivity`](https://github.com/sferik/twitter/pull/939)
|
20
|
+
* [Update all direct message methods to return `Twitter::DirectMessageEvent`](https://github.com/sferik/twitter/commit/0833471366a33657cd2920850e3928db010eecab) ([@flikglick](https://twitter.com/flikglick))
|
21
|
+
* [Correctly handle different `Twitter::Error::AlreadyRetweeted` error messages](https://github.com/sferik/twitter/commit/c9bf100eedc89aee43689c17f160025e0f40cfb4) ([@knu](https://twitter.com/knu))
|
22
|
+
* [Fix proxy setting sample](https://github.com/sferik/twitter/commit/91c037cfb26ac0c9d3099cdeec42d65fe8716b78) ([@nicklegr](https://twitter.com/nicklegr))
|
23
|
+
* [Add Active Support `presence` methods on `Twitter::NullObject`](https://github.com/sferik/twitter/commit/07a5d7b60f335aefd583dae85ba959235bc9f55f) ([@davebrace](https://twitter.com/davebrace))
|
24
|
+
* [Upload GIFs over 5MB in chunks](https://github.com/sferik/twitter/commit/ba6a3062782b37cf83b9813c5128c87d4971ab9c) ([@wild_dmitry](https://twitter.com/wild_dmitry))
|
25
|
+
* [Track rate limit when searching tweets](https://github.com/sferik/twitter/commit/067e751d58b7bb0bfbe8a5531a4288f4c966b301) ([@dsalahutdinov1](https://twitter.com/dsalahutdinov1))
|
26
|
+
* [Add `quote_count` and `reply_count` attributes to `Twitter::Tweet`](https://github.com/sferik/twitter/commit/844818cad07ce490ccb9d8542ebb6b4fc7a61cb4)
|
27
|
+
* [Drop support for Ruby 2.0, 2.1, and 2.2](https://github.com/sferik/twitter/commit/95861ec83e582c2a88499b97d9d5388a96d0abf0)
|
3
28
|
|
29
|
+
6.2.0
|
30
|
+
-----
|
4
31
|
Not yet documented, sorry. For now, please use git to compare tags:
|
5
32
|
https://github.com/sferik/twitter/compare/v6.1.0...v6.2.0
|
6
33
|
|
7
34
|
6.1.0
|
8
|
-
|
9
|
-
|
35
|
+
-----
|
10
36
|
Not yet documented, sorry. For now, please use git to compare tags:
|
11
37
|
https://github.com/sferik/twitter/compare/v6.0.0...v6.1.0
|
12
38
|
|
13
|
-
|
14
39
|
6.0.0
|
15
|
-
|
16
|
-
|
17
|
-
Not yet documented, sorry. For now, please use git to compare tags:
|
18
|
-
https://github.com/sferik/twitter/compare/v5.16.0...v6.0.0
|
40
|
+
-----
|
41
|
+
* [Drop support for Ruby 1.8.7 and Ruby 1.9.3](https://github.com/sferik/twitter/commit/27980f45fb357e34b86e46cb9134d86ed29b3ce3)
|
19
42
|
|
20
43
|
5.16.0
|
21
44
|
------
|
22
|
-
|
23
45
|
* [Add Twitter::Trend#tweet_volume](https://github.com/sferik/twitter/commit/e797b62e5e6a768e8aeafde6186e1f5310e6bfc6)
|
24
46
|
* [Add new settings to Twitter::Settings](https://github.com/sferik/twitter/commit/d047ce00034d26a99927076c28679ce08fd69308)
|
25
47
|
* [Fix `Version.to_a`](https://github.com/sferik/twitter/commit/0cd119abf64e6c2b7fd861b0df65b7cb41d892b4)
|
data/LICENSE.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2006-
|
1
|
+
Copyright (c) 2006-2020 Erik Berlin, John Nunemaker, Wynn Netherland, Steve Richert, Steve Agalloco
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -1,17 +1,13 @@
|
|
1
1
|
# The Twitter Ruby Gem
|
2
2
|
|
3
|
-
[][codeclimate]
|
7
|
-
[][coveralls]
|
3
|
+
[][gem]
|
4
|
+
[][travis]
|
5
|
+
[][maintainability]
|
8
6
|
[][inchpages]
|
9
7
|
|
10
8
|
[gem]: https://rubygems.org/gems/twitter
|
11
9
|
[travis]: https://travis-ci.org/sferik/twitter
|
12
|
-
[
|
13
|
-
[codeclimate]: https://codeclimate.com/github/sferik/twitter
|
14
|
-
[coveralls]: https://coveralls.io/r/sferik/twitter
|
10
|
+
[maintainability]: https://codeclimate.com/github/sferik/twitter/maintainability
|
15
11
|
[inchpages]: http://inch-ci.org/github/sferik/twitter
|
16
12
|
|
17
13
|
A Ruby interface to the Twitter API.
|
@@ -231,11 +227,10 @@ command:
|
|
231
227
|
This library aims to support and is [tested against][travis] the following Ruby
|
232
228
|
versions:
|
233
229
|
|
234
|
-
* Ruby 2.
|
235
|
-
* Ruby
|
236
|
-
* Ruby
|
237
|
-
* Ruby 2
|
238
|
-
* JRuby 9.1.6.0
|
230
|
+
* Ruby 2.7
|
231
|
+
* Ruby 3.0
|
232
|
+
* Ruby 3.1
|
233
|
+
* Ruby 3.2
|
239
234
|
|
240
235
|
If something doesn't work on one of these versions, it's a bug.
|
241
236
|
|
@@ -266,7 +261,7 @@ Constraint][pvc] with two digits of precision. For example:
|
|
266
261
|
[pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
|
267
262
|
|
268
263
|
## Copyright
|
269
|
-
Copyright (c) 2006-2016 Erik
|
264
|
+
Copyright (c) 2006-2016 Erik Berlin, John Nunemaker, Wynn Netherland, Steve Richert, Steve Agalloco.
|
270
265
|
See [LICENSE][] for details.
|
271
266
|
|
272
267
|
[license]: LICENSE.md
|
data/lib/twitter/base.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require "addressable/uri"
|
2
|
+
require "forwardable"
|
3
|
+
require "memoizable"
|
4
|
+
require "twitter/null_object"
|
5
|
+
require "twitter/utils"
|
6
6
|
|
7
7
|
module Twitter
|
8
8
|
class Base
|
@@ -46,10 +46,10 @@ module Twitter
|
|
46
46
|
# @param attrs [Array, Symbol]
|
47
47
|
def uri_attr_reader(*attrs)
|
48
48
|
attrs.each do |uri_key|
|
49
|
-
array = uri_key.to_s.split(
|
50
|
-
index = array.index(
|
51
|
-
array[index] =
|
52
|
-
url_key = array.join(
|
49
|
+
array = uri_key.to_s.split("_")
|
50
|
+
index = array.index("uri")
|
51
|
+
array[index] = "url"
|
52
|
+
url_key = array.join("_").to_sym
|
53
53
|
define_uri_method(uri_key, url_key)
|
54
54
|
alias_method(url_key, uri_key)
|
55
55
|
define_predicate_method(uri_key, url_key)
|
@@ -71,7 +71,7 @@ module Twitter
|
|
71
71
|
# @param key2 [Symbol]
|
72
72
|
def define_uri_method(key1, key2)
|
73
73
|
define_method(key1) do
|
74
|
-
Addressable::URI.parse(@attrs[key2].chomp(
|
74
|
+
Addressable::URI.parse(@attrs[key2].chomp("#")) unless @attrs[key2].nil?
|
75
75
|
end
|
76
76
|
memoize(key1)
|
77
77
|
end
|
@@ -125,7 +125,7 @@ module Twitter
|
|
125
125
|
private
|
126
126
|
|
127
127
|
def attr_falsey_or_empty?(key)
|
128
|
-
!@attrs[key] || @attrs[key].respond_to?(:empty?) && @attrs[key].empty?
|
128
|
+
!@attrs[key] || (@attrs[key].respond_to?(:empty?) && @attrs[key].empty?)
|
129
129
|
end
|
130
130
|
|
131
131
|
def attrs_for_object(key1, key2 = nil)
|
data/lib/twitter/basic_user.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "twitter/identity"
|
2
|
+
require "twitter/utils"
|
3
3
|
|
4
4
|
module Twitter
|
5
5
|
class BasicUser < Twitter::Identity
|
6
6
|
# @return [String]
|
7
7
|
attr_reader :screen_name
|
8
|
+
|
8
9
|
predicate_attr_reader :following
|
9
10
|
end
|
10
11
|
end
|
data/lib/twitter/client.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "twitter/error"
|
2
|
+
require "twitter/utils"
|
3
|
+
require "twitter/version"
|
4
4
|
|
5
5
|
module Twitter
|
6
6
|
class Client
|
7
7
|
include Twitter::Utils
|
8
|
-
attr_accessor :access_token, :access_token_secret, :consumer_key, :consumer_secret, :proxy, :timeouts
|
8
|
+
attr_accessor :access_token, :access_token_secret, :consumer_key, :consumer_secret, :proxy, :timeouts, :dev_environment
|
9
9
|
attr_writer :user_agent
|
10
10
|
|
11
11
|
# Initializes a new Client object
|
@@ -21,7 +21,7 @@ module Twitter
|
|
21
21
|
|
22
22
|
# @return [Boolean]
|
23
23
|
def user_token?
|
24
|
-
!(
|
24
|
+
!(blank_string?(access_token) || blank_string?(access_token_secret))
|
25
25
|
end
|
26
26
|
|
27
27
|
# @return [String]
|
@@ -41,13 +41,13 @@ module Twitter
|
|
41
41
|
|
42
42
|
# @return [Boolean]
|
43
43
|
def credentials?
|
44
|
-
credentials.values.none? { |v|
|
44
|
+
credentials.values.none? { |v| blank_string?(v) }
|
45
45
|
end
|
46
46
|
|
47
47
|
private
|
48
48
|
|
49
|
-
def
|
50
|
-
|
49
|
+
def blank_string?(string)
|
50
|
+
string.respond_to?(:empty?) ? string.empty? : !string
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
data/lib/twitter/creatable.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "time"
|
2
|
+
require "memoizable"
|
3
3
|
|
4
4
|
module Twitter
|
5
5
|
module Creatable
|
@@ -9,7 +9,11 @@ module Twitter
|
|
9
9
|
#
|
10
10
|
# @return [Time]
|
11
11
|
def created_at
|
12
|
-
|
12
|
+
time = @attrs[:created_at]
|
13
|
+
return if time.nil?
|
14
|
+
|
15
|
+
time = Time.parse(time) unless time.is_a?(Time)
|
16
|
+
time.utc
|
13
17
|
end
|
14
18
|
memoize :created_at
|
15
19
|
|
data/lib/twitter/cursor.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "twitter/enumerable"
|
2
|
+
require "twitter/rest/request"
|
3
|
+
require "twitter/utils"
|
4
4
|
|
5
5
|
module Twitter
|
6
6
|
class Cursor
|
@@ -16,8 +16,9 @@ module Twitter
|
|
16
16
|
# @param key [String, Symbol] The key to fetch the data from the response
|
17
17
|
# @param klass [Class] The class to instantiate objects in the response
|
18
18
|
# @param request [Twitter::REST::Request]
|
19
|
+
# @param limit [Integer] After reaching the limit, we stop fetching next page
|
19
20
|
# @return [Twitter::Cursor]
|
20
|
-
def initialize(key, klass, request)
|
21
|
+
def initialize(key, klass, request, limit = nil)
|
21
22
|
@key = key.to_sym
|
22
23
|
@klass = klass
|
23
24
|
@client = request.client
|
@@ -25,6 +26,7 @@ module Twitter
|
|
25
26
|
@path = request.path
|
26
27
|
@options = request.options
|
27
28
|
@collection = []
|
29
|
+
@limit = limit
|
28
30
|
self.attrs = request.perform
|
29
31
|
end
|
30
32
|
|
@@ -32,15 +34,23 @@ module Twitter
|
|
32
34
|
|
33
35
|
# @return [Integer]
|
34
36
|
def next_cursor
|
35
|
-
@attrs[:next_cursor]
|
37
|
+
@attrs[:next_cursor]
|
36
38
|
end
|
37
39
|
alias next next_cursor
|
38
40
|
|
39
41
|
# @return [Boolean]
|
40
42
|
def last?
|
43
|
+
return false if next_cursor.is_a?(String)
|
44
|
+
return true if next_cursor.nil?
|
45
|
+
|
41
46
|
next_cursor.zero?
|
42
47
|
end
|
43
48
|
|
49
|
+
# @return [Boolean]
|
50
|
+
def reached_limit?
|
51
|
+
@limit && @limit <= attrs[@key].count
|
52
|
+
end
|
53
|
+
|
44
54
|
# @return [Hash]
|
45
55
|
def fetch_next_page
|
46
56
|
response = Twitter::REST::Request.new(@client, @request_method, @path, @options.merge(cursor: next_cursor)).perform
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "twitter/creatable"
|
2
|
+
require "twitter/entities"
|
3
|
+
require "twitter/identity"
|
4
4
|
|
5
5
|
module Twitter
|
6
6
|
class DirectMessage < Twitter::Identity
|
@@ -8,6 +8,7 @@ module Twitter
|
|
8
8
|
include Twitter::Entities
|
9
9
|
# @return [String]
|
10
10
|
attr_reader :text
|
11
|
+
attr_reader :sender_id, :recipient_id
|
11
12
|
alias full_text text
|
12
13
|
object_attr_reader :User, :recipient
|
13
14
|
object_attr_reader :User, :sender
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "twitter/creatable"
|
2
|
+
require "twitter/entities"
|
3
|
+
require "twitter/identity"
|
4
|
+
|
5
|
+
module Twitter
|
6
|
+
class DirectMessageEvent < Twitter::Identity
|
7
|
+
include Twitter::Creatable
|
8
|
+
include Twitter::Entities
|
9
|
+
|
10
|
+
attr_reader :created_timestamp
|
11
|
+
|
12
|
+
object_attr_reader :DirectMessage, :direct_message
|
13
|
+
|
14
|
+
def initialize(attrs)
|
15
|
+
attrs = read_from_response(attrs)
|
16
|
+
text = attrs.dig(:message_create, :message_data, :text)
|
17
|
+
urls = attrs.dig(:message_create, :message_data, :entities, :urls)
|
18
|
+
|
19
|
+
text.gsub!(urls[0][:url], urls[0][:expanded_url]) if urls.any?
|
20
|
+
|
21
|
+
attrs[:direct_message] = build_direct_message(attrs, text)
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# @return [Hash] Normalized hash of attrs
|
28
|
+
def read_from_response(attrs)
|
29
|
+
attrs[:event].nil? ? attrs : attrs[:event]
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_direct_message(attrs, text)
|
33
|
+
recipient_id = attrs[:message_create][:target][:recipient_id].to_i
|
34
|
+
sender_id = attrs[:message_create][:sender_id].to_i
|
35
|
+
{id: attrs[:id].to_i,
|
36
|
+
created_at: Time.at(attrs[:created_timestamp].to_i / 1000.0),
|
37
|
+
sender: {id: sender_id},
|
38
|
+
sender_id: sender_id,
|
39
|
+
recipient: {id: recipient_id},
|
40
|
+
recipient_id: recipient_id,
|
41
|
+
text: text}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "twitter/creatable"
|
2
|
+
require "twitter/entities"
|
3
|
+
require "twitter/identity"
|
4
|
+
|
5
|
+
module Twitter
|
6
|
+
module DirectMessages
|
7
|
+
class WelcomeMessage < Twitter::Identity
|
8
|
+
include Twitter::Creatable
|
9
|
+
include Twitter::Entities
|
10
|
+
# @return [String]
|
11
|
+
attr_reader :text
|
12
|
+
# @return [String]
|
13
|
+
attr_reader :name
|
14
|
+
alias full_text text
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "twitter/creatable"
|
2
|
+
require "twitter/identity"
|
3
|
+
|
4
|
+
module Twitter
|
5
|
+
module DirectMessages
|
6
|
+
class WelcomeMessageRuleWrapper < Twitter::Identity
|
7
|
+
attr_reader :created_timestamp
|
8
|
+
|
9
|
+
object_attr_reader "DirectMessages::WelcomeMessageRule", :welcome_message_rule
|
10
|
+
|
11
|
+
def initialize(attrs)
|
12
|
+
attrs = read_from_response(attrs)
|
13
|
+
|
14
|
+
attrs[:welcome_message_rule] = build_welcome_message_rule(attrs)
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
# @return [Hash] Normalized hash of attrs
|
21
|
+
def read_from_response(attrs)
|
22
|
+
return attrs[:welcome_message_rule] unless attrs[:welcome_message_rule].nil?
|
23
|
+
|
24
|
+
attrs
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_welcome_message_rule(attrs)
|
28
|
+
{
|
29
|
+
id: attrs[:id].to_i,
|
30
|
+
created_at: Time.at(attrs[:created_timestamp].to_i / 1000.0),
|
31
|
+
welcome_message_id: attrs[:welcome_message_id].to_i,
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "twitter/creatable"
|
2
|
+
require "twitter/identity"
|
3
|
+
|
4
|
+
module Twitter
|
5
|
+
module DirectMessages
|
6
|
+
class WelcomeMessageWrapper < Twitter::Identity
|
7
|
+
attr_reader :created_timestamp
|
8
|
+
|
9
|
+
object_attr_reader "DirectMessages::WelcomeMessage", :welcome_message
|
10
|
+
|
11
|
+
def initialize(attrs)
|
12
|
+
attrs = read_from_response(attrs)
|
13
|
+
text = attrs.dig(:message_data, :text)
|
14
|
+
urls = attrs.dig(:message_data, :entities, :urls)
|
15
|
+
|
16
|
+
text.gsub!(urls[0][:url], urls[0][:expanded_url]) if urls.any?
|
17
|
+
|
18
|
+
attrs[:welcome_message] = build_welcome_message(attrs, text)
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# @return [Hash] Normalized hash of attrs
|
25
|
+
def read_from_response(attrs)
|
26
|
+
return attrs[:welcome_message] unless attrs[:welcome_message].nil?
|
27
|
+
|
28
|
+
attrs
|
29
|
+
end
|
30
|
+
|
31
|
+
def build_welcome_message(attrs, text)
|
32
|
+
{
|
33
|
+
id: attrs[:id].to_i,
|
34
|
+
created_at: Time.at(attrs[:created_timestamp].to_i / 1000.0),
|
35
|
+
text: text,
|
36
|
+
name: attrs[:name],
|
37
|
+
entities: attrs.dig(:message_data, :entities),
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/twitter/entities.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
1
|
+
require "memoizable"
|
2
|
+
require "twitter/entity/hashtag"
|
3
|
+
require "twitter/entity/symbol"
|
4
|
+
require "twitter/entity/uri"
|
5
|
+
require "twitter/entity/user_mention"
|
6
|
+
require "twitter/media_factory"
|
7
7
|
|
8
8
|
module Twitter
|
9
9
|
module Entities
|
data/lib/twitter/entity/uri.rb
CHANGED
data/lib/twitter/entity.rb
CHANGED
data/lib/twitter/enumerable.rb
CHANGED
@@ -3,15 +3,14 @@ module Twitter
|
|
3
3
|
include ::Enumerable
|
4
4
|
|
5
5
|
# @return [Enumerator]
|
6
|
-
def each(start = 0)
|
6
|
+
def each(start = 0, &block)
|
7
7
|
return to_enum(:each, start) unless block_given?
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
unless last?
|
8
|
+
|
9
|
+
Array(@collection[start..]).each(&block)
|
10
|
+
unless finished?
|
12
11
|
start = [@collection.size, start].max
|
13
12
|
fetch_next_page
|
14
|
-
each(start, &
|
13
|
+
each(start, &block)
|
15
14
|
end
|
16
15
|
self
|
17
16
|
end
|
@@ -22,5 +21,15 @@ module Twitter
|
|
22
21
|
def last?
|
23
22
|
true
|
24
23
|
end
|
24
|
+
|
25
|
+
# @return [Boolean]
|
26
|
+
def reached_limit?
|
27
|
+
false
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [Boolean]
|
31
|
+
def finished?
|
32
|
+
last? || reached_limit?
|
33
|
+
end
|
25
34
|
end
|
26
35
|
end
|