whit_li 0.0.1

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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in whit_li.gemspec
4
+ gemspec
5
+
6
+ group :dev do
7
+ gem 'rake'
8
+ end
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Sergey Efremov
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,56 @@
1
+ # WhitLi
2
+
3
+ Ruby wrapper for the [WhitLi API](http://developer.whit.li), provides an easy-to-use wrapper for LinkedIn's Oauth/XML APIs. Originally developed for [ResumUP](http://resumup.com)
4
+
5
+ ## Installation
6
+
7
+ Install via rubygems
8
+
9
+ [sudo] gem install whit_li
10
+
11
+ Or via bundler:
12
+
13
+ gem "whit_li"
14
+
15
+
16
+ ## Usage
17
+
18
+ ### Usage examples
19
+
20
+ require 'rubygems'
21
+ require 'whit_li'
22
+
23
+ client = WhitLi::Client.new "api_key_from_whitli"
24
+
25
+ # import token from facebook
26
+ client.import_token facebook_id, facebook_token
27
+
28
+ # populate data from facebook to whitli
29
+ client.populate facebook_id
30
+
31
+ # manual import data to whitly
32
+ client.import_generic request_body
33
+
34
+ # retrieve vectors for user by facebook_id and key. More about keys read at http://developer.whit.li/docs/read/How_to_Interpret_a_Whitli_Key
35
+ vectors = client.get facebook_id, key_id
36
+
37
+ # compare users in contexts. More about context read at http://developer.whit.li/docs/read/How_to_Interpret_a_Whitli_Key
38
+ vectors = client.compare facebook_id_1, facebook_id_2, context_id
39
+
40
+
41
+
42
+ ## TODO
43
+
44
+ * Add 146% Test coverage
45
+ * Add vector parser
46
+
47
+ ## Note on Patches/Pull Requests
48
+
49
+ * Fork the project.
50
+ * Make your feature addition or bug fix.
51
+ * Commit, do not mess with rakefile, version, or history.
52
+ * Send me a pull request. Bonus points for topic branches.
53
+
54
+ ## Copyright
55
+
56
+ See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/lib/whit_li.rb ADDED
@@ -0,0 +1,16 @@
1
+ module WhitLi
2
+ class << self
3
+ attr_accessor :token
4
+
5
+ def configure
6
+ yield self
7
+ true
8
+ end
9
+ end
10
+
11
+ autoload :Config, "whit_li/config"
12
+ autoload :Version, "whit_li/version"
13
+ autoload :Mash, "whit_li/mash"
14
+ autoload :Errors, "whit_li/errors"
15
+ autoload :Client, "whit_li/client"
16
+ end
@@ -0,0 +1,77 @@
1
+ require 'rest_client'
2
+
3
+ module WhitLi
4
+ class Client
5
+
6
+ attr_accessor :api_key
7
+
8
+ def initialize api_key
9
+ @api_key = api_key
10
+ end
11
+
12
+ def import_token fb_id, token
13
+ api_call "user/importToken", "post", { :uid => fb_id, :oauth_token => token }
14
+ end
15
+
16
+ def populate fb_id
17
+ api_call "user/populate", "get", { :uid => fb_id }
18
+ end
19
+
20
+ def import_generic request_body
21
+ api_call "user/importGeneric", "put", { :RequestBody => request_body }
22
+ end
23
+
24
+ def get fb_id, key_id, schema = "fb"
25
+ api_call "key/get", "get", { :uid => fb_id, :key_id => key_id, :schema => schema }
26
+ end
27
+
28
+ def compare fb_id_1, fb_id_2, context_id, schema = "fb"
29
+ api_call "key/compare", "get", { :uid1 => fb_id_1, :uid2 => fb_id_2, :context_id => context_id, :schema => schema }
30
+ end
31
+
32
+ private
33
+
34
+ def raise_response_error response
35
+ #pending
36
+ end
37
+
38
+ def api_call path, method = "get", params = {}
39
+ params = params.merge({:api_key => @api_key, :format => WhitLi::Config::FORMAT})
40
+ begin
41
+ case method
42
+ when "get"
43
+ response = RestClient.get [WhitLi::Config::API_URL, path].join("/"), { :params => params }
44
+ when "put"
45
+ response = RestClient.put [WhitLi::Config::API_URL, path].join("/"), params, {:accept => :json}
46
+ when "post"
47
+ response = RestClient.post [WhitLi::Config::API_URL, path].join("/"), params, {:accept => :json}
48
+ else
49
+ response = RestClient.send method, [WhitLi::Config::API_URL, path].join("/"), { :params => params }
50
+ end
51
+
52
+ rescue => e
53
+ raise_errors e.response
54
+ end
55
+ WhitLi::Mash.from_json response.body
56
+ end
57
+
58
+ def raise_errors response
59
+ case response.code.to_i
60
+ when 400
61
+ data = Mash.from_json(response.body)
62
+ raise WhitLi::Errors::GeneralError.new(data), "(#{data.status}): #{data.message}"
63
+ when 403
64
+ raise WhitLi::Errors::AccessDeniedError, "(#{response.code}): #{response.message}"
65
+ when 405, 401
66
+ raise WhitLi::Errors::UnauthorizedError, "(#{response.code}): #{response.message}"
67
+ when 404
68
+ raise WhitLi::Errors::NotFoundError, "(#{response.code}): #{response.message}"
69
+ when 500
70
+ raise WhitLi::Errors::InformWhitLiError, "WhitLi had an internal error. (#{response.code}): #{response.message}"
71
+ when 502..503
72
+ raise WhitLi::Errors::UnavailableError, "(#{response.code}): #{response.message}"
73
+ end
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,9 @@
1
+ module WhitLi
2
+ module Config
3
+ API_URL = "https://api.whit.li"
4
+ FORMAT = "json"
5
+ end
6
+ end
7
+
8
+
9
+
@@ -0,0 +1,19 @@
1
+ module WhitLi
2
+ module Errors
3
+ class WhitLiError < StandardError
4
+ attr_reader :data
5
+ def initialize(data)
6
+ @data = data
7
+ super
8
+ end
9
+ end
10
+
11
+ class UnauthorizedError < WhitLiError; end
12
+ class GeneralError < WhitLiError; end
13
+ class AccessDeniedError < WhitLiError; end
14
+
15
+ class UnavailableError < WhitLiError; end
16
+ class InformLinkedInError < WhitLiError; end
17
+ class NotFoundError < WhitLiError; end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ require 'hashie'
2
+ require 'multi_json'
3
+
4
+ module WhitLi
5
+ class Mash < ::Hashie::Mash
6
+ def self.from_json(json_string)
7
+ result_hash = ::MultiJson.decode(json_string)
8
+ new(result_hash)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module WhitLi
2
+ VERSION = "0.0.1"
3
+ end
data/whit_li.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "whit_li/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "whit_li"
7
+ s.version = WhitLi::VERSION
8
+ s.authors = ["Sergey Efremov"]
9
+ s.email = ["sergey.efremov@resumup.com"]
10
+ s.homepage = ""
11
+ s.summary = "Whit.li Ruby wrapper"
12
+ s.description = "Whit.li Ruby wrapper"
13
+
14
+ s.rubyforge_project = "whit_li"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ # s.add_runtime_dependency "rest-client"
24
+ s.add_dependency(%q<multi_json>, [">= 0"])
25
+ s.add_dependency(%q<hashie>, [">= 0"])
26
+ s.add_dependency(%q<rest-client>, [">= 0"])
27
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: whit_li
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sergey Efremov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: multi_json
16
+ requirement: &70303889089240 !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: *70303889089240
25
+ - !ruby/object:Gem::Dependency
26
+ name: hashie
27
+ requirement: &70303889088720 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70303889088720
36
+ - !ruby/object:Gem::Dependency
37
+ name: rest-client
38
+ requirement: &70303889088240 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70303889088240
47
+ description: Whit.li Ruby wrapper
48
+ email:
49
+ - sergey.efremov@resumup.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - .gitignore
55
+ - Gemfile
56
+ - LICENSE
57
+ - README.markdown
58
+ - Rakefile
59
+ - lib/whit_li.rb
60
+ - lib/whit_li/client.rb
61
+ - lib/whit_li/config.rb
62
+ - lib/whit_li/errors.rb
63
+ - lib/whit_li/mash.rb
64
+ - lib/whit_li/version.rb
65
+ - whit_li.gemspec
66
+ homepage: ''
67
+ licenses: []
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ segments:
79
+ - 0
80
+ hash: 2327776953409311588
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ segments:
88
+ - 0
89
+ hash: 2327776953409311588
90
+ requirements: []
91
+ rubyforge_project: whit_li
92
+ rubygems_version: 1.8.10
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: Whit.li Ruby wrapper
96
+ test_files: []