Module: ShareCounter
- Defined in:
- lib/share_counter.rb,
lib/share_counter/version.rb
Constant Summary collapse
- VERSION =
"0.1.4"
Class Method Summary collapse
- .all(url) ⇒ Object
- .facebook(url) ⇒ Object
- .linkedin(url) ⇒ Object
- .pinterest(url) ⇒ Object
- .reddit(url) ⇒ Object
- .selected(url, selections) ⇒ Object
- .seomoz(url, access_id, secret) ⇒ Object
- .stumbleupon(url) ⇒ Object
- .supported_networks ⇒ Object
- .twitter(url) ⇒ Object
Class Method Details
.all(url) ⇒ Object
55 56 57 |
# File 'lib/share_counter.rb', line 55 def self.all url supported_networks.inject({}) { |r, c| r[c.to_sym] = ShareCounter.send(c, url); r } end |
.facebook(url) ⇒ Object
12 13 14 15 |
# File 'lib/share_counter.rb', line 12 def self.facebook url html = make_request "https://api.facebook.com/method/fql.query", format: "json", query: "select commentsbox_count, click_count, total_count, comment_count, like_count, share_count from link_stat where url=\"#{url}\"" return JSON.parse(html, symbolize_names: true)[0] end |
.linkedin(url) ⇒ Object
28 29 30 31 |
# File 'lib/share_counter.rb', line 28 def self.linkedin url html = make_request "https://www.linkedin.com/countserv/count/share", url: url, callback: "IN.Tags.Share.handleCount" return JSON.parse(html)['count'] end |
.pinterest(url) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/share_counter.rb', line 38 def self.pinterest url html = make_request "http://widgets.pinterest.com/v1/urls/count.json", url: url, source: 6 html.gsub! 'receiveCount(', '' html.gsub! ')', '' return JSON.parse(html)['count'] end |
.reddit(url) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/share_counter.rb', line 17 def self.reddit url html = make_request "http://www.reddit.com/api/info.json", url: url j = JSON.parse(html) unless j['data']['children'].empty? return j['data']['children'][0]['data']['score'] else return 0 end end |
.selected(url, selections) ⇒ Object
59 60 61 62 |
# File 'lib/share_counter.rb', line 59 def self.selected url, selections selections.map{|name| name.downcase}.select{|name| supported_networks.include? name.to_s}.inject({}) { |r, c| r[c.to_sym] = ShareCounter.send(c, url); r } end |
.seomoz(url, access_id, secret) ⇒ Object
45 46 47 48 49 |
# File 'lib/share_counter.rb', line 45 def self.seomoz url, access_id, secret client = Linkscape::Client.new(accessID: access_id, secret: secret) response = client.urlMetrics(get_host_without_www(url), cols: :all) { mozrank: response.data['source'][:mozrank], page_authority: response.data['source'][:page_authority], domain_authority: response.data['source'][:domain_authority]} end |
.stumbleupon(url) ⇒ Object
33 34 35 36 |
# File 'lib/share_counter.rb', line 33 def self.stumbleupon url html = make_request "http://www.stumbleupon.com/services/1.01/badge.getinfo", url: url return JSON.parse(html)['result']['views'] end |
.supported_networks ⇒ Object
51 52 53 |
# File 'lib/share_counter.rb', line 51 def self.supported_networks %w(reddit twitter facebook linkedin stumbleupon pinterest) end |
.twitter(url) ⇒ Object
7 8 9 10 |
# File 'lib/share_counter.rb', line 7 def self.twitter url html = make_request "http://urls.api.twitter.com/1/urls/count.json", url: url return JSON.parse(html)['count'] end |