twitter 5.8.0 → 5.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +10 -36
  4. data/lib/twitter/base.rb +20 -3
  5. data/lib/twitter/basic_user.rb +6 -4
  6. data/lib/twitter/client.rb +2 -1
  7. data/lib/twitter/configuration.rb +1 -1
  8. data/lib/twitter/cursor.rb +1 -1
  9. data/lib/twitter/entities.rb +10 -6
  10. data/lib/twitter/enumerable.rb +2 -2
  11. data/lib/twitter/error.rb +7 -0
  12. data/lib/twitter/geo_results.rb +1 -1
  13. data/lib/twitter/list.rb +3 -2
  14. data/lib/twitter/media/photo.rb +1 -1
  15. data/lib/twitter/place.rb +13 -15
  16. data/lib/twitter/profile.rb +1 -1
  17. data/lib/twitter/profile_banner.rb +1 -1
  18. data/lib/twitter/rest/client.rb +17 -2
  19. data/lib/twitter/rest/friends_and_followers.rb +1 -1
  20. data/lib/twitter/rest/lists.rb +4 -2
  21. data/lib/twitter/rest/spam_reporting.rb +1 -1
  22. data/lib/twitter/rest/tweets.rb +17 -17
  23. data/lib/twitter/rest/users.rb +77 -13
  24. data/lib/twitter/rest/utils.rb +10 -6
  25. data/lib/twitter/search_results.rb +1 -1
  26. data/lib/twitter/settings.rb +4 -3
  27. data/lib/twitter/source_user.rb +3 -2
  28. data/lib/twitter/streaming/client.rb +7 -2
  29. data/lib/twitter/streaming/connection.rb +9 -2
  30. data/lib/twitter/streaming/response.rb +3 -3
  31. data/lib/twitter/suggestion.rb +1 -1
  32. data/lib/twitter/target_user.rb +1 -1
  33. data/lib/twitter/trend.rb +2 -1
  34. data/lib/twitter/trend_results.rb +1 -1
  35. data/lib/twitter/tweet.rb +4 -4
  36. data/lib/twitter/user.rb +60 -19
  37. data/lib/twitter/utils.rb +12 -5
  38. data/lib/twitter/version.rb +1 -1
  39. data/spec/fixtures/following.json +1 -1
  40. data/spec/fixtures/sferik.json +1 -1
  41. data/spec/helper.rb +14 -5
  42. data/spec/twitter/base_spec.rb +16 -4
  43. data/spec/twitter/direct_message_spec.rb +12 -13
  44. data/spec/twitter/entity/uri_spec.rb +2 -2
  45. data/spec/twitter/error_spec.rb +2 -2
  46. data/spec/twitter/media/photo_spec.rb +4 -4
  47. data/spec/twitter/oembed_spec.rb +3 -3
  48. data/spec/twitter/place_spec.rb +1 -1
  49. data/spec/twitter/rest/client_spec.rb +54 -14
  50. data/spec/twitter/rest/friends_and_followers_spec.rb +76 -76
  51. data/spec/twitter/rest/lists_spec.rb +85 -64
  52. data/spec/twitter/rest/timelines_spec.rb +2 -2
  53. data/spec/twitter/rest/tweets_spec.rb +20 -16
  54. data/spec/twitter/rest/undocumented_spec.rb +17 -17
  55. data/spec/twitter/rest/users_spec.rb +101 -17
  56. data/spec/twitter/streaming/client_spec.rb +1 -1
  57. data/spec/twitter/streaming/connection_spec.rb +32 -0
  58. data/spec/twitter/streaming/response_spec.rb +21 -0
  59. data/spec/twitter/trend_spec.rb +1 -1
  60. data/spec/twitter/tweet_spec.rb +14 -23
  61. data/spec/twitter/user_spec.rb +120 -13
  62. data/twitter.gemspec +3 -3
  63. metadata +8 -4
@@ -44,10 +44,10 @@ describe Twitter::User do
44
44
  end
45
45
 
46
46
  describe '#description_uris' do
