klout 2.0.0 → 3.0.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.
data/.gitignore ADDED
@@ -0,0 +1,55 @@
1
+ # rcov generated
2
+ coverage
3
+
4
+ # rdoc generated
5
+ rdoc
6
+
7
+ # yard generated
8
+ doc
9
+ .yardoc
10
+
11
+ # bundler
12
+ .bundle
13
+
14
+ # jeweler generated
15
+ pkg
16
+
17
+ # RVM generated
18
+ .rvmrc
19
+
20
+ *.gem
21
+ Gemfile.lock
22
+ .document
23
+
24
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
25
+ #
26
+ # * Create a file at ~/.gitignore
27
+ # * Include files you want ignored
28
+ # * Run: git config --global core.excludesfile ~/.gitignore
29
+ #
30
+ # After doing this, these files will be ignored in all your git projects,
31
+ # saving you from having to 'pollute' every project you touch with them
32
+ #
33
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
34
+ #
35
+ # For MacOS:
36
+ #
37
+ .DS_Store
38
+
39
+ # For TextMate
40
+ *.tmproj
41
+ tmtags
42
+
43
+ # For emacs:
44
+ #*~
45
+ #\#*
46
+ #.\#*
47
+
48
+ # For vim:
49
+ #*.swp
50
+
51
+ # For redcar:
52
+ #.redcar
53
+
54
+ # For rubinius:
55
+ #*.rbc
data/Gemfile CHANGED
@@ -1,13 +1,11 @@
1
1
  source "http://rubygems.org"
2
2
 
3
+ gem 'hashie'
3
4
  gem 'httparty'
4
5
  gem 'json'
5
6
 
6
- group :development do
7
- gem 'bundler', '> 1.0.0'
7
+ group :development, :test do
8
8
  gem 'fakeweb', '~> 1.3.0'
9
9
  gem 'guard-rspec', '~> 0.7.0'
10
- gem 'jeweler', '~> 1.8.3'
11
- gem 'simplecov', '~> 0.6.1'
12
10
  gem 'rspec', '~> 2.9.0'
13
11
  end
