engagement 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c480010424c0c5e4a459b29f5f1c0ef442033ee
4
- data.tar.gz: 4e8048b988f5934eacf5d3f906ec9749845ea743
3
+ metadata.gz: 7add977384c5339a6051057a45a5898b5739983a
4
+ data.tar.gz: 48fe8059a1958eb67ca6a8e788839b045e04bbb1
5
5
  SHA512:
6
- metadata.gz: e21ae66354f2a68e596782770c9ee077144fa9eb0e49abbb8b44104c19208bd35940f097ca050591f8056895972272ddb3b8a5a5e1db9e2fb68acec965f550b1
7
- data.tar.gz: 65842d46f26d7a566a3d12d14dcdb483aa7dcea8f6464f4dc741cff3aa73ef809b4803ca776e55eab5ab8f3953444e05335099dd3aaec56b36e5a719a05d29cb
6
+ metadata.gz: efb02af994ce02d858e23e193173a44127e4a32ce09ec99d473dddbfa61f9206a25edaffb011077ef7e1b8603aec6be3aaadd2a1c3b9ae7e698b0f455a929fb0
7
+ data.tar.gz: 45144352d7073083f763366e16b739262dae977e75ff07f004edbd390af81919705a6e523c64ff23306b660fd509a5ffaaf9c6add997868ae6dedda13df47def
data/engagement.gemspec CHANGED
@@ -28,4 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'hacker_news_search', '~> 0.0.6'
29
29
  spec.add_dependency 'snoo'
30
30
  spec.add_dependency 'disqus'
31
+ spec.add_dependency 'twitter'
31
32
  end
@@ -5,6 +5,7 @@ module Engagement
5
5
  autoload :HackerNews, 'engagement/comment_counter/hacker_news'
6
6
  autoload :Reddit, 'engagement/comment_counter/reddit'
7
7
  autoload :Disqus, 'engagement/comment_counter/disqus'
8
+ autoload :Twitter, 'engagement/comment_counter/twitter'
8
9
 
9
10
  def initialize(places)
10
11
  @places = places
@@ -0,0 +1,22 @@
1
+ require 'twitter'
2
+
3
+ module Engagement
4
+ class CommentCounter
5
+ class Twitter
6
+
7
+ def initialize(credentials)
8
+ ::Twitter.configure do |config|
9
+ config.consumer_key = credentials[:consumer_key]
10
+ config.consumer_secret = credentials[:consumer_secret]
11
+ config.oauth_token = credentials[:oauth_token]
12
+ config.oauth_token_secret = credentials[:oauth_token_secret]
13
+ end
14
+ end
15
+
16
+ # FYI, Twitter only returns 6-9 days worth of tweet data
17
+ def comments_count(url)
18
+ ::Twitter.search(url)[:statuses].count
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Engagement
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -0,0 +1,240 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.twitter.com/1.1/search/tweets.json?q=http://gaslight.co/blog/angular-backed-svgs
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ User-Agent:
13
+ - Twitter Ruby Gem 4.8.1
14
+ Authorization:
15
+ - OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="f1b4c5784f02798d41a6676feb35201b", oauth_signature="nBEy1XNK7JNSQh2KXRvb%2FmUz7ds%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1376420828", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Cache-Control:
24
+ - no-cache, no-store, must-revalidate, pre-check=0, post-check=0
25
+ Content-Type:
26
+ - application/json;charset=utf-8
27
+ Date:
28
+ - Tue, 13 Aug 2013 19:07:08 GMT
29
+ Expires:
30
+ - Tue, 31 Mar 1981 05:00:00 GMT
31
+ Last-Modified:
32
+ - Tue, 13 Aug 2013 19:07:08 GMT
33
+ Pragma:
34
+ - no-cache
35
+ Server:
36
+ - tfe
37
+ Set-Cookie:
38
+ - guest_id=v1%3A137642082886962920; Domain=.twitter.com; Path=/; Expires=Thu, 13-Aug-2015 19:07:08 UTC
39
+ - lang=en
40
+ Status:
41
+ - 200 OK
42
+ Strict-Transport-Security:
43
+ - max-age=631138519
44
+ X-Access-Level:
45
+ - read
46
+ X-Frame-Options:
47
+ - SAMEORIGIN
48
+ X-Rate-Limit-Limit:
49
+ - "180"
50
+ X-Rate-Limit-Remaining:
51
+ - "176"
52
+ X-Rate-Limit-Reset:
53
+ - "1376421148"
54
+ X-Transaction:
55
+ - 6abce9b078fd66a2
56
+ Content-Encoding:
57
+ - gzip
58
+ Connection:
59
+ - close
60
+ body:
61
+ encoding: ASCII-8BIT
62
+ string: !binary |
63
+ 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
236
+ X8E40KA2UKqtBQAAAP//AwApUq4P794AAA==
237
+
238
+ http_version:
239
+ recorded_at: Tue, 13 Aug 2013 19:07:09 GMT
240
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Engagement::CommentCounter::Twitter do
4
+
5
+ if twitter_credentials_present?
6
+ let(:counter) { Engagement::CommentCounter::Twitter.new(twitter_credentials) }
7
+ let(:url) { 'http://gaslight.co/blog/angular-backed-svgs' }
8
+
9
+ it 'returns the number of comments for the given url', :vcr do
10
+ counter.comments_count(url).should == 15
11
+ end
12
+ else
13
+ puts 'Skipping Twitter test, please set the TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_OAUTH_TOKEN, TWITTER_OAUTH_TOKEN_SECRET environment variables.'
14
+ end
15
+ end
data/spec/spec_helper.rb CHANGED
@@ -6,11 +6,29 @@ def disqus_forum_api_key
6
6
  ENV['DISQUS_FORUM_API_KEY']