47
- it 'returns an array of Entity::URIs when entities are set' do
47
+ it 'returns an array of Entity::URIs when description URI entities are set' do
48
48
  urls_array = [
49
49
  {
50
- :url => 'http://example.com/t.co',
50
+ :url => 'https://t.co/L2xIBazMPf',
51
51
  :expanded_url => 'http://example.com/expanded',
52
52
  :display_url => 'example.com/expanded…',
53
53
  :indices => [10, 33],
@@ -57,7 +57,7 @@ describe Twitter::User do
57
57
  expect(user.description_uris).to be_an Array
58
58
  expect(user.description_uris.first).to be_a Twitter::Entity::URI
59
59
  expect(user.description_uris.first.indices).to eq([10, 33])
60
- expect(user.description_uris.first.display_uri).to eq('example.com/expanded…')
60
+ expect(user.description_uris.first.expanded_uri).to be_an Addressable::URI
61
61
  end
62
62
  it 'is empty when not set' do
63
63
  user = Twitter::User.new(:id => 7_505_382, :entities => {:description => {:urls => []}})
@@ -65,14 +65,56 @@ describe Twitter::User do
65
65
  end
66
66
  end
67
67
 
68
+ describe '#description_uris?' do
69
+ it 'returns true when the tweet includes description URI entities' do
70
+ urls_array = [
71
+ {
72
+ :url => 'https://t.co/L2xIBazMPf',
73
+ :expanded_url => 'http://example.com/expanded',
74
+ :display_url => 'example.com/expanded…',
75
+ :indices => [10, 33],
76
+ }
77
+ ]
78
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:description => {:urls => urls_array}})
79
+ expect(user.description_uris?).to be true
80
+ end
81
+ it 'returns false when no entities are present' do
82
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:description => {:urls => []}})
83
+ expect(user.description_uris?).to be false
84
+ end
85
+ end
86
+
87
+ describe '#entities?' do
88
+ it 'returns true if there are entities set' do
89
+ urls_array = [
90
+ {
91
+ :url => 'https://t.co/L2xIBazMPf',
92
+ :expanded_url => 'http://example.com/expanded',
93
+ :display_url => 'example.com/expanded…',
94
+ :indices => [10, 33],
95
+ }
96
+ ]
97
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:description => {:urls => urls_array}})
98
+ expect(user.entities?).to be true
99
+ end
100
+ it 'returns false if there are blank lists of entities set' do
101
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:description => {:urls => []}})
102
+ expect(user.entities?).to be false
103
+ end
104
+ it 'returns false if there are no entities set' do
105
+ user = Twitter::User.new(:id => 7_505_382)
106
+ expect(user.entities?).to be false
107
+ end
108
+ end
109
+
68
110
  describe '#profile_banner_uri' do
69
111
  it 'accepts utf8 urls' do
70
112
  user = Twitter::User.new(:id => 7_505_382, :profile_banner_url => 'https://si0.twimg.com/profile_banners/7_505_382/1348266581©_normal.png')
71
- expect(user.profile_banner_uri).to be_a Addressable::URI
113
+ expect(user.profile_banner_uri).to be_an Addressable::URI
72
114
  end
73
115
  it 'returns a URI when profile_banner_url is set' do
74
116
  user = Twitter::User.new(:id => 7_505_382, :profile_banner_url => 'https://si0.twimg.com/profile_banners/7_505_382/1348266581')
75
- expect(user.profile_banner_uri).to be_a Addressable::URI
117
+ expect(user.profile_banner_uri).to be_an Addressable::URI
76
118
  end
77
119
  it 'returns nil when profile_banner_uri is not set' do
78
120
  user = Twitter::User.new(:id => 7_505_382)
@@ -117,11 +159,11 @@ describe Twitter::User do
117
159
  describe '#profile_banner_uri_https' do
118
160
  it 'accepts utf8 urls' do
119
161
  user = Twitter::User.new(:id => 7_505_382, :profile_banner_url => 'https://si0.twimg.com/profile_banners/7_505_382/1348266581©_normal.png')
120
- expect(user.profile_banner_uri_https).to be_a Addressable::URI
162
+ expect(user.profile_banner_uri_https).to be_an Addressable::URI
121
163
  end
122
164
  it 'returns a URI when profile_banner_url is set' do
123
165
  user = Twitter::User.new(:id => 7_505_382, :profile_banner_url => 'https://si0.twimg.com/profile_banners/7_505_382/1348266581')
124
- expect(user.profile_banner_uri_https).to be_a Addressable::URI
166
+ expect(user.profile_banner_uri_https).to be_an Addressable::URI
125
167
  end
126
168
  it 'returns nil when created_at is not set' do
127
169
  user = Twitter::User.new(:id => 7_505_382)
@@ -177,11 +219,11 @@ describe Twitter::User do
177
219
  describe '#profile_image_uri' do
178
220
  it 'accepts utf8 urls' do
179
221
  user = Twitter::User.new(:id => 7_505_382, :profile_image_url_https => 'https://si0.twimg.com/profile_images/7_505_382/1348266581©_normal.png')
180
- expect(user.profile_image_uri).to be_a Addressable::URI
222
+ expect(user.profile_image_uri).to be_an Addressable::URI
181
223
  end
182
224
  it 'returns a URI when profile_image_url_https is set' do
