twitter 5.8.0 → 5.9.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.
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