rapleaf_api 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +8 -0
- data/README.md +51 -0
- data/lib/api/api.rb +85 -0
- data/lib/api/errors.rb +26 -0
- data/lib/api/graph.rb +17 -0
- data/lib/api/person.rb +19 -0
- data/lib/rapleaf_api.rb +29 -0
- metadata +75 -0
data/Manifest.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# rapleaf_api
|
2
|
+
|
3
|
+
Getting Started
|
4
|
+
---------------
|
5
|
+
|
6
|
+
You need to first get an API key found here:
|
7
|
+
|
8
|
+
[http://www.rapleaf.com/developer/](http://www.rapleaf.com/developer/)
|
9
|
+
|
10
|
+
|
11
|
+
Installation
|
12
|
+
------------
|
13
|
+
|
14
|
+
sudo gem install rapleaf_api
|
15
|
+
|
16
|
+
Usage
|
17
|
+
-----
|
18
|
+
|
19
|
+
require 'rubygems'
|
20
|
+
require 'rapleaf_api'
|
21
|
+
|
22
|
+
rapAPI = RapleafApi::Api.new("your api key")
|
23
|
+
|
24
|
+
### Person API
|
25
|
+
|
26
|
+
#by email
|
27
|
+
person = rapAPI.query({:type => :person, {:email => "email"}})
|
28
|
+
|
29
|
+
#by md5 hash of email
|
30
|
+
person = rapAPI.query({:type => :person, {:hash => RapleafApi::MD5, :id => "md5 hash of email"}})
|
31
|
+
|
32
|
+
#by site id
|
33
|
+
person = rapAPI.query({:type => :person, {:site => RapleafApi::TWITTER, :id => "twitter username"}})
|
34
|
+
|
35
|
+
### Graph API
|
36
|
+
|
37
|
+
#by email (note this query will only work if you have an email set stored with Rapleaf)
|
38
|
+
friendList = rapAPI.query({:type => :graph, {:id => "email address"}})
|
39
|
+
|
40
|
+
#by email, return Rapleaf IDs instead of scoped emails
|
41
|
+
friendList = rapAPI.query({:type => :graph, {:id => "email address", :return_rapid => true}})
|
42
|
+
|
43
|
+
#by Rapleaf ID, this will return a list of Rapleaf IDs
|
44
|
+
friendList = rapAPI.query({:type => :graph, {:id => "rapleaf id", :by_rapid => true}})
|
45
|
+
|
46
|
+
Authors
|
47
|
+
-------
|
48
|
+
|
49
|
+
* Adam Coffman :: coffman.adam@gmail.com
|
50
|
+
* Brent Beer :: brentbeer@gmail.com
|
51
|
+
* Mark Sands :: marksands07@gmail.com
|
data/lib/api/api.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
module RapleafApi
|
2
|
+
class Api
|
3
|
+
|
4
|
+
def initialize(api_key)
|
5
|
+
@API_KEY = "?api_key=#{api_key}"
|
6
|
+
@PERSON_URL = "http://api.rapleaf.com/v3/person/"
|
7
|
+
@GRAPH_URL = "http://api.rapleaf.com/v2/graph/"
|
8
|
+
end
|
9
|
+
|
10
|
+
def query(params)
|
11
|
+
raise InvalidParams, "Invalid query, please use an :opts hash to specify your options" unless !params[:opts].nil?
|
12
|
+
case params[:type]
|
13
|
+
when :person
|
14
|
+
return Person.new(person_request(params[:opts]))
|
15
|
+
when :graph
|
16
|
+
return Graph.new(graph_request(params[:opts]))
|
17
|
+
else
|
18
|
+
raise InvalidParams, "Invalid query type, use either :graph or :person"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def request(url)
|
25
|
+
resp = Net::HTTP.get_response(URI.parse(url))
|
26
|
+
if resp.code == "200"
|
27
|
+
return resp.body
|
28
|
+
else
|
29
|
+
raise_response_errors(resp.code)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def person_request(params)
|
34
|
+
raise InvalidParams, "Your params hash was formatted incorrectly!" unless url = verify_and_build_person_url(params)
|
35
|
+
request(url)
|
36
|
+
end
|
37
|
+
|
38
|
+
def graph_request(params)
|
39
|
+
raise InvalidParams, "Your params hash was formatted incorrectly!" unless url = verify_and_build_graph_url(params)
|
40
|
+
request(url)
|
41
|
+
end
|
42
|
+
|
43
|
+
def verify_and_build_person_url(params)
|
44
|
+
if params.size == 1
|
45
|
+
return false unless params[:email]
|
46
|
+
return @PERSON_URL + "email/#{params[:email]}" + @API_KEY
|
47
|
+
else
|
48
|
+
return false unless params[:id] && (params[:hash] || params[:site])
|
49
|
+
return @PERSON_URL + (!params[:hash].nil? ? "hash/#{params[:hash]}/#{params[:id]}" : "web/#{params[:site]}/#{params[:id]}") + @API_KEY
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def verify_and_build_graph_url(params)
|
54
|
+
if params.size == 1
|
55
|
+
return false unless params[:id]
|
56
|
+
return @GRAPH_URL + params[:id] + @API_KEY
|
57
|
+
elsif params.size == 2
|
58
|
+
return false unless params[:id] && (params[:by_rapid] || params[:return_rapid])
|
59
|
+
return @GRAPH_URL + params[:id] + @API_KEY + "&" + ( !params[:by_rapid].nil? ? "n=2" : "n=1")
|
60
|
+
else
|
61
|
+
return false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def raise_response_errors(code)
|
66
|
+
case code
|
67
|
+
when "202"
|
68
|
+
raise AcceptedException, "This person is currently being searched. Please check back shortly."
|
69
|
+
when "400"
|
70
|
+
raise MalformedRequestException, "Malformed request."
|
71
|
+
when "401"
|
72
|
+
raise ApiKeyInvalidException, "API Key invalid"
|
73
|
+
when "403"
|
74
|
+
raise RateLimitExceededException, "API Key query limit exceded, please contact developer@rapleaf.com to have your limit increased."
|
75
|
+
when "404"
|
76
|
+
raise PersonNotFoundException, "We do not have this person in our system. If you would like better results, consider supplying the email address."
|
77
|
+
when "500"
|
78
|
+
raise InternalServerError, "There was an unexpected error on our server. This should be very rare and if you see it please contact developer@rapleaf.com."
|
79
|
+
else
|
80
|
+
raise "Unkown Error"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|
data/lib/api/errors.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module RapleafApi
|
2
|
+
|
3
|
+
class InvalidParams < Exception
|
4
|
+
end
|
5
|
+
|
6
|
+
class AcceptedException < Exception
|
7
|
+
end
|
8
|
+
|
9
|
+
class MalformedRequestException < Exception
|
10
|
+
end
|
11
|
+
|
12
|
+
class ApiKeyInvalidException < Exception
|
13
|
+
end
|
14
|
+
|
15
|
+
class RateLimitExceededException < Exception
|
16
|
+
end
|
17
|
+
|
18
|
+
class PersonNotFoundException < Exception
|
19
|
+
end
|
20
|
+
|
21
|
+
class InternalServerError < Exception
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
data/lib/api/graph.rb
ADDED
data/lib/api/person.rb
ADDED
data/lib/rapleaf_api.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'net/http'
|
3
|
+
require 'xmlsimple'
|
4
|
+
|
5
|
+
%w{api.rb person.rb graph.rb errors.rb}.each do |file|
|
6
|
+
require File.dirname(__FILE__) +"/api/" + file
|
7
|
+
end
|
8
|
+
|
9
|
+
module RapleafApi
|
10
|
+
|
11
|
+
VERSION = '0.1.0'
|
12
|
+
|
13
|
+
#Constants for web queries
|
14
|
+
BEBO = "bebo"
|
15
|
+
FACEBOOK = "facebook"
|
16
|
+
FLICKR = "flickr"
|
17
|
+
FRIENDSTER = "friendster"
|
18
|
+
HI5 = "hi5"
|
19
|
+
LINKEDIN = "linkedin"
|
20
|
+
MYSPACE = "myspace"
|
21
|
+
PLAXO = "plaxo"
|
22
|
+
RAPLEAF = "rapleaf"
|
23
|
+
TWITTER = "twitter"
|
24
|
+
|
25
|
+
#constants for hash types
|
26
|
+
MD5 = "md5"
|
27
|
+
SHA1 = "sha1"
|
28
|
+
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rapleaf_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adam Coffman
|
8
|
+
- Brent Beer
|
9
|
+
- Mark Sands
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
|
14
|
+
date: 2010-02-12 00:00:00 -06:00
|
15
|
+
default_executable:
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: xml-simple
|
19
|
+
type: :runtime
|
20
|
+
version_requirement:
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: "0"
|
26
|
+
version:
|
27
|
+
description: An interface to Rapleaf's person and graph APIs. Note that this library is not maintained by or affiliated with Rapleaf in any way and you will still need a (free) api key from Rapleaf to use this.
|
28
|
+
email:
|
29
|
+
- coffman.adam@gmail.com
|
30
|
+
- brent.beer@gmail.com
|
31
|
+
- marksands07@gmail.com
|
32
|
+
executables: []
|
33
|
+
|
34
|
+
extensions: []
|
35
|
+
|
36
|
+
extra_rdoc_files: []
|
37
|
+
|
38
|
+
files:
|
39
|
+
- README.md
|
40
|
+
- Manifest.txt
|
41
|
+
- lib/rapleaf_api.rb
|
42
|
+
- lib/api/api.rb
|
43
|
+
- lib/api/graph.rb
|
44
|
+
- lib/api/person.rb
|
45
|
+
- lib/api/errors.rb
|
46
|
+
has_rdoc: true
|
47
|
+
homepage: http://github.com/thecoffman/rapleaf_api
|
48
|
+
licenses: []
|
49
|
+
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options: []
|
52
|
+
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: "0"
|
60
|
+
version:
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
version:
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.3.5
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: An interface to Rapleaf's person and graph APIs.
|
74
|
+
test_files: []
|
75
|
+
|