183
225
  user = Twitter::User.new(:id => 7_505_382, :profile_image_url_https => 'https://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png')
184
- expect(user.profile_image_uri).to be_a Addressable::URI
226
+ expect(user.profile_image_uri).to be_an Addressable::URI
185
227
  end
186
228
  it 'returns nil when created_at is not set' do
187
229
  user = Twitter::User.new(:id => 7_505_382)
@@ -222,11 +264,11 @@ describe Twitter::User do
222
264
  describe '#profile_image_uri_https' do
223
265
  it 'accepts utf8 urls' do
224
266
  user = Twitter::User.new(:id => 7_505_382, :profile_image_url_https => 'https://si0.twimg.com/profile_images/7_505_382/1348266581©_normal.png')
225
- expect(user.profile_image_uri_https).to be_a Addressable::URI
267
+ expect(user.profile_image_uri_https).to be_an Addressable::URI
226
268
  end
227
269
  it 'returns a URI when profile_image_url_https is set' do
228
270
  user = Twitter::User.new(:id => 7_505_382, :profile_image_url_https => 'https://a0.twimg.com/profile_images/1759857427/image1326743606_normal.png')
229
- expect(user.profile_image_uri_https).to be_a Addressable::URI
271
+ expect(user.profile_image_uri_https).to be_an Addressable::URI
230
272
  end
231
273
  it 'returns nil when created_at is not set' do
232
274
  user = Twitter::User.new(:id => 7_505_382)
@@ -305,7 +347,7 @@ describe Twitter::User do
305
347
  describe '#uri' do
306
348
  it 'returns the URI to the user' do
307
349
  user = Twitter::User.new(:id => 7_505_382, :screen_name => 'sferik')
308
- expect(user.uri).to be_a Addressable::URI
350
+ expect(user.uri).to be_an Addressable::URI
309
351
  expect(user.uri.to_s).to eq('https://twitter.com/sferik')
310
352
  end
311
353
  end
@@ -313,9 +355,22 @@ describe Twitter::User do
313
355
  describe '#website' do
314
356
  it 'returns a URI when the url is set' do
315
357
  user = Twitter::User.new(:id => 7_505_382, :url => 'https://github.com/sferik')
316
- expect(user.website).to be_a Addressable::URI
358
+ expect(user.website).to be_an Addressable::URI
317
359
  expect(user.website.to_s).to eq('https://github.com/sferik')
318
360
  end
361
+ it 'returns a URI when the tweet includes website URI entities' do
362
+ urls_array = [
363
+ {
364
+ :url => 'https://t.co/L2xIBazMPf',
365
+ :expanded_url => 'http://example.com/expanded',
366
+ :display_url => 'example.com/expanded…',
367
+ :indices => [0, 23],
368
+ }
369
+ ]
370
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:url => {:urls => urls_array}})
371
+ expect(user.website).to be_an Addressable::URI
372
+ expect(user.website.to_s).to eq('http://example.com/expanded')
373
+ end
319
374
  it 'returns nil when the url is not set' do
320
375
  user = Twitter::User.new(:id => 7_505_382)
321
376
  expect(user.website).to be_nil
@@ -327,10 +382,62 @@ describe Twitter::User do
327
382
  user = Twitter::User.new(:id => 7_505_382, :url => 'https://github.com/sferik')
328
383
  expect(user.website?).to be true
329
384
  end
385
+ it 'returns true when the tweet includes website URI entities' do
386
+ urls_array = [
387
+ {
388
+ :url => 'https://t.co/L2xIBazMPf',
389
+ :expanded_url => 'http://example.com/expanded',
390
+ :display_url => 'example.com/expanded…',
391
+ :indices => [0, 23],
392
+ }
393
+ ]
394
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:url => {:urls => urls_array}})
395
+ expect(user.website?).to be true
396
+ end
330
397
  it 'returns false when the url is not set' do
331
398
  user = Twitter::User.new(:id => 7_505_382)
332
399
  expect(user.website?).to be false
333
400
  end
334
401
  end
335
402
 