7
7
  end
8
8
 
9
+ def twitter_credentials
10
+ {
11
+ consumer_key: ENV['TWITTER_CONSUMER_KEY'],
12
+ consumer_secret: ENV['TWITTER_CONSUMER_SECRET'],
13
+ oauth_token: ENV['TWITTER_OAUTH_TOKEN'],
14
+ oauth_token_secret: ENV['TWITTER_OAUTH_TOKEN_SECRET'],
15
+ }
16
+ end
17
+
18
+ def twitter_credentials_present?
19
+ twitter_credentials[:consumer_key] &&
20
+ twitter_credentials[:consumer_secret] &&
21
+ twitter_credentials[:oauth_token] &&
22
+ twitter_credentials[:oauth_token_secret]
23
+ end
24
+
9
25
  VCR.configure do |c|
10
26
  c.cassette_library_dir = 'spec/cassettes'
11
27
  c.hook_into :webmock
12
28
  c.configure_rspec_metadata!
13
29
  c.filter_sensitive_data('<FILTERED>') { disqus_forum_api_key }
30
+ c.filter_sensitive_data('<TWITTER_CONSUMER_KEY>') { twitter_credentials[:consumer_key] }
31
+ c.filter_sensitive_data('<TWITTER_OAUTH_TOKEN>') { twitter_credentials[:oauth_token] }
14
32
  end
15
33
 
16
34
  RSpec.configure do |c|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engagement
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Guterl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-12 00:00:00.000000000 Z
11
+ date: 2013-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: twitter
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: A ruby gem for measuring the engagement of URLs on various social sites.
140
154
  email:
141
155
  - michael@diminishing.org
@@ -155,6 +169,7 @@ files:
155
169
  - lib/engagement/comment_counter/hacker_news.rb
156
170
  - lib/engagement/comment_counter/reddit.rb
157
171
  - lib/engagement/comment_counter/threaded.rb
172
+ - lib/engagement/comment_counter/twitter.rb
158
173
  - lib/engagement/version.rb
159
174
  - spec/cassettes/Engagement_CommentCounter_Disqus/when_we_don_t_own_the_url/returns_zero_when_we_don_t_own_the_url.yml
160
175
  - spec/cassettes/Engagement_CommentCounter_Disqus/when_we_own_the_url/returns_the_number_of_comments_for_the_given_url.yml
@@ -162,9 +177,11 @@ files:
162
177
  - spec/cassettes/Engagement_CommentCounter_Reddit/with_a_single_listing_returned/.yml
163
178
  - spec/cassettes/Engagement_CommentCounter_Reddit/with_multiple_listings_returned/.yml
164
179
  - spec/cassettes/Engagement_CommentCounter_Reddit/with_no_results/.yml
180
+ - spec/cassettes/Engagement_CommentCounter_Twitter/returns_the_number_of_comments_for_the_given_url.yml
165
181
  - spec/engagement/comment_counter/disqus_spec.rb
166
182
  - spec/engagement/comment_counter/hacker_news_spec.rb
167
183
  - spec/engagement/comment_counter/reddit_spec.rb
184
+ - spec/engagement/comment_counter/twitter_spec.rb
168
185
  - spec/engagement/comment_counter_spec.rb
169
186
  - spec/engagement/threaded_comment_counter_spec.rb
170
187
  - spec/spec_helper.rb
@@ -188,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
205
  version: '0'
189
206
  requirements: []
190
207
  rubyforge_project:
191
- rubygems_version: 2.0.3
208
+ rubygems_version: 2.0.6
192
209
  signing_key:
193
210
  specification_version: 4
194
211
  summary: Get comment counts from Reddit, HackerNews, and Disqus.
@@ -199,9 +216,11 @@ test_files:
199
216
  - spec/cassettes/Engagement_CommentCounter_Reddit/with_a_single_listing_returned/.yml
200
217
  - spec/cassettes/Engagement_CommentCounter_Reddit/with_multiple_listings_returned/.yml
201
218
  - spec/cassettes/Engagement_CommentCounter_Reddit/with_no_results/.yml
219
+ - spec/cassettes/Engagement_CommentCounter_Twitter/returns_the_number_of_comments_for_the_given_url.yml
202
220
  - spec/engagement/comment_counter/disqus_spec.rb
203
221
  - spec/engagement/comment_counter/hacker_news_spec.rb
204
222
  - spec/engagement/comment_counter/reddit_spec.rb
223
+ - spec/engagement/comment_counter/twitter_spec.rb
205
224
  - spec/engagement/comment_counter_spec.rb
206
225
  - spec/engagement/threaded_comment_counter_spec.rb
207
226
  - spec/spec_helper.rb