data/README.rdoc CHANGED
@@ -15,24 +15,15 @@ You will need a {Klout API Key}[http://developer.klout.com/member/register] in o
15
15
  Please refer to the {Klout API Documentation}[http://klout.com/s/developers/v2] for more information about the API, or follow the examples below:
16
16
 
17
17
  require 'klout'
18
- k = Klout::API.new('api_key')
19
-
20
- If you set the +ENV['KLOUT_API_KEY']+ environment variable you don't need to pass anything:
21
-
22
- k = Klout::API.new('api_key')
23
-
24
- Obtain the +klout_id+ for someone using their Twitter screen name or numerical Twitter ID:
25
-
26
- k.identity('screen_name')
27
- k.identity(12345678)
28
- k.identity('screen_name', :ks) # Query a different network.
29
-
30
- Once you have a +klout_id+ for someone, you can access their Klout score, influence and topics:
31
-
32
- k.users klout_id
33
- k.users klout_id, :score
34
- k.users klout_id, :influence
35
- k.users klout_id, :topics
18
+ Klout.api_key = ENV['KLOUT_API_KEY']
19
+ klout_id = Klout::Identity.find_by_screen_name('screen_name')
20
+
21
+ user = Klout::Identity.new(klout_id)
22
+ user.details
23
+ user.score
24
+ user.score.scoreDelta.dayChange
25
+ user.topics
26
+ user.influence
36
27
 
37
28
  And that's it!
38
29
 
@@ -42,10 +33,12 @@ The {Klout API Documentation}[http://klout.com/s/developers/v2] has great inform
42
33
 
43
34
  == Errors
44
35
 
45
- When an error is received an instance of <code>Klout::API::Error</code> will be returned so that you can rescue accordingly:
36
+ Errors are based on the HTTP response of the request, so that you can rescue accordingly:
46
37
 
47
- rescue Klout::API::Error > error
48
- ...
38
+ rescue Klout::ClientError > req
39
+ rescue Klout::BadRequest > req
40
+ rescue Klout::NotFound > req
41
+ rescue Klout::Unauthorized > req
49
42
 
50
43
  == Contributing to Klout
51
44
 
data/Rakefile CHANGED
@@ -1,32 +1,10 @@
1
- # encoding: utf-8
2
- require 'rubygems'
3
- require 'bundler'
4
-
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "klout"
18
- gem.homepage = "http://github.com/terra-firma/klout"
19
- gem.license = "MIT"
20
- gem.summary = %Q{A Ruby gem for interacting with the Klout API.}
21
- gem.description = %Q{Klout is a Ruby gem for interacting with the Klout API.}
22
- gem.email = "brian@terra-firma-design.com"
23
- gem.authors = ["Brian Getting"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
1
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
+ require "bundler/version"
3
+ require "rake/testtask"
4
+ require "./lib/klout"
28
5
  require 'rspec/core'
29
6
  require 'rspec/core/rake_task'
7
+
30
8
  RSpec::Core::RakeTask.new(:spec) do |spec|
31
9
  spec.pattern = FileList['spec/**/*_spec.rb']
32
10
  end
@@ -38,12 +16,14 @@ end
38
16
 
39
17
  task :default => :spec
40
18
 
41
- require 'rdoc/task'
42
- Rake::RDocTask.new do |rdoc|
43
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
19
+ desc "Build the gem"
20
+ task :build do
21
+ system "gem build klout.gemspec"
22
+ end
44
23
 
45
- rdoc.rdoc_dir = 'rdoc'
46
- rdoc.title = "klout #{version}"
47
- rdoc.rdoc_files.include('README*')
48
- rdoc.rdoc_files.include('lib/**/*.rb')
24
+ desc "Build and release the gem"
25
+ task :release => :build do
26
+ system "gem push klout-#{Klout::VERSION}.gem"
49
27
  end
28
+
29
+ task :default => :test
data/klout.gemspec CHANGED
@@ -1,76 +1,28 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ require 'bundler'
2
+ require 'bundler/version'
3
+
4
+ require File.expand_path('lib/klout/version')
5
5
 
6
6
  Gem::Specification.new do |s|
7
+ s.add_runtime_dependency('hashie')
8
+ s.add_runtime_dependency('httparty')
9
+ s.add_runtime_dependency('json')
10
+ s.add_development_dependency('fakeweb')
11
+ s.add_development_dependency('guard-rspec')
12
+ s.add_development_dependency('rspec')
7
13
  s.name = "klout"
8
- s.version = "2.0.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
14
  s.authors = ["Brian Getting"]
12
- s.date = "2012-04-11"
13
- s.description = "Klout is a Ruby gem for interacting with the Klout API."
14
- s.email = "brian@terra-firma-design.com"
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- ".rspec",
20
- ".travis.yml",
21
- "Gemfile",
22
- "Guardfile",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "klout.gemspec",
27
- "lib/klout.rb",
28
- "lib/klout/api.rb",
29
- "spec/klout/fixtures/identity.json",
30
- "spec/klout/fixtures/influence.json",
31
- "spec/klout/fixtures/score.json",
32
- "spec/klout/fixtures/topics.json",
33
- "spec/klout/fixtures/user.json",
34
- "spec/klout/klout_spec.rb",
35
- "spec/spec_helper.rb"
36
- ]
15
+ s.description = %q{Implements the complete functionality of the Klout REST API (v2+).}
16
+ s.email = ["brian@tatem.ae"]
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
18
+ s.extra_rdoc_files = ["README.rdoc"]
19
+ s.files = `git ls-files`.split("\n")
37
20
  s.homepage = "http://github.com/terra-firma/klout"
38
21
  s.licenses = ["MIT"]
39
22
  s.require_paths = ["lib"]
40
- s.rubygems_version = "1.8.10"
41
- s.summary = "A Ruby gem for interacting with the Klout API."
42
-
43
- if s.respond_to? :specification_version then
44
- s.specification_version = 3
45
-
46
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
- s.add_runtime_dependency(%q<httparty>, [">= 0"])
48
- s.add_runtime_dependency(%q<json>, [">= 0"])
49
- s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
50
- s.add_development_dependency(%q<fakeweb>, ["~> 1.3.0"])
51
- s.add_development_dependency(%q<guard-rspec>, ["~> 0.7.0"])
52
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
53
- s.add_development_dependency(%q<simplecov>, ["~> 0.6.1"])
54
- s.add_development_dependency(%q<rspec>, ["~> 2.9.0"])
55
- else
56
- s.add_dependency(%q<httparty>, [">= 0"])
57
- s.add_dependency(%q<json>, [">= 0"])
58
- s.add_dependency(%q<bundler>, ["> 1.0.0"])
59
- s.add_dependency(%q<fakeweb>, ["~> 1.3.0"])
60
- s.add_dependency(%q<guard-rspec>, ["~> 0.7.0"])
61
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
62
- s.add_dependency(%q<simplecov>, ["~> 0.6.1"])
63
- s.add_dependency(%q<rspec>, ["~> 2.9.0"])
64
- end
65
- else
66
- s.add_dependency(%q<httparty>, [">= 0"])
67
- s.add_dependency(%q<json>, [">= 0"])
68
- s.add_dependency(%q<bundler>, ["> 1.0.0"])
69
- s.add_dependency(%q<fakeweb>, ["~> 1.3.0"])
70
- s.add_dependency(%q<guard-rspec>, ["~> 0.7.0"])
71
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
72
- s.add_dependency(%q<simplecov>, ["~> 0.6.1"])
73
- s.add_dependency(%q<rspec>, ["~> 2.9.0"])
74
- end
75
- end
76
-
23
+ s.summary = %q{A library which implements the complete functionality of of the Klout REST API (v2+).}
24
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ s.version = Klout::VERSION
26
+ s.platform = Gem::Platform::RUBY
27
+ s.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if s.respond_to? :required_rubygems_version=
28
+ end
data/lib/klout.rb CHANGED
@@ -1,4 +1,96 @@
1
+ require 'cgi'
2
+ require 'uri'
1
3
  require 'httparty'
2
- require 'json'
4
+ require 'hashie'
5
+ Hash.send :include, Hashie::HashExtensions
3
6
 
4
- require 'klout/api'
7
+ libdir = File.dirname(__FILE__)
8
+ $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
9
+
10
+ require 'klout/version'
11
+ require 'klout/identity'
12
+ require 'klout/user'
13
+
14
+ module Klout
15
+ class << self
16
+ # Allow Klout.api_key = "..."
17
+ def api_key=(api_key)
18
+ Klout.api_key = api_key
19
+ end
20
+
21
+ def base_uri=(uri)
22
+ Klout.base_uri uri
23
+ end
24
+
25
+ # Allows the initializer to turn off actually communicating to the REST service for certain environments
26
+ # Requires fakeweb gem to be installed
27
+ def disable
28
+ FakeWeb.register_uri(:any, %r|#{Regexp.escape(Klout.base_uri)}|, :body => '{"Disabled":true}', :content_type => 'application/json; charset=utf-8')
29
+ end
30
+ end
31
+
32
+ # Represents a Klout API error and contains specific data about the error.
33
+ class KloutError < StandardError
34
+ attr_reader :data
35
+ def initialize(data)
36
+ @data = Hashie::Mash.new(data)
37
+ super "The Klout API responded with the following error - #{data}"
38
+ end
39
+ end
40
+
41
+ class ClientError < StandardError; end
42
+ class ServerError < StandardError; end
43
+ class BadRequest < KloutError; end
44
+ class Unauthorized < StandardError; end
45
+ class NotFound < ClientError; end
46
+ class Unavailable < StandardError; end
47
+
48
+ class Klout
49
+ include HTTParty
50
+
51
+ @@base_uri = "http://api.klout.com/v2/"
52
+ @@api_key = ""
53
+ headers({
54
+ 'User-Agent' => "klout-rest-#{VERSION}",
55
+ 'Content-Type' => 'application/json; charset=utf-8',
56
+ 'Accept-Encoding' => 'gzip, deflate'
57
+ })
58
+ base_uri @@base_uri
59
+
60
+ class << self
61
+ # Get the API key
62
+ def api_key; @@api_key end
63
+
64
+ # Set the API key
65
+ def api_key=(api_key)
66
+ return @@api_key unless api_key
67
+ @@api_key = api_key
68
+ end
69
+
70
+ # Get the Base URI.
71
+ def base_uri; @@base_uri end
72
+
73
+ def get(*args); handle_response super end
74
+ def post(*args); handle_response super end
75
+ def put(*args); handle_response super end
76
+ def delete(*args); handle_response super end
77
+
78
+ def handle_response(response) # :nodoc:
79
+ case response.code
80
+ when 400
81
+ raise BadRequest.new response.parsed_response
82
+ when 401
83
+ raise Unauthorized.new
84
+ when 404
85
+ raise NotFound.new
86
+ when 400...500
87
+ raise ClientError.new response.parsed_response
88
+ when 500...600
89
+ raise ServerError.new
90
+ else
91
+ response
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,24 @@
1
+ require 'klout'
2
+ require 'json'
3
+
4
+ module Klout
5
+ # Represents an identity
6
+ class Identity
7
+ class << self
8
+ def find_by_twitter_id(twitter_id)
9
+ response = Klout.get "/identity.json/tw/#{twitter_id}", :query => {key: Klout.api_key}
10
+ Hashie::Mash.new(response)
11
+ end
12
+
13
+ def find_by_screen_name(screen_name)
14
+ response = Klout.get "/identity.json/twitter", :query => {key: Klout.api_key, screenName: screen_name}
15
+ Hashie::Mash.new(response)
16
+ end
17
+
18
+ def find_by_klout_id(klout_id)
19
+ response = Klout.get "/identity.json/klout/#{klout_id}/tw", :query => {key: Klout.api_key}
20
+ Hashie::Mash.new(response)
21
+ end
22
+ end
23
+ end
24
+ end
data/lib/klout/user.rb ADDED
@@ -0,0 +1,44 @@
1
+ require 'klout'
2
+ require 'json'
3
+
4
+ module Klout
5
+ # Represents a user
6
+ class User
7
+ attr_reader :klout_id
8
+
9
+ def initialize(klout_id)
10
+ @klout_id = klout_id
11
+ end
12
+
13
+ def details
14
+ response = get
15
+ Hashie::Mash.new(response)
16
+ end
17
+
18
+ def score
19
+ response = get "score"
20
+ Hashie::Mash.new(response)
21
+ end
22
+
23
+ def topics
24
+ response = get "topics"
25
+ response.parsed_response
26
+ end
27
+
28
+ def influence
29
+ response = get "influence"
30
+ Hashie::Mash.new(response)
31
+ end
32
+
33
+ private
34
+
35
+ def get(action = nil)
36
+ Klout.get uri_for(action), :query => {key: Klout.api_key}
37
+ end
38
+
39
+ def uri_for(action = nil)
40
+ action = "/#{action}" if action
41
+ "/user.json/#{klout_id}#{action}"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module Klout
2
+ VERSION = "3.0.0" unless defined?(Klout::VERSION)
3
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'klout'
@@ -1,55 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Klout
4
- describe API do
5
- API_URL = "http://api.klout.com/v2/"
6
-
7
- describe "initializing" do
8
- it "requires an API key" do
9
- expect {Klout::API.new}.should raise_error(ArgumentError)
10
- end
11
- end
12
-
13
- describe "calling the API" do
14
- before(:each) do
15
- @k = Klout::API.new(@api_key)
16
- end
17
-
18
- describe "for a klout_id" do
19
- it "should accept a Twitter ID" do
20
- user_id = 500042487
21
- FakeWeb.register_uri(:get, "#{API_URL}identity.json/tw/#{user_id}?key=#{@api_key}", :body => File.read(File.expand_path('spec/klout/fixtures/identity.json')))
22
- @k.identity(user_id)['id'].should eq('54887627490056592')
23
- end
24
-
25
- it "should accept a Twitter screen name" do
26
- screen_name = 'dhh'
27
- FakeWeb.register_uri(:get, "#{API_URL}identity.json/twitter?screenName=#{screen_name}&key=#{@api_key}", :body => File.read(File.expand_path('spec/klout/fixtures/identity.json')))
28
- @k.identity(screen_name)['id'].should eq('54887627490056592')
29
- end
30
- end
31
-
32
- describe "for user" do
33
- it "should return profile information" do
34
- FakeWeb.register_uri(:get, "#{API_URL}user.json/#{@klout_id}?key=#{@api_key}", :body => File.read(File.expand_path('spec/klout/fixtures/user.json')))
35
- @k.user(@klout_id)['kloutId'].to_i.should eq(@klout_id)
36
- end
37
-
38
- it "should return score data" do
39
- FakeWeb.register_uri(:get, "#{API_URL}user.json/#{@klout_id}/score?key=#{@api_key}", :body => File.read(File.expand_path('spec/klout/fixtures/score.json')))
40
- @k.user(@klout_id, :score)['score'].should eq(18.162389755249023)
41
- end
42
-
43
- it "should return influence data" do
44
- FakeWeb.register_uri(:get, "#{API_URL}user.json/#{@klout_id}/influence?key=#{@api_key}", :body => File.read(File.expand_path('spec/klout/fixtures/influence.json')))
45
- @k.user(@klout_id, :influence)['myInfluencersCount'].to_i.should eq(15)
46
- end
47
-
48
- it "should return topics data" do
49
- FakeWeb.register_uri(:get, "#{API_URL}user.json/#{@klout_id}/topics?key=#{@api_key}", :body => File.read(File.expand_path('spec/klout/fixtures/topics.json')))
50
- @k.user(@klout_id, :topics).size.should eq(5)
51
- end
52
- end
53
- end
4
+ describe Identity do
5
+ # TODO: test each method
6
+ end
7
+
8
+ describe User do
9
+ # TODO: test each method
54
10
  end
55
11
  end
data/spec/spec_helper.rb CHANGED
@@ -6,7 +6,7 @@ FakeWeb.allow_net_connect = false
6
6
  RSpec.configure do |config|
7
7
  config.before(:each) do
8
8
  FakeWeb.clean_registry
9
- @api_key = '13adsf2dsf67adsf824aadfdsf12'
9
+ Klout.api_key = '13adsf2dsf67adsf824aadfdsf12'
10
10
  @klout_id = 635263
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klout
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-11 00:00:00.000000000 Z
12
+ date: 2012-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: httparty
16
- requirement: &70240588720160 !ruby/object:Gem::Requirement
15
+ name: hashie
16
+ requirement: &70312729874460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70240588720160
24
+ version_requirements: *70312729874460
25
25
  - !ruby/object:Gem::Dependency
26
- name: json
27
- requirement: &70240588719280 !ruby/object:Gem::Requirement
26
+ name: httparty
27
+ requirement: &70312729872100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,90 +32,72 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70240588719280
35
+ version_requirements: *70312729872100
36
36
  - !ruby/object:Gem::Dependency
37
- name: bundler
38
- requirement: &70240588717680 !ruby/object:Gem::Requirement
37
+ name: json
38
+ requirement: &70312729870320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ! '>'
41
+ - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
- version: 1.0.0
44
- type: :development
43
+ version: '0'
44
+ type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70240588717680
46
+ version_requirements: *70312729870320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: fakeweb
49
- requirement: &70240588716380 !ruby/object:Gem::Requirement
49
+ requirement: &70312730459220 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
- - - ~>
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3.0
54
+ version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70240588716380
57
+ version_requirements: *70312730459220
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-rspec
60
- requirement: &70240588715040 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ~>
64
- - !ruby/object:Gem::Version
65
- version: 0.7.0
66
- type: :development
67
- prerelease: false
68
- version_requirements: *70240588715040
69
- - !ruby/object:Gem::Dependency
70
- name: jeweler
71
- requirement: &70240588714220 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- version: 1.8.3
77
- type: :development
78
- prerelease: false
79
- version_requirements: *70240588714220
80
- - !ruby/object:Gem::Dependency
81
- name: simplecov
82
- requirement: &70240588707800 !ruby/object:Gem::Requirement
60
+ requirement: &70312730458800 !ruby/object:Gem::Requirement
83
61
  none: false
84
62
  requirements:
85
- - - ~>
63
+ - - ! '>='
86
64
  - !ruby/object:Gem::Version
87
- version: 0.6.1
65
+ version: '0'
88
66
  type: :development
89
67
  prerelease: false
90
- version_requirements: *70240588707800
68
+ version_requirements: *70312730458800
91
69
  - !ruby/object:Gem::Dependency
92
70
  name: rspec
93
- requirement: &70240588707100 !ruby/object:Gem::Requirement
71
+ requirement: &70312730458380 !ruby/object:Gem::Requirement
94
72
  none: false
95
73
  requirements:
96
- - - ~>
74
+ - - ! '>='
97
75
  - !ruby/object:Gem::Version
98
- version: 2.9.0
76
+ version: '0'
99
77
  type: :development
100
78
  prerelease: false
101
- version_requirements: *70240588707100
102
- description: Klout is a Ruby gem for interacting with the Klout API.
103
- email: brian@terra-firma-design.com
79
+ version_requirements: *70312730458380
80
+ description: Implements the complete functionality of the Klout REST API (v2+).
81
+ email:
82
+ - brian@tatem.ae
104
83
  executables: []
105
84
  extensions: []
106
85
  extra_rdoc_files:
107
86
  - README.rdoc
108
87
  files:
88
+ - .gitignore
109
89
  - .rspec
110
90
  - .travis.yml
111
91
  - Gemfile
112
92
  - Guardfile
113
93
  - README.rdoc
114
94
  - Rakefile
115
- - VERSION
116
95
  - klout.gemspec
117
96
  - lib/klout.rb
118
- - lib/klout/api.rb
97
+ - lib/klout/identity.rb
98
+ - lib/klout/user.rb
99
+ - lib/klout/version.rb
100
+ - rails/init.rb
119
101
  - spec/klout/fixtures/identity.json
120
102
  - spec/klout/fixtures/influence.json
121
103
  - spec/klout/fixtures/score.json
@@ -136,19 +118,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
118
  - - ! '>='
137
119
  - !ruby/object:Gem::Version
138
120
  version: '0'
139
- segments:
140
- - 0
141
- hash: 1810060536700847596
142
121
  required_rubygems_version: !ruby/object:Gem::Requirement
143
122
  none: false
144
123
  requirements:
145
124
  - - ! '>='
146
125
  - !ruby/object:Gem::Version
147
- version: '0'
126
+ version: 1.3.6
148
127
  requirements: []
149
128
  rubyforge_project:
150
129
  rubygems_version: 1.8.10
151
130
  signing_key:
152
131
  specification_version: 3
153
- summary: A Ruby gem for interacting with the Klout API.
154
- test_files: []
132
+ summary: A library which implements the complete functionality of of the Klout REST
133
+ API (v2+).
134
+ test_files:
135
+ - spec/klout/fixtures/identity.json
136
+ - spec/klout/fixtures/influence.json
137
+ - spec/klout/fixtures/score.json
138
+ - spec/klout/fixtures/topics.json
139
+ - spec/klout/fixtures/user.json
140
+ - spec/klout/klout_spec.rb
141
+ - spec/spec_helper.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 2.0.0
data/lib/klout/api.rb DELETED
@@ -1,69 +0,0 @@
1
- module Klout
2
- class API
3
- include HTTParty
4
- format :plain
5
- default_timeout 30
6
-
7
- attr_accessor :api_key, :timeout
8
-
9
- # == Usage
10
- #
11
- # Initialize with your Klout API key:
12
- #
13
- # k = Klout::API.new('api-key')
14
- #
15
- # Or you can set the +ENV['KLOUT_API_KEY']+ environment variable:
16
- #
17
- # k = Klout::API.new
18
- #
19
- def initialize(api_key = nil)
20
- @api_key = api_key || ENV['KLOUT_API_KEY'] || raise(ArgumentError)
21
- end
22
-
23
- def base_api_url # :nodoc:
24
- "http://api.klout.com/v2"
25
- end
26
-
27
- # === Identity
28
- #
29
- # Use the +identity+ method to get a user's +klout_id+.
30
- # Pass either a numerical Twitter ID (Integer) or a Twitter screen name (String)
31
- #
32
- # k.identity(500042487)
33
- # k.identity('dhh')
34
- #
35
- # You can also select a different network:
36
- #
37
- # k.identity('dhh', :ks)
38
- #
39
- def identity(id, network = :tw)
40
- path = id.is_a?(Integer) ? "#{network}/#{id}?key=#{@api_key}" : "twitter?screenName=#{id}&key=#{@api_key}"
41
- call("/identity.json/#{path}")
42
- end
43
-
44
- # === User
45
- #
46
- # Use the +user+ method to get information about a user. Pass in a trait
47
- # option to get score, influence and topics data:
48
- #
49
- # k.user(635263)
50
- # k.user(635263, :influence)
51
- # k.user(635263, :score)
52
- # k.user(635263, :topics)
53
- #
54
- def user(id, trait = nil)
55
- lookup = trait.nil? ? '' : "/#{trait.to_s}"
56
- call("/user.json/#{id}#{lookup}?key=#{@api_key}")
57
- end
58
-
59
- protected
60
-
61
- def call(endpoint) # :nodoc:
62
- response = self.class.get(base_api_url + endpoint)
63
- response.code.to_i == 200 ? JSON.parse(response.body) : raise(API::Error.new("HTTP Response Code: #{response.code}"))
64
- end
65
-
66
- class Error < StandardError
67
- end
68
- end
69
- end