403
+ describe '#website_uris' do
404
+ it 'returns an array of Entity::URIs when website URI entities are set' do
405
+ urls_array = [
406
+ {
407
+ :url => 'https://t.co/L2xIBazMPf',
408
+ :expanded_url => 'http://example.com/expanded',
409
+ :display_url => 'example.com/expanded…',
410
+ :indices => [0, 23],
411
+ }
412
+ ]
413
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:url => {:urls => urls_array}})
414
+ expect(user.website_uris).to be_an Array
415
+ expect(user.website_uris.first).to be_a Twitter::Entity::URI
416
+ expect(user.website_uris.first.indices).to eq([0, 23])
417
+ expect(user.website_uris.first.expanded_uri).to be_an Addressable::URI
418
+ end
419
+ it 'is empty when not set' do
420
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:url => {:urls => []}})
421
+ expect(user.website_uris).to be_empty
422
+ end
423
+ end
424
+
425
+ describe '#website_uris?' do
426
+ it 'returns true when the tweet includes website URI entities' do
427
+ urls_array = [
428
+ {
429
+ :url => 'https://t.co/L2xIBazMPf',
430
+ :expanded_url => 'http://example.com/expanded',
431
+ :display_url => 'example.com/expanded…',
432
+ :indices => [0, 23],
433
+ }
434
+ ]
435
+ user = Twitter::User.new(:id => 7_505_382, :entities => {:url => {:urls => urls_array}})
436
+ expect(user.website_uris?).to be true
437
+ end
438
+ it 'returns false when no entities are present' do
439
+ user = Twitter::User.new(:id => 7_505_382, :entities => {})
440
+ expect(user.website_uris?).to be false
441
+ end
442
+ end
336
443
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.add_dependency 'buftok', '~> 0.2.0'
8
8
  spec.add_dependency 'equalizer', '~> 0.0.9'
9
9
  spec.add_dependency 'faraday', '~> 0.9.0'
10
- spec.add_dependency 'http', '~> 0.5.0'
10
+ spec.add_dependency 'http', '~> 0.6.0'
11
11
  spec.add_dependency 'http_parser.rb', '~> 0.6.0'
12
12
  spec.add_dependency 'json', '~> 1.8'
13
13
  spec.add_dependency 'memoizable', '~> 0.4.0'
@@ -15,9 +15,9 @@ Gem::Specification.new do |spec|
15
15
  spec.add_dependency 'simple_oauth', '~> 0.2.0'
16
16
  spec.add_development_dependency 'bundler', '~> 1.0'
17
17
  spec.authors = ['Erik Michaels-Ober', 'John Nunemaker', 'Wynn Netherland', 'Steve Richert', 'Steve Agalloco']
18
- spec.description = %q{A Ruby interface to the Twitter API.}
18
+ spec.description = %q(A Ruby interface to the Twitter API.)
19
19
  spec.email = %w[sferik@gmail.com]
20
- spec.files = %w(.yardopts CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md Rakefile twitter.gemspec)
20
+ spec.files = %w[.yardopts CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md Rakefile twitter.gemspec]
21
21
  spec.files += Dir.glob('lib/**/*.rb')
22
22
  spec.files += Dir.glob('spec/**/*')
23
23
  spec.homepage = 'http://sferik.github.com/twitter/'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.0
4
+ version: 5.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Michaels-Ober
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-03-10 00:00:00.000000000 Z
15
+ date: 2014-05-14 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: addressable
@@ -76,14 +76,14 @@ dependencies:
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: 0.5.0
79
+ version: 0.6.0
80
80
  type: :runtime
81
81
  prerelease: false
82
82
  version_requirements: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
- version: 0.5.0
86
+ version: 0.6.0
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: http_parser.rb
89
89
  requirement: !ruby/object:Gem::Requirement
@@ -373,10 +373,12 @@ files:
373
373
  - spec/twitter/size_spec.rb
374
374
  - spec/twitter/source_user_spec.rb
375
375
  - spec/twitter/streaming/client_spec.rb
376
+ - spec/twitter/streaming/connection_spec.rb
376
377
  - spec/twitter/streaming/deleted_tweet_spec.rb
377
378
  - spec/twitter/streaming/event_spec.rb
378
379
  - spec/twitter/streaming/friend_list_spec.rb
379
380
  - spec/twitter/streaming/message_parser_spec.rb
381
+ - spec/twitter/streaming/response_spec.rb
380
382
  - spec/twitter/suggestion_spec.rb
381
383
  - spec/twitter/target_user_spec.rb
382
384
  - spec/twitter/token_spec.rb
@@ -520,10 +522,12 @@ test_files:
520
522
  - spec/twitter/size_spec.rb
521
523
  - spec/twitter/source_user_spec.rb
522
524
  - spec/twitter/streaming/client_spec.rb
525
+ - spec/twitter/streaming/connection_spec.rb
523
526
  - spec/twitter/streaming/deleted_tweet_spec.rb
524
527
  - spec/twitter/streaming/event_spec.rb
525
528
  - spec/twitter/streaming/friend_list_spec.rb
526
529
  - spec/twitter/streaming/message_parser_spec.rb
530
+ - spec/twitter/streaming/response_spec.rb
527
531
  - spec/twitter/suggestion_spec.rb
528
532
  - spec/twitter/target_user_spec.rb
529
533
  - spec/twitter/token_spec.rb