engagement 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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