Module: ShareCounter

Defined in:
lib/share_counter.rb,
lib/share_counter/version.rb

Constant Summary collapse

VERSION =
"0.1.4"

Class Method Summary collapse

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_networksObject



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