twitter 5.0.0 → 5.4.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.
- data/.yardopts +4 -0
- data/CHANGELOG.md +47 -0
- data/CONTRIBUTING.md +5 -5
- data/README.md +57 -56
- data/Rakefile +26 -5
- data/lib/twitter/arguments.rb +1 -2
- data/lib/twitter/base.rb +15 -18
- data/lib/twitter/basic_user.rb +3 -3
- data/lib/twitter/client.rb +9 -10
- data/lib/twitter/configuration.rb +5 -5
- data/lib/twitter/creatable.rb +0 -1
- data/lib/twitter/cursor.rb +9 -36
- data/lib/twitter/direct_message.rb +1 -1
- data/lib/twitter/entity/uri.rb +2 -2
- data/lib/twitter/enumerable.rb +10 -1
- data/lib/twitter/error/already_favorited.rb +1 -1
- data/lib/twitter/error/already_posted.rb +1 -1
- data/lib/twitter/error/already_retweeted.rb +1 -1
- data/lib/twitter/error/too_many_requests.rb +2 -2
- data/lib/twitter/error.rb +6 -6
- data/lib/twitter/factory.rb +2 -6
- data/lib/twitter/geo/point.rb +3 -5
- data/lib/twitter/geo.rb +1 -1
- data/lib/twitter/geo_factory.rb +1 -5
- data/lib/twitter/geo_results.rb +5 -8
- data/lib/twitter/identity.rb +1 -2
- data/lib/twitter/list.rb +10 -11
- data/lib/twitter/media/photo.rb +1 -2
- data/lib/twitter/media_factory.rb +1 -5
- data/lib/twitter/null_object.rb +4 -6
- data/lib/twitter/oembed.rb +1 -1
- data/lib/twitter/place.rb +17 -6
- data/lib/twitter/profile_banner.rb +1 -3
- data/lib/twitter/rate_limit.rb +1 -3
- data/lib/twitter/relationship.rb +1 -2
- data/lib/twitter/rest/api/direct_messages.rb +15 -15
- data/lib/twitter/rest/api/favorites.rb +15 -15
- data/lib/twitter/rest/api/friends_and_followers.rb +37 -42
- data/lib/twitter/rest/api/help.rb +8 -9
- data/lib/twitter/rest/api/lists.rb +69 -69
- data/lib/twitter/rest/api/oauth.rb +3 -4
- data/lib/twitter/rest/api/places_and_geo.rb +9 -10
- data/lib/twitter/rest/api/saved_searches.rb +8 -8
- data/lib/twitter/rest/api/search.rb +10 -2
- data/lib/twitter/rest/api/spam_reporting.rb +1 -2
- data/lib/twitter/rest/api/suggested_users.rb +4 -5
- data/lib/twitter/rest/api/timelines.rb +17 -18
- data/lib/twitter/rest/api/trends.rb +10 -11
- data/lib/twitter/rest/api/tweets.rb +31 -20
- data/lib/twitter/rest/api/undocumented.rb +6 -7
- data/lib/twitter/rest/api/users.rb +53 -54
- data/lib/twitter/rest/api/utils.rb +28 -34
- data/lib/twitter/rest/client.rb +8 -9
- data/lib/twitter/rest/request/multipart_with_file.rb +7 -5
- data/lib/twitter/rest/response/parse_error_json.rb +0 -2
- data/lib/twitter/rest/response/parse_json.rb +2 -2
- data/lib/twitter/rest/response/raise_error.rb +1 -3
- data/lib/twitter/search_results.rb +38 -56
- data/lib/twitter/settings.rb +2 -2
- data/lib/twitter/size.rb +2 -2
- data/lib/twitter/source_user.rb +1 -1
- data/lib/twitter/streaming/client.rb +69 -18
- data/lib/twitter/streaming/connection.rb +1 -3
- data/lib/twitter/streaming/deleted_tweet.rb +8 -0
- data/lib/twitter/streaming/event.rb +8 -8
- data/lib/twitter/streaming/friend_list.rb +2 -9
- data/lib/twitter/streaming/message_parser.rb +13 -3
- data/lib/twitter/streaming/response.rb +0 -2
- data/lib/twitter/streaming/stall_warning.rb +7 -0
- data/lib/twitter/suggestion.rb +0 -1
- data/lib/twitter/token.rb +2 -3
- data/lib/twitter/trend_results.rb +5 -8
- data/lib/twitter/tweet.rb +17 -18
- data/lib/twitter/user.rb +33 -35
- data/lib/twitter/utils.rb +14 -0
- data/lib/twitter/version.rb +2 -5
- data/lib/twitter.rb +1 -1
- data/spec/fixtures/forbidden.json +1 -0
- data/spec/fixtures/search.json +1 -1
- data/spec/fixtures/search2.json +1 -0
- data/spec/fixtures/track_streaming_user.json +2 -1
- data/spec/helper.rb +6 -2
- data/spec/twitter/base_spec.rb +9 -9
- data/spec/twitter/basic_user_spec.rb +6 -6
- data/spec/twitter/configuration_spec.rb +4 -4
- data/spec/twitter/cursor_spec.rb +13 -51
- data/spec/twitter/direct_message_spec.rb +36 -36
- data/spec/twitter/entity/uri_spec.rb +29 -29
- data/spec/twitter/error_spec.rb +21 -21
- data/spec/twitter/geo/point_spec.rb +9 -9
- data/spec/twitter/geo/polygon_spec.rb +5 -5
- data/spec/twitter/geo_factory_spec.rb +7 -7
- data/spec/twitter/geo_results_spec.rb +11 -11
- data/spec/twitter/geo_spec.rb +5 -5
- data/spec/twitter/identifiable_spec.rb +9 -9
- data/spec/twitter/list_spec.rb +38 -38
- data/spec/twitter/media/photo_spec.rb +58 -58
- data/spec/twitter/media_factory_spec.rb +5 -5
- data/spec/twitter/null_object_spec.rb +6 -6
- data/spec/twitter/oembed_spec.rb +68 -68
- data/spec/twitter/place_spec.rb +91 -62
- data/spec/twitter/profile_banner_spec.rb +3 -3
- data/spec/twitter/rate_limit_spec.rb +18 -18
- data/spec/twitter/relationship_spec.rb +16 -16
- data/spec/twitter/rest/api/direct_messages_spec.rb +61 -61
- data/spec/twitter/rest/api/favorites_spec.rb +93 -93
- data/spec/twitter/rest/api/friends_and_followers_spec.rb +357 -349
- data/spec/twitter/rest/api/geo_spec.rb +33 -33
- data/spec/twitter/rest/api/help_spec.rb +24 -24
- data/spec/twitter/rest/api/lists_spec.rb +487 -487
- data/spec/twitter/rest/api/oauth_spec.rb +30 -30
- data/spec/twitter/rest/api/saved_searches_spec.rb +50 -40
- data/spec/twitter/rest/api/search_spec.rb +27 -26
- data/spec/twitter/rest/api/spam_reporting_spec.rb +9 -9
- data/spec/twitter/rest/api/suggested_users_spec.rb +23 -23
- data/spec/twitter/rest/api/timelines_spec.rb +58 -58
- data/spec/twitter/rest/api/trends_spec.rb +26 -26
- data/spec/twitter/rest/api/tweets_spec.rb +304 -266
- data/spec/twitter/rest/api/undocumented_spec.rb +51 -51
- data/spec/twitter/rest/api/users_spec.rb +360 -360
- data/spec/twitter/rest/client_spec.rb +99 -103
- data/spec/twitter/saved_search_spec.rb +16 -16
- data/spec/twitter/search_results_spec.rb +14 -110
- data/spec/twitter/settings_spec.rb +8 -8
- data/spec/twitter/size_spec.rb +5 -5
- data/spec/twitter/source_user_spec.rb +6 -6
- data/spec/twitter/streaming/client_spec.rb +85 -54
- data/spec/twitter/streaming/deleted_tweet_spec.rb +23 -0
- data/spec/twitter/streaming/event_spec.rb +20 -22
- data/spec/twitter/streaming/friend_list_spec.rb +11 -0
- data/spec/twitter/streaming/message_parser_spec.rb +54 -0
- data/spec/twitter/suggestion_spec.rb +11 -11
- data/spec/twitter/target_user_spec.rb +6 -6
- data/spec/twitter/token_spec.rb +4 -4
- data/spec/twitter/trend_results_spec.rb +30 -30
- data/spec/twitter/trend_spec.rb +21 -21
- data/spec/twitter/tweet_spec.rb +178 -164
- data/spec/twitter/user_spec.rb +190 -190
- data/twitter.gemspec +6 -6
- data.tar.gz.sig +0 -0
- metadata +44 -16
- metadata.gz.sig +0 -0
- data/lib/twitter/core_ext/enumerable.rb +0 -10
- data/lib/twitter/core_ext/kernel.rb +0 -10
- data/spec/twitter_spec.rb +0 -0
|
@@ -3,183 +3,183 @@ require 'helper'
|
|
|
3
3
|
describe Twitter::REST::API::Favorites do
|
|
4
4
|
|
|
5
5
|
before do
|
|
6
|
-
@client = Twitter::REST::Client.new(:consumer_key =>
|
|
6
|
+
@client = Twitter::REST::Client.new(:consumer_key => 'CK', :consumer_secret => 'CS', :access_token => 'AT', :access_token_secret => 'AS')
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
describe
|
|
10
|
-
context
|
|
9
|
+
describe '#favorites' do
|
|
10
|
+
context 'with a screen name passed' do
|
|
11
11
|
before do
|
|
12
|
-
stub_get(
|
|
12
|
+
stub_get('/1.1/favorites/list.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('user_timeline.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
13
13
|
end
|
|
14
|
-
it
|
|
15
|
-
@client.favorites(
|
|
16
|
-
expect(a_get(
|
|
14
|
+
it 'requests the correct resource' do
|
|
15
|
+
@client.favorites('sferik')
|
|
16
|
+
expect(a_get('/1.1/favorites/list.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
17
17
|
end
|
|
18
|
-
it
|
|
19
|
-
favorites = @client.favorites(
|
|
18
|
+
it 'returns the 20 most recent favorite Tweets for the authenticating user or user specified by the ID parameter' do
|
|
19
|
+
favorites = @client.favorites('sferik')
|
|
20
20
|
expect(favorites).to be_an Array
|
|
21
21
|
expect(favorites.first).to be_a Twitter::Tweet
|
|
22
|
-
expect(favorites.first.user.id).to eq(
|
|
22
|
+
expect(favorites.first.user.id).to eq(7_505_382)
|
|
23
23
|
end
|
|
24
|
-
context
|
|
25
|
-
it
|
|
26
|
-
user = URI.parse(
|
|
24
|
+
context 'with a URI object passed' do
|
|
25
|
+
it 'requests the correct resource' do
|
|
26
|
+
user = URI.parse('https://twitter.com/sferik')
|
|
27
27
|
@client.favorites(user)
|
|
28
|
-
expect(a_get(
|
|
28
|
+
expect(a_get('/1.1/favorites/list.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
|
-
context
|
|
32
|
-
it
|
|
33
|
-
@client.favorites(
|
|
34
|
-
expect(a_get(
|
|
31
|
+
context 'with a URI string passed' do
|
|
32
|
+
it 'requests the correct resource' do
|
|
33
|
+
@client.favorites('https://twitter.com/sferik')
|
|
34
|
+
expect(a_get('/1.1/favorites/list.json').with(:query => {:screen_name => 'sferik'})).to have_been_made
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
|
-
context
|
|
38
|
+
context 'without arguments passed' do
|
|
39
39
|
before do
|
|
40
|
-
stub_get(
|
|
40
|
+
stub_get('/1.1/favorites/list.json').to_return(:body => fixture('user_timeline.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
41
41
|
end
|
|
42
|
-
it
|
|
42
|
+
it 'requests the correct resource' do
|
|
43
43
|
@client.favorites
|
|
44
|
-
expect(a_get(
|
|
44
|
+
expect(a_get('/1.1/favorites/list.json')).to have_been_made
|
|
45
45
|
end
|
|
46
|
-
it
|
|
46
|
+
it 'returns the 20 most recent favorite Tweets for the authenticating user or user specified by the ID parameter' do
|
|
47
47
|
favorites = @client.favorites
|
|
48
48
|
expect(favorites).to be_an Array
|
|
49
49
|
expect(favorites.first).to be_a Twitter::Tweet
|
|
50
|
-
expect(favorites.first.user.id).to eq(
|
|
50
|
+
expect(favorites.first.user.id).to eq(7_505_382)
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
describe
|
|
55
|
+
describe '#unfavorite' do
|
|
56
56
|
before do
|
|
57
|
-
stub_post(
|
|
57
|
+
stub_post('/1.1/favorites/destroy.json').with(:body => {:id => '25938088801'}).to_return(:body => fixture('status.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
58
58
|
end
|
|
59
|
-
it
|
|
60
|
-
@client.unfavorite(
|
|
61
|
-
expect(a_post(
|
|
59
|
+
it 'requests the correct resource' do
|
|
60
|
+
@client.unfavorite(25_938_088_801)
|
|
61
|
+
expect(a_post('/1.1/favorites/destroy.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
62
62
|
end
|
|
63
|
-
it
|
|
64
|
-
tweets = @client.unfavorite(
|
|
63
|
+
it 'returns an array of un-favorited Tweets' do
|
|
64
|
+
tweets = @client.unfavorite(25_938_088_801)
|
|
65
65
|
expect(tweets).to be_an Array
|
|
66
66
|
expect(tweets.first).to be_a Twitter::Tweet
|
|
67
67
|
expect(tweets.first.text).to eq("The problem with your code is that it's doing exactly what you told it to do.")
|
|
68
68
|
end
|
|
69
|
-
context
|
|
70
|
-
it
|
|
71
|
-
tweet = URI.parse(
|
|
69
|
+
context 'with a URI object passed' do
|
|
70
|
+
it 'requests the correct resource' do
|
|
71
|
+
tweet = URI.parse('https://twitter.com/sferik/status/25938088801')
|
|
72
72
|
@client.unfavorite(tweet)
|
|
73
|
-
expect(a_post(
|
|
73
|
+
expect(a_post('/1.1/favorites/destroy.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
|
-
context
|
|
77
|
-
it
|
|
78
|
-
@client.unfavorite(
|
|
79
|
-
expect(a_post(
|
|
76
|
+
context 'with a URI string passed' do
|
|
77
|
+
it 'requests the correct resource' do
|
|
78
|
+
@client.unfavorite('https://twitter.com/sferik/status/25938088801')
|
|
79
|
+
expect(a_post('/1.1/favorites/destroy.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
|
-
context
|
|
83
|
-
it
|
|
84
|
-
tweet = Twitter::Tweet.new(:id =>
|
|
82
|
+
context 'with a Tweet passed' do
|
|
83
|
+
it 'requests the correct resource' do
|
|
84
|
+
tweet = Twitter::Tweet.new(:id => 25_938_088_801)
|
|
85
85
|
@client.unfavorite(tweet)
|
|
86
|
-
expect(a_post(
|
|
86
|
+
expect(a_post('/1.1/favorites/destroy.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
87
87
|
end
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
describe
|
|
91
|
+
describe '#favorite' do
|
|
92
92
|
before do
|
|
93
|
-
stub_post(
|
|
93
|
+
stub_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'}).to_return(:body => fixture('status.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
94
94
|
end
|
|
95
|
-
it
|
|
96
|
-
@client.favorite(
|
|
97
|
-
expect(a_post(
|
|
95
|
+
it 'requests the correct resource' do
|
|
96
|
+
@client.favorite(25_938_088_801)
|
|
97
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
98
98
|
end
|
|
99
|
-
it
|
|
100
|
-
tweets = @client.favorite(
|
|
99
|
+
it 'returns an array of favorited Tweets' do
|
|
100
|
+
tweets = @client.favorite(25_938_088_801)
|
|
101
101
|
expect(tweets).to be_an Array
|
|
102
102
|
expect(tweets.first).to be_a Twitter::Tweet
|
|
103
103
|
expect(tweets.first.text).to eq("The problem with your code is that it's doing exactly what you told it to do.")
|
|
104
104
|
end
|
|
105
|
-
context
|
|
105
|
+
context 'already favorited' do
|
|
106
106
|
before do
|
|
107
|
-
stub_post(
|
|
107
|
+
stub_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'}).to_return(:status => 403, :body => fixture('already_favorited.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
108
108
|
end
|
|
109
|
-
it
|
|
110
|
-
expect{@client.favorite(
|
|
109
|
+
it 'does not raises an error' do
|
|
110
|
+
expect { @client.favorite(25_938_088_801) }.not_to raise_error
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
|
-
context
|
|
114
|
-
it
|
|
115
|
-
tweet = URI.parse(
|
|
113
|
+
context 'with a URI object passed' do
|
|
114
|
+
it 'requests the correct resource' do
|
|
115
|
+
tweet = URI.parse('https://twitter.com/sferik/status/25938088801')
|
|
116
116
|
@client.favorite(tweet)
|
|
117
|
-
expect(a_post(
|
|
117
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
118
118
|
end
|
|
119
119
|
end
|
|
120
|
-
context
|
|
121
|
-
it
|
|
122
|
-
@client.favorite(
|
|
123
|
-
expect(a_post(
|
|
120
|
+
context 'with a URI string passed' do
|
|
121
|
+
it 'requests the correct resource' do
|
|
122
|
+
@client.favorite('https://twitter.com/sferik/status/25938088801')
|
|
123
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
124
124
|
end
|
|
125
125
|
end
|
|
126
|
-
context
|
|
127
|
-
it
|
|
128
|
-
tweet = Twitter::Tweet.new(:id =>
|
|
126
|
+
context 'with a Tweet passed' do
|
|
127
|
+
it 'requests the correct resource' do
|
|
128
|
+
tweet = Twitter::Tweet.new(:id => 25_938_088_801)
|
|
129
129
|
@client.favorite(tweet)
|
|
130
|
-
expect(a_post(
|
|
130
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
131
131
|
end
|
|
132
132
|
end
|
|
133
133
|
end
|
|
134
134
|
|
|
135
|
-
describe
|
|
135
|
+
describe '#favorite!' do
|
|
136
136
|
before do
|
|
137
|
-
stub_post(
|
|
137
|
+
stub_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'}).to_return(:body => fixture('status.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
138
138
|
end
|
|
139
|
-
it
|
|
140
|
-
@client.favorite!(
|
|
141
|
-
expect(a_post(
|
|
139
|
+
it 'requests the correct resource' do
|
|
140
|
+
@client.favorite!(25_938_088_801)
|
|
141
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
142
142
|
end
|
|
143
|
-
it
|
|
144
|
-
tweets = @client.favorite!(
|
|
143
|
+
it 'returns an array of favorited Tweets' do
|
|
144
|
+
tweets = @client.favorite!(25_938_088_801)
|
|
145
145
|
expect(tweets).to be_an Array
|
|
146
146
|
expect(tweets.first).to be_a Twitter::Tweet
|
|
147
147
|
expect(tweets.first.text).to eq("The problem with your code is that it's doing exactly what you told it to do.")
|
|
148
148
|
end
|
|
149
|
-
context
|
|
149
|
+
context 'forbidden' do
|
|
150
150
|
before do
|
|
151
|
-
stub_post(
|
|
151
|
+
stub_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'}).to_return(:status => 403, :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
152
152
|
end
|
|
153
|
-
it
|
|
154
|
-
expect{@client.favorite!(
|
|
153
|
+
it 'raises a Forbidden error' do
|
|
154
|
+
expect { @client.favorite!(25_938_088_801) }.to raise_error Twitter::Error::Forbidden
|
|
155
155
|
end
|
|
156
156
|
end
|
|
157
|
-
context
|
|
157
|
+
context 'already favorited' do
|
|
158
158
|
before do
|
|
159
|
-
stub_post(
|
|
159
|
+
stub_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'}).to_return(:status => 403, :body => fixture('already_favorited.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
|
|
160
160
|
end
|
|
161
|
-
it
|
|
162
|
-
expect{@client.favorite!(
|
|
161
|
+
it 'raises an AlreadyFavorited error' do
|
|
162
|
+
expect { @client.favorite!(25_938_088_801) }.to raise_error Twitter::Error::AlreadyFavorited
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
|
-
context
|
|
166
|
-
it
|
|
167
|
-
tweet = URI.parse(
|
|
165
|
+
context 'with a URI object passed' do
|
|
166
|
+
it 'requests the correct resource' do
|
|
167
|
+
tweet = URI.parse('https://twitter.com/sferik/status/25938088801')
|
|
168
168
|
@client.favorite!(tweet)
|
|
169
|
-
expect(a_post(
|
|
169
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
170
170
|
end
|
|
171
171
|
end
|
|
172
|
-
context
|
|
173
|
-
it
|
|
174
|
-
@client.favorite!(
|
|
175
|
-
expect(a_post(
|
|
172
|
+
context 'with a URI string passed' do
|
|
173
|
+
it 'requests the correct resource' do
|
|
174
|
+
@client.favorite!('https://twitter.com/sferik/status/25938088801')
|
|
175
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
176
176
|
end
|
|
177
177
|
end
|
|
178
|
-
context
|
|
179
|
-
it
|
|
180
|
-
tweet = Twitter::Tweet.new(:id =>
|
|
178
|
+
context 'with a Tweet passed' do
|
|
179
|
+
it 'requests the correct resource' do
|
|
180
|
+
tweet = Twitter::Tweet.new(:id => 25_938_088_801)
|
|
181
181
|
@client.favorite!(tweet)
|
|
182
|
-
expect(a_post(
|
|
182
|
+
expect(a_post('/1.1/favorites/create.json').with(:body => {:id => '25938088801'})).to have_been_made
|
|
183
183
|
end
|
|
184
184
|
end
|
|
185
185
|
end
|