clearbit 0.1.7.pre → 0.2.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.
- 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