clearbit 0.1.7.pre → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -31
- data/clearbit.gemspec +1 -0
- data/examples/company.rb +1 -1
- data/examples/discovery.rb +4 -0
- data/examples/enrichment.rb +4 -0
- data/examples/person.rb +1 -1
- data/lib/clearbit.rb +7 -4
- data/lib/clearbit/base.rb +4 -0
- data/lib/clearbit/discovery.rb +44 -0
- data/lib/clearbit/enrichment.rb +21 -0
- data/lib/clearbit/enrichment/company.rb +37 -0
- data/lib/clearbit/enrichment/person.rb +40 -0
- data/lib/clearbit/enrichment/person_company.rb +31 -0
- data/lib/clearbit/logo.rb +0 -1
- data/lib/clearbit/pending.rb +15 -0
- data/lib/clearbit/prospector.rb +2 -2
- data/lib/clearbit/resource.rb +48 -13
- data/lib/clearbit/version.rb +1 -1
- data/lib/clearbit/watchlist.rb +8 -8
- data/spec/lib/clearbit/discovery_spec.rb +18 -0
- data/spec/lib/clearbit/enrichment_spec.rb +84 -0
- data/spec/lib/clearbit/prospector_spec.rb +19 -0
- data/spec/spec_helper.rb +1 -0
- metadata +33 -16
- data/bin/clearbit +0 -69
- data/examples/person_company.rb +0 -4
- data/lib/clearbit/company.rb +0 -59
- data/lib/clearbit/company_search.rb +0 -18
- data/lib/clearbit/person.rb +0 -65
- data/lib/clearbit/person_company.rb +0 -50
- data/lib/clearbit/streaming.rb +0 -7
- data/lib/clearbit/streaming/company.rb +0 -7
- data/lib/clearbit/streaming/person.rb +0 -7
- data/lib/clearbit/streaming/person_company.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1cbcaad8e2ee14c22b25ed8f50604323650f1a1
|
4
|
+
data.tar.gz: 5ac8cee9d7485cfd251821175008da4da0ec88c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1510ceb002969ef533fe8c0722a0d966f53159e7c6ffd1244b8061973186b7391f1cb55fb2fe2f45111e391febbbc6cdbd0ae0ac91554219f65123f2027e0ba
|
7
|
+
data.tar.gz: f110fd6a47ede030d80fefedefa9b84627775f3b10154f91ec33ad23f58451a8b41cb3ee120b537de164aa94145082af9e0a5593b53953c43ab2320bc987dead
|
data/README.md
CHANGED
@@ -29,10 +29,13 @@ Clearbit.key = ENV['CLEARBIT_KEY']
|
|
29
29
|
Then you can lookup people by email address:
|
30
30
|
|
31
31
|
``` ruby
|
32
|
-
|
32
|
+
result = Clearbit::Enrichment.find(email: 'alex@alexmaccaw.com', stream: true)
|
33
|
+
|
34
|
+
person = result.person
|
35
|
+
company = result.company
|
33
36
|
```
|
34
37
|
|
35
|
-
|
38
|
+
Passing the `stream` option makes the operation blocking - it could hang for 4-5 seconds if we haven't seen the email before. Alternatively you can use our [webhook](https://clearbit.com/docs#webhooks) API. If a person or company can't be found, then they'll be `nil`.
|
36
39
|
|
37
40
|
See the [documentation](https://clearbit.com/docs#person-api) for more information.
|
38
41
|
|
@@ -41,42 +44,16 @@ See the [documentation](https://clearbit.com/docs#person-api) for more informati
|
|
41
44
|
You can lookup company data by domain name:
|
42
45
|
|
43
46
|
``` ruby
|
44
|
-
company = Clearbit::
|
47
|
+
company = Clearbit::Enrichment::Company.find(domain: 'uber.com', stream: true)
|
45
48
|
```
|
46
49
|
|
47
50
|
If the company can't be found, then `nil` will be returned.
|
48
51
|
|
49
52
|
See the [documentation](https://clearbit.com/docs#company-api) for more information.
|
50
53
|
|
51
|
-
##
|
52
|
-
|
53
|
-
The gem also includes a `clearbit` executable, which you can use like this:
|
54
|
-
|
55
|
-
$ clearbit person --email alex@alexmaccaw.com
|
56
|
-
|
57
|
-
{
|
58
|
-
"name": {
|
59
|
-
"fullName": "Alex MacCaw",
|
60
|
-
"givenName": "Alex",
|
61
|
-
"familyName": "MacCaw"
|
62
|
-
},
|
63
|
-
...
|
64
|
-
|
65
|
-
Or to look up a company:
|
66
|
-
|
67
|
-
$ clearbit company --domain uber.com
|
54
|
+
## Other APIs
|
68
55
|
|
69
|
-
|
70
|
-
"name": "Uber",
|
71
|
-
"legalName": "Uber, Inc.",
|
72
|
-
"categories": [
|
73
|
-
"Transport"
|
74
|
-
],
|
75
|
-
"founders": [
|
76
|
-
"Travis Kalanick",
|
77
|
-
"Garrett Camp"
|
78
|
-
],
|
79
|
-
...
|
56
|
+
For more info on our other APIs (such as the Watchlist or Discover APIs), please see our [main documentation](https://clearbit.com/docs).
|
80
57
|
|
81
58
|
## Webhooks
|
82
59
|
|
data/clearbit.gemspec
CHANGED
data/examples/company.rb
CHANGED
data/examples/person.rb
CHANGED
data/lib/clearbit.rb
CHANGED
@@ -19,12 +19,11 @@ module Clearbit
|
|
19
19
|
end
|
20
20
|
|
21
21
|
autoload :Base, 'clearbit/base'
|
22
|
-
autoload :
|
23
|
-
autoload :
|
22
|
+
autoload :Enrichment, 'clearbit/enrichment'
|
23
|
+
autoload :Discovery, 'clearbit/discovery'
|
24
24
|
autoload :Logo, 'clearbit/logo'
|
25
25
|
autoload :Mash, 'clearbit/mash'
|
26
|
-
autoload :
|
27
|
-
autoload :PersonCompany, 'clearbit/person_company'
|
26
|
+
autoload :Pending, 'clearbit/pending'
|
28
27
|
autoload :Prospector, 'clearbit/prospector'
|
29
28
|
autoload :Resource, 'clearbit/resource'
|
30
29
|
autoload :Streaming, 'clearbit/streaming'
|
@@ -38,4 +37,8 @@ module Clearbit
|
|
38
37
|
if clearbit_key = ENV['CLEARBIT_KEY']
|
39
38
|
Clearbit.key = clearbit_key
|
40
39
|
end
|
40
|
+
|
41
|
+
# Backwards compatibility
|
42
|
+
Person = Enrichment::Person
|
43
|
+
Company = Enrichment::Company
|
41
44
|
end
|
data/lib/clearbit/base.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'delegate'
|
2
|
+
|
3
|
+
module Clearbit
|
4
|
+
class Discovery < Base
|
5
|
+
endpoint 'https://discovery.clearbit.com'
|
6
|
+
path '/v1/companies/search'
|
7
|
+
|
8
|
+
class PagedResult < Delegator
|
9
|
+
def initialize(params, response)
|
10
|
+
@params = params
|
11
|
+
super Mash.new(response)
|
12
|
+
end
|
13
|
+
|
14
|
+
def __getobj__
|
15
|
+
@response
|
16
|
+
end
|
17
|
+
|
18
|
+
def __setobj__(obj)
|
19
|
+
@response = obj
|
20
|
+
end
|
21
|
+
|
22
|
+
def each(&block)
|
23
|
+
return enum_for(:each) unless block_given?
|
24
|
+
|
25
|
+
results.each do |result|
|
26
|
+
yield result
|
27
|
+
end
|
28
|
+
|
29
|
+
if results.any?
|
30
|
+
search = Discovery.search(
|
31
|
+
@params.merge(page: page + 1)
|
32
|
+
)
|
33
|
+
search.each(&block)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.search(values = {})
|
39
|
+
response = post('', values)
|
40
|
+
|
41
|
+
PagedResult.new(values, response)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Clearbit
|
2
|
+
module Enrichment extend self
|
3
|
+
autoload :Company, 'clearbit/enrichment/company'
|
4
|
+
autoload :Person, 'clearbit/enrichment/person'
|
5
|
+
autoload :PersonCompany, 'clearbit/enrichment/person_company'
|
6
|
+
|
7
|
+
def find(values)
|
8
|
+
if domain = values[:domain]
|
9
|
+
result = Company.find(values)
|
10
|
+
|
11
|
+
if result && result.pending?
|
12
|
+
Pending.new
|
13
|
+
else
|
14
|
+
PersonCompany.new(company: result)
|
15
|
+
end
|
16
|
+
else
|
17
|
+
PersonCompany.find(values)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Clearbit
|
2
|
+
module Enrichment
|
3
|
+
class Company < Base
|
4
|
+
endpoint 'https://company.clearbit.com'
|
5
|
+
path '/v1/companies'
|
6
|
+
|
7
|
+
def self.find(values)
|
8
|
+
unless values.is_a?(Hash)
|
9
|
+
values = {:id => values}
|
10
|
+
end
|
11
|
+
|
12
|
+
if domain = values.delete(:domain)
|
13
|
+
response = get(uri(:domain, domain), values)
|
14
|
+
elsif id = values.delete(:id)
|
15
|
+
response = get(id, values)
|
16
|
+
else
|
17
|
+
raise ArgumentError, 'Invalid values'
|
18
|
+
end
|
19
|
+
|
20
|
+
if response.status == 202
|
21
|
+
Pending.new
|
22
|
+
else
|
23
|
+
self.new(response)
|
24
|
+
end
|
25
|
+
rescue Nestful::ResourceNotFound
|
26
|
+
end
|
27
|
+
|
28
|
+
class << self
|
29
|
+
alias_method :[], :find
|
30
|
+
end
|
31
|
+
|
32
|
+
def flag!(attrs = {})
|
33
|
+
self.class.post(uri('flag'), attrs)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Clearbit
|
2
|
+
module Enrichment
|
3
|
+
class Person < Base
|
4
|
+
endpoint 'https://person.clearbit.com'
|
5
|
+
path '/v1/people'
|
6
|
+
|
7
|
+
def self.find(values)
|
8
|
+
unless values.is_a?(Hash)
|
9
|
+
values = {:id => values}
|
10
|
+
end
|
11
|
+
|
12
|
+
if email = values.delete(:email)
|
13
|
+
response = get(uri(:email, email), values)
|
14
|
+
|
15
|
+
elsif id = values.delete(:id)
|
16
|
+
response = get(id, values)
|
17
|
+
|
18
|
+
else
|
19
|
+
raise ArgumentError, 'Invalid values'
|
20
|
+
end
|
21
|
+
|
22
|
+
if response.status == 202
|
23
|
+
Pending.new
|
24
|
+
else
|
25
|
+
self.new(response)
|
26
|
+
end
|
27
|
+
|
28
|
+
rescue Nestful::ResourceNotFound
|
29
|
+
end
|
30
|
+
|
31
|
+
class << self
|
32
|
+
alias_method :[], :find
|
33
|
+
end
|
34
|
+
|
35
|
+
def flag!(attrs = {})
|
36
|
+
self.class.post(uri('flag'), attrs)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Clearbit
|
2
|
+
module Enrichment
|
3
|
+
class PersonCompany < Base
|
4
|
+
endpoint 'https://person.clearbit.com'
|
5
|
+
path '/v1/combined'
|
6
|
+
|
7
|
+
def self.find(values)
|
8
|
+
unless values.is_a?(Hash)
|
9
|
+
values = {:id => values}
|
10
|
+
end
|
11
|
+
|
12
|
+
if email = values.delete(:email)
|
13
|
+
response = get(uri(:email, email), values)
|
14
|
+
else
|
15
|
+
raise ArgumentError, 'Invalid values'
|
16
|
+
end
|
17
|
+
|
18
|
+
if response.status == 202
|
19
|
+
Pending.new
|
20
|
+
else
|
21
|
+
self.new(response)
|
22
|
+
end
|
23
|
+
rescue Nestful::ResourceNotFound
|
24
|
+
end
|
25
|
+
|
26
|
+
class << self
|
27
|
+
alias_method :[], :find
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/clearbit/logo.rb
CHANGED
data/lib/clearbit/prospector.rb
CHANGED
data/lib/clearbit/resource.rb
CHANGED
@@ -32,7 +32,7 @@ module Clearbit
|
|
32
32
|
alias_method :add_options, :options
|
33
33
|
end
|
34
34
|
|
35
|
-
def self.url
|
35
|
+
def self.url(options = {})
|
36
36
|
URI.join(endpoint.to_s, path.to_s).to_s
|
37
37
|
end
|
38
38
|
|
@@ -42,35 +42,70 @@ module Clearbit
|
|
42
42
|
return uri if uri.host
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
value = Nestful::Helpers.to_path(url, *parts)
|
46
|
+
|
47
|
+
URI.parse(value)
|
46
48
|
end
|
47
49
|
|
48
|
-
|
49
|
-
|
50
|
+
OPTION_KEYS = %i{
|
51
|
+
params key headers stream
|
52
|
+
proxy user password auth_type
|
53
|
+
timeout ssl_options
|
54
|
+
}
|
55
|
+
|
56
|
+
def self.parse_values(values)
|
57
|
+
params = values.reject {|k,_| OPTION_KEYS.include?(k) }
|
58
|
+
options = values.select {|k,_| OPTION_KEYS.include?(k) }
|
59
|
+
|
60
|
+
[params, options]
|
50
61
|
end
|
51
62
|
|
52
|
-
def self.
|
53
|
-
|
63
|
+
def self.get(action = '', values = {})
|
64
|
+
params, options = parse_values(values)
|
65
|
+
|
66
|
+
request(
|
67
|
+
uri(action),
|
68
|
+
options.merge(method: :get, params: params))
|
54
69
|
end
|
55
70
|
|
56
|
-
def self.
|
57
|
-
|
71
|
+
def self.put(action = '', values = {})
|
72
|
+
params, options = parse_values(values)
|
73
|
+
|
74
|
+
request(
|
75
|
+
uri(action),
|
76
|
+
options.merge(method: :put, params: params, format: :json))
|
58
77
|
end
|
59
78
|
|
60
|
-
def self.
|
61
|
-
|
79
|
+
def self.post(action = '', values = {})
|
80
|
+
params, options = parse_values(values)
|
81
|
+
|
82
|
+
request(
|
83
|
+
uri(action),
|
84
|
+
options.merge(method: :post, params: params, format: :json))
|
62
85
|
end
|
63
86
|
|
64
|
-
def self.
|
87
|
+
def self.delete(action = '', values = {})
|
88
|
+
params, options = parse_values(values)
|
89
|
+
|
90
|
+
request(
|
91
|
+
uri(action),
|
92
|
+
options.merge(method: :delete, params: params))
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.request(uri, options = {})
|
65
96
|
options = Nestful::Helpers.deep_merge(self.options, options)
|
66
97
|
|
98
|
+
if options[:stream]
|
99
|
+
uri.host = uri.host.gsub('.clearbit.com', '-stream.clearbit.com')
|
100
|
+
end
|
101
|
+
|
67
102
|
Nestful::Request.new(
|
68
|
-
|
103
|
+
uri, options
|
69
104
|
).execute
|
70
105
|
end
|
71
106
|
|
72
107
|
def uri(*parts)
|
73
|
-
|
108
|
+
self.class.uri(*[id, *parts].compact)
|
74
109
|
end
|
75
110
|
end
|
76
111
|
end
|
data/lib/clearbit/version.rb
CHANGED
data/lib/clearbit/watchlist.rb
CHANGED
@@ -3,8 +3,8 @@ module Clearbit
|
|
3
3
|
endpoint 'https://watchlist.clearbit.com'
|
4
4
|
path '/v1/search/all'
|
5
5
|
|
6
|
-
def self.search(
|
7
|
-
response = post('',
|
6
|
+
def self.search(values)
|
7
|
+
response = post('', values)
|
8
8
|
self.new(response)
|
9
9
|
end
|
10
10
|
|
@@ -19,18 +19,18 @@ module Clearbit
|
|
19
19
|
class Candidate < Watchlist
|
20
20
|
path '/v1/candidates'
|
21
21
|
|
22
|
-
def self.find(id,
|
23
|
-
response = get(id,
|
22
|
+
def self.find(id, values)
|
23
|
+
response = get(id, values)
|
24
24
|
self.new(response)
|
25
25
|
end
|
26
26
|
|
27
|
-
def self.all(
|
28
|
-
response = get('',
|
27
|
+
def self.all(values)
|
28
|
+
response = get('', values)
|
29
29
|
self.new(response)
|
30
30
|
end
|
31
31
|
|
32
|
-
def self.create(
|
33
|
-
response = post('',
|
32
|
+
def self.create(values)
|
33
|
+
response = post('', values)
|
34
34
|
self.new(response)
|
35
35
|
end
|
36
36
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Clearbit::Discovery do
|
4
|
+
before do |example|
|
5
|
+
Clearbit.key = 'clearbit_key'
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'returns results from the Discovery API' do
|
9
|
+
body = []
|
10
|
+
query = {query: {name: 'stripe'}}
|
11
|
+
|
12
|
+
stub_request(:post, "https://discovery.clearbit.com/v1/companies/search").
|
13
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}, body: query.to_json).
|
14
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
15
|
+
|
16
|
+
Clearbit::Discovery.search(query: {name: 'stripe'})
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Clearbit::Enrichment do
|
4
|
+
before do |example|
|
5
|
+
Clearbit.key = 'clearbit_key'
|
6
|
+
end
|
7
|
+
|
8
|
+
context 'combined API' do
|
9
|
+
it 'should call out to the combined API' do
|
10
|
+
body = {
|
11
|
+
person: nil,
|
12
|
+
company: nil
|
13
|
+
}
|
14
|
+
|
15
|
+
stub_request(:get, "https://person.clearbit.com/v1/combined/email/test@example.com").
|
16
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
17
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
18
|
+
|
19
|
+
Clearbit::Enrichment.find(email: 'test@example.com')
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'uses streaming option' do
|
23
|
+
body = {
|
24
|
+
person: nil,
|
25
|
+
company: nil
|
26
|
+
}
|
27
|
+
|
28
|
+
stub_request(:get, "https://person-stream.clearbit.com/v1/combined/email/test@example.com").
|
29
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
30
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
31
|
+
|
32
|
+
Clearbit::Enrichment.find(email: 'test@example.com', stream: true)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'returns pending? if 202 response' do
|
36
|
+
body = {
|
37
|
+
person: nil,
|
38
|
+
company: nil
|
39
|
+
}
|
40
|
+
|
41
|
+
stub_request(:get, "https://person.clearbit.com/v1/combined/email/test@example.com").
|
42
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
43
|
+
to_return(:status => 202, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
44
|
+
|
45
|
+
result = Clearbit::Enrichment.find(email: 'test@example.com')
|
46
|
+
|
47
|
+
expect(result.pending?).to be true
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should use the Company API if domain is provided' do
|
51
|
+
body = {}
|
52
|
+
|
53
|
+
stub_request(:get, "https://company.clearbit.com/v1/companies/domain/example.com").
|
54
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
55
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
56
|
+
|
57
|
+
Clearbit::Enrichment.find(domain: 'example.com')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'person API' do
|
62
|
+
it 'should call out to the person API' do
|
63
|
+
body = {}
|
64
|
+
|
65
|
+
stub_request(:get, "https://person.clearbit.com/v1/people/email/test@example.com").
|
66
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
67
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
68
|
+
|
69
|
+
Clearbit::Enrichment::Person.find(email: 'test@example.com')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'company API' do
|
74
|
+
it 'should call out to the company API' do
|
75
|
+
body = {}
|
76
|
+
|
77
|
+
stub_request(:get, "https://company.clearbit.com/v1/companies/domain/example.com").
|
78
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
79
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
80
|
+
|
81
|
+
Clearbit::Enrichment::Company.find(domain: 'example.com')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Clearbit::Prospector do
|
4
|
+
before do |example|
|
5
|
+
Clearbit.key = 'clearbit_key'
|
6
|
+
end
|
7
|
+
|
8
|
+
context 'Prospector API' do
|
9
|
+
it 'should call out to the Prospector API' do
|
10
|
+
body = []
|
11
|
+
|
12
|
+
stub_request(:get, "https://prospector.clearbit.com/v1/people/search?domain=stripe.com").
|
13
|
+
with(:headers => {'Authorization'=>'Bearer clearbit_key'}).
|
14
|
+
to_return(:status => 200, :body => body.to_json, headers: {'Content-Type' => 'application/json'})
|
15
|
+
|
16
|
+
Clearbit::Prospector.search(domain: 'stripe.com')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clearbit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex MacCaw
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: nestful
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,8 +125,7 @@ dependencies:
|
|
111
125
|
description: API client for clearbit.com
|
112
126
|
email:
|
113
127
|
- alex@clearbit.com
|
114
|
-
executables:
|
115
|
-
- clearbit
|
128
|
+
executables: []
|
116
129
|
extensions: []
|
117
130
|
extra_rdoc_files: []
|
118
131
|
files:
|
@@ -120,32 +133,33 @@ files:
|
|
120
133
|
- Gemfile
|
121
134
|
- README.md
|
122
135
|
- Rakefile
|
123
|
-
- bin/clearbit
|
124
136
|
- clearbit.gemspec
|
125
137
|
- examples/company.rb
|
138
|
+
- examples/discovery.rb
|
139
|
+
- examples/enrichment.rb
|
126
140
|
- examples/logo.rb
|
127
141
|
- examples/person.rb
|
128
|
-
- examples/person_company.rb
|
129
142
|
- examples/version.rb
|
130
143
|
- examples/watchlist.rb
|
131
144
|
- lib/clearbit.rb
|
132
145
|
- lib/clearbit/base.rb
|
133
|
-
- lib/clearbit/
|
134
|
-
- lib/clearbit/
|
146
|
+
- lib/clearbit/discovery.rb
|
147
|
+
- lib/clearbit/enrichment.rb
|
148
|
+
- lib/clearbit/enrichment/company.rb
|
149
|
+
- lib/clearbit/enrichment/person.rb
|
150
|
+
- lib/clearbit/enrichment/person_company.rb
|
135
151
|
- lib/clearbit/errors/invalid_webhook_signature.rb
|
136
152
|
- lib/clearbit/logo.rb
|
137
153
|
- lib/clearbit/mash.rb
|
138
|
-
- lib/clearbit/
|
139
|
-
- lib/clearbit/person_company.rb
|
154
|
+
- lib/clearbit/pending.rb
|
140
155
|
- lib/clearbit/prospector.rb
|
141
156
|
- lib/clearbit/resource.rb
|
142
|
-
- lib/clearbit/streaming.rb
|
143
|
-
- lib/clearbit/streaming/company.rb
|
144
|
-
- lib/clearbit/streaming/person.rb
|
145
|
-
- lib/clearbit/streaming/person_company.rb
|
146
157
|
- lib/clearbit/version.rb
|
147
158
|
- lib/clearbit/watchlist.rb
|
148
159
|
- lib/clearbit/webhook.rb
|
160
|
+
- spec/lib/clearbit/discovery_spec.rb
|
161
|
+
- spec/lib/clearbit/enrichment_spec.rb
|
162
|
+
- spec/lib/clearbit/prospector_spec.rb
|
149
163
|
- spec/lib/clearbit/webhook_spec.rb
|
150
164
|
- spec/spec_helper.rb
|
151
165
|
homepage: https://github.com/maccman/clearbit-ruby
|
@@ -163,9 +177,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
177
|
version: '0'
|
164
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
179
|
requirements:
|
166
|
-
- - "
|
180
|
+
- - ">="
|
167
181
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
182
|
+
version: '0'
|
169
183
|
requirements: []
|
170
184
|
rubyforge_project:
|
171
185
|
rubygems_version: 2.2.2
|
@@ -173,6 +187,9 @@ signing_key:
|
|
173
187
|
specification_version: 4
|
174
188
|
summary: API client for clearbit.com
|
175
189
|
test_files:
|
190
|
+
- spec/lib/clearbit/discovery_spec.rb
|
191
|
+
- spec/lib/clearbit/enrichment_spec.rb
|
192
|
+
- spec/lib/clearbit/prospector_spec.rb
|
176
193
|
- spec/lib/clearbit/webhook_spec.rb
|
177
194
|
- spec/spec_helper.rb
|
178
195
|
has_rdoc:
|
data/bin/clearbit
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'clearbit'
|
4
|
-
require 'json'
|
5
|
-
require 'optparse'
|
6
|
-
|
7
|
-
begin
|
8
|
-
require 'awesome_print'
|
9
|
-
rescue LoadError
|
10
|
-
def ap(value)
|
11
|
-
puts JSON.pretty_generate(value)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
options = {}
|
16
|
-
values = {}
|
17
|
-
|
18
|
-
parser = OptionParser.new do |opts|
|
19
|
-
opts.banner = "Usage: clearbit [person|company] [options]"
|
20
|
-
|
21
|
-
opts.on("--email EMAIL", String, "Email") do |v|
|
22
|
-
values[:email] = v
|
23
|
-
end
|
24
|
-
|
25
|
-
opts.on("--domain DOMAIN", String, "Domain") do |v|
|
26
|
-
values[:domain] = v
|
27
|
-
end
|
28
|
-
|
29
|
-
opts.on("--api-key KEY", String, "Clearbit") do |v|
|
30
|
-
options[:api_key] = v
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
parser.parse!
|
35
|
-
|
36
|
-
case ARGV[0]
|
37
|
-
when 'person'
|
38
|
-
entity = Clearbit::Streaming::Person
|
39
|
-
when 'company'
|
40
|
-
entity = Clearbit::Streaming::Company
|
41
|
-
else
|
42
|
-
puts parser
|
43
|
-
exit
|
44
|
-
end
|
45
|
-
|
46
|
-
if values == {}
|
47
|
-
puts parser
|
48
|
-
exit
|
49
|
-
end
|
50
|
-
|
51
|
-
if key = ENV['CLEARBIT_KEY']
|
52
|
-
options[:api_key] ||= key
|
53
|
-
end
|
54
|
-
|
55
|
-
if key = options.delete(:api_key)
|
56
|
-
Clearbit.api_key = key
|
57
|
-
else
|
58
|
-
puts 'API Key required'
|
59
|
-
puts parser
|
60
|
-
exit
|
61
|
-
end
|
62
|
-
|
63
|
-
object = entity.find(values, options)
|
64
|
-
|
65
|
-
if object
|
66
|
-
ap object.to_hash
|
67
|
-
else
|
68
|
-
puts 'Not found'
|
69
|
-
end
|
data/examples/person_company.rb
DELETED
data/lib/clearbit/company.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
module Clearbit
|
2
|
-
class Company < Base
|
3
|
-
endpoint 'https://company.clearbit.com'
|
4
|
-
path '/v1/companies'
|
5
|
-
|
6
|
-
def self.find(values, old_options = nil)
|
7
|
-
unless values.is_a?(Hash)
|
8
|
-
values = {:id => values}
|
9
|
-
end
|
10
|
-
|
11
|
-
if old_options
|
12
|
-
# Deprecated API
|
13
|
-
warn '[DEPRECATION] passing multiple args to find() is deprecated'
|
14
|
-
(values[:request] ||= {}).merge!(old_options)
|
15
|
-
end
|
16
|
-
|
17
|
-
options = values.delete(:request) || {}
|
18
|
-
params = values.delete(:params) || {}
|
19
|
-
|
20
|
-
if webhook_id = values.delete(:webhook_id)
|
21
|
-
params.merge!(webhook_id: webhook_id)
|
22
|
-
end
|
23
|
-
|
24
|
-
if webhook_url = values.delete(:webhook_url)
|
25
|
-
params.merge!(webhook_url: webhook_url)
|
26
|
-
end
|
27
|
-
|
28
|
-
if subscribe = values.delete(:subscribe)
|
29
|
-
params.merge!(subscribe: subscribe)
|
30
|
-
end
|
31
|
-
|
32
|
-
if domain = values[:domain]
|
33
|
-
response = get(uri(:domain, domain), params, options)
|
34
|
-
|
35
|
-
elsif id = values[:id]
|
36
|
-
response = get(id, params, options)
|
37
|
-
|
38
|
-
else
|
39
|
-
raise ArgumentError, 'Invalid values'
|
40
|
-
end
|
41
|
-
|
42
|
-
if response.status == 202
|
43
|
-
self.new(pending: true)
|
44
|
-
else
|
45
|
-
self.new(response)
|
46
|
-
end
|
47
|
-
|
48
|
-
rescue Nestful::ResourceNotFound
|
49
|
-
end
|
50
|
-
|
51
|
-
class << self
|
52
|
-
alias_method :[], :find
|
53
|
-
end
|
54
|
-
|
55
|
-
def flag!(attrs = {})
|
56
|
-
self.class.post(uri('flag'), attrs)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Clearbit
|
2
|
-
class CompanySearch < Base
|
3
|
-
endpoint 'https://company.clearbit.com'
|
4
|
-
path '/v1/companies/search'
|
5
|
-
|
6
|
-
def self.search(query, params = {})
|
7
|
-
options = params.delete(:request) || {}
|
8
|
-
options = options.merge(format: :json)
|
9
|
-
|
10
|
-
query = [query] if query.is_a?(Hash)
|
11
|
-
params = params.merge(query: query)
|
12
|
-
|
13
|
-
response = post('', params, options)
|
14
|
-
|
15
|
-
self.new(response)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/clearbit/person.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Clearbit
|
2
|
-
class Person < Base
|
3
|
-
endpoint 'https://person.clearbit.com'
|
4
|
-
path '/v1/people'
|
5
|
-
|
6
|
-
def self.find(values, old_options = nil)
|
7
|
-
unless values.is_a?(Hash)
|
8
|
-
values = {:id => values}
|
9
|
-
end
|
10
|
-
|
11
|
-
if old_options
|
12
|
-
# Deprecated API
|
13
|
-
warn '[DEPRECATION] passing multiple args to find() is deprecated'
|
14
|
-
(values[:request] ||= {}).merge!(old_options)
|
15
|
-
end
|
16
|
-
|
17
|
-
options = values.delete(:request) || {}
|
18
|
-
params = values.delete(:params) || {}
|
19
|
-
|
20
|
-
if webhook_id = values.delete(:webhook_id)
|
21
|
-
params.merge!(webhook_id: webhook_id)
|
22
|
-
end
|
23
|
-
|
24
|
-
if webhook_url = values.delete(:webhook_url)
|
25
|
-
params.merge!(webhook_url: webhook_url)
|
26
|
-
end
|
27
|
-
|
28
|
-
if subscribe = values.delete(:subscribe)
|
29
|
-
params.merge!(subscribe: subscribe)
|
30
|
-
end
|
31
|
-
|
32
|
-
if email = values[:email]
|
33
|
-
response = get(uri(:email, email), params, options)
|
34
|
-
|
35
|
-
elsif twitter = values[:twitter]
|
36
|
-
response = get(uri(:twitter, twitter), params, options)
|
37
|
-
|
38
|
-
elsif github = values[:github]
|
39
|
-
response = get(uri(:github, github), params, options)
|
40
|
-
|
41
|
-
elsif id = values[:id]
|
42
|
-
response = get(id, params, options)
|
43
|
-
|
44
|
-
else
|
45
|
-
raise ArgumentError, 'Invalid values'
|
46
|
-
end
|
47
|
-
|
48
|
-
if response.status == 202
|
49
|
-
self.new(pending: true)
|
50
|
-
else
|
51
|
-
self.new(response)
|
52
|
-
end
|
53
|
-
|
54
|
-
rescue Nestful::ResourceNotFound
|
55
|
-
end
|
56
|
-
|
57
|
-
class << self
|
58
|
-
alias_method :[], :find
|
59
|
-
end
|
60
|
-
|
61
|
-
def flag!(attrs = {})
|
62
|
-
self.class.post(uri('flag'), attrs)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Clearbit
|
2
|
-
class PersonCompany < Base
|
3
|
-
endpoint 'https://person.clearbit.com'
|
4
|
-
path '/v1/combined'
|
5
|
-
|
6
|
-
def self.find(values, old_options = nil)
|
7
|
-
unless values.is_a?(Hash)
|
8
|
-
values = {:id => values}
|
9
|
-
end
|
10
|
-
|
11
|
-
if old_options
|
12
|
-
# Deprecated API
|
13
|
-
warn '[DEPRECATION] passing multiple args to find() is deprecated'
|
14
|
-
(values[:request] ||= {}).merge!(old_options)
|
15
|
-
end
|
16
|
-
|
17
|
-
options = values.delete(:request) || {}
|
18
|
-
params = values.delete(:params) || {}
|
19
|
-
|
20
|
-
if webhook_id = values.delete(:webhook_id)
|
21
|
-
params.merge!(webhook_id: webhook_id)
|
22
|
-
end
|
23
|
-
|
24
|
-
if webhook_url = values.delete(:webhook_url)
|
25
|
-
params.merge!(webhook_url: webhook_url)
|
26
|
-
end
|
27
|
-
|
28
|
-
if subscribe = values.delete(:subscribe)
|
29
|
-
params.merge!(subscribe: subscribe)
|
30
|
-
end
|
31
|
-
|
32
|
-
if email = values[:email]
|
33
|
-
response = get(uri(:email, email), params, options)
|
34
|
-
else
|
35
|
-
raise ArgumentError, 'Invalid values'
|
36
|
-
end
|
37
|
-
|
38
|
-
if response.status == 202
|
39
|
-
self.new(pending: true)
|
40
|
-
else
|
41
|
-
self.new(response)
|
42
|
-
end
|
43
|
-
rescue Nestful::ResourceNotFound
|
44
|
-
end
|
45
|
-
|
46
|
-
class << self
|
47
|
-
alias_method :[], :find
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
data/lib/clearbit/streaming.rb
DELETED