social_count 0.0.2

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.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ spec/support/credentials.rb
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in social_count.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Isaac Betesh
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # SocialCount
2
+
3
+ This gem is an incredibly ligh-weight wrapper for finding how many facebook friends and twitter followers someone has.
4
+
5
+ ## Installation
6
+
7
+ gem 'social_count' # In your Gemfile
8
+
9
+ $ gem install social_count # Install locally
10
+
11
+ ## Usage
12
+
13
+ 1) Configure your credentials:
14
+
15
+ # Instantiate the credentials object
16
+ SocialCount.credentials = SocialCount::Credentials.new
17
+
18
+ # Then set the following values
19
+ SocialCount.credentials.twitter_consumer_key
20
+ SocialCount.credentials.twitter_consumer_secret
21
+ SocialCount.credentials.twitter_oauth_token
22
+ SocialCount.credentials.twitter_oauth_token_secret
23
+ SocialCount.credentials.fb_app_id
24
+ SocialCount.credentials.fb_app_secret
25
+
26
+ 2) Get the Facebook follower count of any business page:
27
+
28
+ SocialCount::FacebookUser.new('zuck').follower_count # Find out how many people are following Mark Zuckerberg
29
+ SocialCount::FacebookUser.new('zuck').friend_count # nil -- Mark has a business page because he's so famous
30
+
31
+ 3) Get the Facebook friend count of any regular facebook user:
32
+
33
+ SocialCount::FacebookUser.new('jose.valim').friend_count # Find out how many friends Jose Valim has -- I wish he were as famous as Mark
34
+ SocialCount::FacebookUser.new('jose.valim').follower_count # nil
35
+ # I think there are more Devise users than Facebook users in China. As least that's on place where Jose is more famous than Mark
36
+
37
+
38
+ 4) Get the Twitter follower count of any user:
39
+
40
+ SocialMedia::TwitterUser.new('tsa').follower_count # Find out how many people are following the Transportation security Administration
41
+
42
+ 5) Check if someone is on Facebook:
43
+
44
+ orwell = SocialCount::FacebookUser.new('george_orwell')
45
+ orwell.valid? # False -- Not everyone is cool enough to be one Facebook
46
+ orwell.friend_count # nil
47
+
48
+ 6) Check if someone is on Twitter:
49
+
50
+ nsa = SocialCount::TwitterUser.new('no_such_agency')
51
+ nsa.valid? # False -- Nobody can follow the NSA
52
+ nsa.follower_count # nil
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,23 @@
1
+ require 'net/http'
2
+
3
+ module SocialCount
4
+ class ApiBase
5
+ attr_reader :name
6
+ def initialize(name)
7
+ @name = name
8
+ end
9
+ class << self
10
+ def get_http_response(uri)
11
+ uri = URI.escape(uri)
12
+ url = URI.parse(uri)
13
+ http = Net::HTTP.new(url.host, url.port)
14
+ http.use_ssl = true
15
+ http.request(Net::HTTP::Get.new(uri))
16
+ end
17
+ private
18
+ def credentials
19
+ @credentials ||= SocialCount.credentials
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,47 @@
1
+ require 'fb_graph'
2
+ require 'social_count/api_base'
3
+
4
+ module SocialCount
5
+ class FacebookUser < ApiBase
6
+ DOMAIN = "https://graph.facebook.com"
7
+ def valid?
8
+ return @valid unless @valid.nil?
9
+ @valid = self.class.get_http_response("#{DOMAIN}/#{name}").is_a?(Net::HTTPOK)
10
+ end
11
+ def user
12
+ return unless valid?
13
+ @user ||= FbGraph::User.fetch(name, :access_token => URI.escape(self.class.access_token))
14
+ end
15
+ def id
16
+ return unless valid?
17
+ @id ||= user.identifier.to_i
18
+ end
19
+ def friend_count
20
+ run_query(:friend)
21
+ end
22
+ def follower_count
23
+ count = run_query(:subscriber)
24
+ count.zero? ? nil : count
25
+ end
26
+ private
27
+ def run_query(column)
28
+ return unless valid?
29
+ url = "#{DOMAIN}/fql?q=#{query(column)}"
30
+ response = self.class.get_http_response(url)
31
+ JSON.parse(response.body)["data"][0]["#{column}_count"]
32
+ end
33
+ def query(column)
34
+ "SELECT #{column}_count FROM user WHERE uid=#{id}"
35
+ end
36
+
37
+ class << self
38
+ def access_token
39
+ @access_token ||= get_http_response(access_url).body.split("access_token=")[1]
40
+ end
41
+ private
42
+ def access_url
43
+ @access_url ||= "#{DOMAIN}/oauth/access_token?client_id=#{credentials.fb_app_id}&client_secret=#{credentials.fb_app_secret}&grant_type=client_credentials"
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,37 @@
1
+ require 'twitter_oauth'
2
+ require 'social_count/api_base'
3
+
4
+ module SocialCount
5
+ class TwitterUser < ApiBase
6
+ API_DOMAIN = "https://api.twitter.com"
7
+ USER_DOMAIN = "https://twitter.com"
8
+ CONSUMER_OPTIONS = { :site => API_DOMAIN, :scheme => :header }
9
+
10
+ def valid?
11
+ return @valid unless @valid.nil?
12
+ @valid = self.class.get_http_response("#{USER_DOMAIN}/#{name}").is_a?(Net::HTTPOK)
13
+ end
14
+
15
+ def follower_count
16
+ response = self.class.access_token.request(:get, follower_count_url)
17
+ JSON.parse(response.body)["followers_count"]
18
+ end
19
+ private
20
+ def follower_count_url
21
+ @follower_count_url ||= "#{API_DOMAIN}/1.1/users/show.json?screen_name=#{URI.escape(name)}"
22
+ end
23
+
24
+ class << self
25
+ def access_token
26
+ @access_token ||= OAuth::AccessToken.from_hash(consumer, token_hash)
27
+ end
28
+ private
29
+ def consumer
30
+ @consumer ||= OAuth::Consumer.new(credentials.twitter_consumer_key, credentials.twitter_consumer_secret, CONSUMER_OPTIONS)
31
+ end
32
+ def token_hash
33
+ @token_hash ||= { :oauth_token => credentials.twitter_oauth_token, :oauth_token_secret => credentials.twitter_oauth_token_secret }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module SocialCount
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,26 @@
1
+ require "social_count/version"
2
+ require "social_count/facebook_user"
3
+ require "social_count/twitter_user"
4
+
5
+ module SocialCount
6
+ REQUIRED_CREDENTIALS = [:twitter_consumer_key, :twitter_consumer_secret, :twitter_oauth_token, :twitter_oauth_token_secret, :fb_app_id, :fb_app_secret]
7
+ class Error < StandardError; end
8
+ class Credentials
9
+ attr_reader *REQUIRED_CREDENTIALS
10
+ end
11
+ class << self
12
+ def credentials
13
+ raise SocialCount::Error, "You must set SocialCount.credentials before making an API call" if @credentials.nil?
14
+ @credentials
15
+ end
16
+
17
+ def credentials=(credentials)
18
+ validate_credentials(credentials)
19
+ @credentials = credentials
20
+ end
21
+ private
22
+ def validate_credentials(_credentials)
23
+ REQUIRED_CREDENTIALS.each { |attr| raise SocialCount::Error, "SocialCount.credentials must respond to #{attr}" unless _credentials.respond_to?(attr.to_s) }
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'social_count/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "social_count"
8
+ spec.version = SocialCount::VERSION
9
+ spec.authors = ["Isaac Betesh"]
10
+ spec.email = ["iybetesh@gmail.com"]
11
+ spec.description = %q{Want to know how popular you are? This gem helps you look up how many Facebook friends and Twitter followers you have.}
12
+ spec.summary = `cat README.md`
13
+ spec.homepage = "https://github.com/betesh/social_count"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "fb_graph"
22
+ spec.add_dependency "twitter_oauth", '~> 0.4.94'
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec"
27
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ module SocialCount
4
+ class << self
5
+ def reset_credentials
6
+ @credentials = nil
7
+ end
8
+ end
9
+ end
10
+
11
+
12
+ def credentials_without(attr)
13
+ SocialCount::REQUIRED_CREDENTIALS.dup.tap { |a| a.delete(attr) }
14
+ end
15
+
16
+ describe SocialCount::Credentials do
17
+ SocialCount::REQUIRED_CREDENTIALS.each do |credential|
18
+ it "should require credentials to have a #{credential}" do
19
+ credentials = Class.new do attr_reader *credentials_without(credential); end
20
+ expect{SocialCount.credentials = credentials.new}.to raise_error(SocialCount::Error, "SocialCount.credentials must respond to #{credential}")
21
+ end
22
+ end
23
+
24
+ it "shouldn't change state when an exception is raised" do
25
+ credentials = Class.new do attr_reader *credentials_without(:twitter_consumer_secret); end
26
+ SocialCount.reset_credentials
27
+ expect{SocialCount.credentials = credentials.new}.to raise_error(SocialCount::Error, "SocialCount.credentials must respond to twitter_consumer_secret")
28
+ expect(SocialCount.instance_variable_get("@credentials")).to be_nil
29
+ end
30
+
31
+ it "shouldn't allow access untill credentials have been set" do
32
+ SocialCount.reset_credentials
33
+ expect{SocialCount.credentials}.to raise_error(SocialCount::Error, "You must set SocialCount.credentials before making an API call")
34
+ end
35
+
36
+ it "can be a SocialCount::Credentials instance" do
37
+ expect{SocialCount.credentials = SocialCount::Credentials.new}.to_not raise_error
38
+ end
39
+ end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe SocialCount::FacebookUser do
4
+ before(:all) do
5
+ SocialCount.credentials = TestCredentials::INSTANCE
6
+ end
7
+
8
+ def username
9
+ @username ||= 'zuck'
10
+ end
11
+ def access_token_did_not_match_specified_format
12
+ @access_token_did_not_match_specified_format ||= "Facebook Access Token #{@access_token} did not match specified format"
13
+ end
14
+ describe "class methods" do
15
+ it "should receive an access token" do
16
+ @access_token = SocialCount::FacebookUser.access_token.split("|")
17
+ @access_token.count.should eq(2), access_token_did_not_match_specified_format
18
+ @access_token[0].should eq(SocialCount.credentials.fb_app_id), access_token_did_not_match_specified_format
19
+ @access_token[1].should match(/[_A-Za-z0-9]{27}/), access_token_did_not_match_specified_format
20
+ end
21
+ end
22
+ describe "user that supports following" do
23
+ before(:all) do
24
+ @facebook = SocialCount::FacebookUser.new(username)
25
+ end
26
+ it "should be valid" do
27
+ @facebook.valid?.should be_true
28
+ end
29
+ it "should get user data" do
30
+ user = @facebook.user
31
+ user.username.should eq(username)
32
+ user.first_name.should eq('Mark')
33
+ user.last_name.should eq('Zuckerberg')
34
+ user.link.should eq("http://www.facebook.com/#{username}")
35
+ user.gender.should eq('male')
36
+ end
37
+ it "should get the user's id" do
38
+ @facebook.id.should eq(4)
39
+ end
40
+ it "should get the user's follower count" do
41
+ count = @facebook.follower_count
42
+ count.should be_a(Fixnum)
43
+ count.should eq(19528198)
44
+ end
45
+ it "should handle friend_count gracefully" do
46
+ @facebook.friend_count.should be_nil
47
+ end
48
+ end
49
+ describe "user that supports friending" do
50
+ before(:all) do
51
+ @facebook = SocialCount::FacebookUser.new('jose.valim')
52
+ end
53
+ it "should get the user's friend count" do
54
+ count = @facebook.friend_count
55
+ count.should be_a(Fixnum)
56
+ count.should eq(568)
57
+ end
58
+ it "should handle friend_count gracefully" do
59
+ @facebook.follower_count.should be_nil
60
+ end
61
+ end
62
+ describe "non-existent user" do
63
+ def non_existent_user
64
+ SocialCount::FacebookUser.new("george_orwell")
65
+ end
66
+ it "should fail gracefully" do
67
+ expect{non_existent_user}.to_not raise_error
68
+ end
69
+ it "should be invalid" do
70
+ non_existent_user.valid?.should be_false
71
+ end
72
+ it "should have nil user" do
73
+ non_existent_user.user.should be_nil
74
+ end
75
+ it "should have nil id" do
76
+ non_existent_user.id.should be_nil
77
+ end
78
+ it "should have nil friend_count" do
79
+ non_existent_user.friend_count.should be_nil
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe SocialCount::TwitterUser do
4
+ before(:all) do
5
+ SocialCount.credentials = TestCredentials::INSTANCE
6
+ end
7
+ def username
8
+ @username ||= 'tsa'
9
+ end
10
+
11
+ describe "existent user" do
12
+ before(:each) do
13
+ @twitter = SocialCount::TwitterUser.new(username)
14
+ end
15
+
16
+ it "should be valid" do
17
+ @twitter.valid?.should be_true
18
+ end
19
+
20
+ it "should get the follow count" do
21
+ @twitter.follower_count.should eq(12171)
22
+ end
23
+ end
24
+
25
+ describe "non-existent user" do
26
+ def non_existent_user
27
+ SocialCount::TwitterUser.new('no_such_agency')
28
+ end
29
+
30
+ it "should fail gracefully" do
31
+ expect{non_existent_user}.to_not raise_error
32
+ end
33
+
34
+ it "should be invalid" do
35
+ non_existent_user.valid?.should be_false
36
+ end
37
+
38
+ it "should have nil follower_count" do
39
+ non_existent_user.follower_count.should be_nil
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,7 @@
1
+ require 'social_count'
2
+
3
+ Dir[File.expand_path("#{__FILE__}/../support/*.rb")].each {|f| require f }
4
+
5
+ RSpec.configure do |config|
6
+ config.order = "random"
7
+ end
@@ -0,0 +1,11 @@
1
+ class TestCredentials
2
+ INSTANCE = TestCredentials.new(
3
+ # Configure these values before running specs
4
+ 'MY_TWITTER_CONSUMER_KEY',
5
+ 'MY_TWITTER_CONSUMER_SECRET',
6
+ 'MY_TWITTER_OAUTH_TOKEN',
7
+ 'MY_TWITTER_OAUTH_TOKEN_SECRET',
8
+ 'MY_FACEBOOK_APP_ID',
9
+ 'MY_FACEBOOK_APP_SECRET'
10
+ )
11
+ end
@@ -0,0 +1,12 @@
1
+ class TestCredentials
2
+ attr_reader :twitter_consumer_key, :twitter_consumer_secret, :twitter_oauth_token, :twitter_oauth_token_secret, :fb_app_id, :fb_app_secret
3
+ def initialize twitter_consumer_key, twitter_consumer_secret, twitter_oauth_token, twitter_oauth_token_secret, fb_app_id, fb_app_secret
4
+ @twitter_consumer_key, @twitter_consumer_secret, @twitter_oauth_token, @twitter_oauth_token_secret, @fb_app_id, @fb_app_secret = twitter_consumer_key, twitter_consumer_secret, twitter_oauth_token, twitter_oauth_token_secret, fb_app_id, fb_app_secret
5
+ end
6
+ credentials_file = File.expand_path("#{__FILE__}/../credentials.rb")
7
+ unless File.exists?(credentials_file)
8
+ puts "Please configure your Facebook and Twitter application credentials by copying #{credentials_file}.example to #{credentials_file} and configuring the required values there appropriately."
9
+ puts "Then comment out the 'exit' line in #{File.expand_path(__FILE__)} before running rspec."
10
+ exit
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: social_count
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Isaac Betesh
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: fb_graph
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: twitter_oauth
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.4.94
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.4.94
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.3'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Want to know how popular you are? This gem helps you look up how many
95
+ Facebook friends and Twitter followers you have.
96
+ email:
97
+ - iybetesh@gmail.com
98
+ executables: []
99
+ extensions: []
100
+ extra_rdoc_files: []
101
+ files:
102
+ - .gitignore
103
+ - Gemfile
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - lib/social_count.rb
108
+ - lib/social_count/api_base.rb
109
+ - lib/social_count/facebook_user.rb
110
+ - lib/social_count/twitter_user.rb
111
+ - lib/social_count/version.rb
112
+ - social_count.gemspec
113
+ - spec/social_count/credentials_spec.rb
114
+ - spec/social_count/facebook_user_spec.rb
115
+ - spec/social_count/twitter_user_spec.rb
116
+ - spec/spec_helper.rb
117
+ - spec/support/credentials.rb.example
118
+ - spec/support/test_credentials.rb
119
+ homepage: https://github.com/betesh/social_count
120
+ licenses:
121
+ - MIT
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ segments:
133
+ - 0
134
+ hash: 1024359385876280514
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ segments:
142
+ - 0
143
+ hash: 1024359385876280514
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 1.8.25
147
+ signing_key:
148
+ specification_version: 3
149
+ summary: ! '# SocialCount This gem is an incredibly ligh-weight wrapper for finding
150
+ how many facebook friends and twitter followers someone has. ## Installation gem
151
+ ''social_count'' # In your Gemfile $ gem install social_count # Install locally ##
152
+ Usage 1) Configure your credentials: # Instantiate the credentials object SocialCount.credentials
153
+ = SocialCount::Credentials.new # Then set the following values SocialCount.credentials.twitter_consumer_key
154
+ SocialCount.credentials.twitter_consumer_secret SocialCount.credentials.twitter_oauth_token
155
+ SocialCount.credentials.twitter_oauth_token_secret SocialCount.credentials.fb_app_id
156
+ SocialCount.credentials.fb_app_secret 2) Get the Facebook follower count of any
157
+ business page: SocialCount::FacebookUser.new(''zuck'').follower_count # Find out
158
+ how many people are following Mark Zuckerberg SocialCount::FacebookUser.new(''zuck'').friend_count
159
+ # nil -- Mark has a business page because he''s so famous 3) Get the Facebook friend
160
+ count of any regular facebook user: SocialCount::FacebookUser.new(''jose.valim'').friend_count
161
+ # Find out how many friends Jose Valim has -- I wish he were as famous as Mark SocialCount::FacebookUser.new(''jose.valim'').follower_count
162
+ # nil # I think there are more Devise users than Facebook users in China. As least
163
+ that''s on place where Jose is more famous than Mark 4) Get the Twitter follower
164
+ count of any user: SocialMedia::TwitterUser.new(''tsa'').follower_count # Find
165
+ out how many people are following the Transportation security Administration 5)
166
+ Check if someone is on Facebook: orwell = SocialCount::FacebookUser.new(''george_orwell'')
167
+ orwell.valid? # False -- Not everyone is cool enough to be one Facebook orwell.friend_count
168
+ # nil 6) Check if someone is on Twitter: nsa = SocialCount::TwitterUser.new(''no_such_agency'')
169
+ nsa.valid? # False -- Nobody can follow the NSA nsa.follower_count # nil'
170
+ test_files:
171
+ - spec/social_count/credentials_spec.rb
172
+ - spec/social_count/facebook_user_spec.rb
173
+ - spec/social_count/twitter_user_spec.rb
174
+ - spec/spec_helper.rb
175
+ - spec/support/credentials.rb.example
176
+ - spec/support/test_credentials.rb