zoominfo-ruby 0.0.5 → 0.0.7
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 +5 -13
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/zoominfo-ruby.rb +0 -1
- data/lib/zoominfo-ruby/client.rb +5 -4
- data/lib/zoominfo-ruby/company.rb +8 -5
- data/lib/zoominfo-ruby/person.rb +5 -2
- data/zoominfo-ruby.gemspec +6 -8
- metadata +16 -17
- data/lib/zoominfo-ruby/key_generation.rb +0 -20
- data/spec/key_generation_spec.rb +0 -35
checksums.yaml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
data.tar.gz: !binary |-
|
|
6
|
-
ODY1OTdmYzAwNWQ4OGYzYmVkM2MxYWU5YzFlNjgxODRiMGVlMmMzZA==
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: d8eee4d56cdbd9f3ed928a984f73df1c3b531992
|
|
4
|
+
data.tar.gz: 7e6584adb93f32dd8e5103c519ffdf554d985b5f
|
|
7
5
|
SHA512:
|
|
8
|
-
metadata.gz:
|
|
9
|
-
|
|
10
|
-
MzE0NmMyOTA5ODc0ZjU4YzkwMTg3Y2JkNGU4YWEzZDk4ZTlmNTAwYmM1YzM5
|
|
11
|
-
NWMyMDNhYTA3MmI5ODhjZWNiYzhmNjU2YjVmM2IyNzY1YmQzOGQ=
|
|
12
|
-
data.tar.gz: !binary |-
|
|
13
|
-
MDg0ZGZhYzVjOWNhNzU3NmRmMzY2YzlkZmYyMzhlYzczMjk5YjE3OWExMGFi
|
|
14
|
-
OWQzMzkzMTM4OTBmOWE2ZjJiZjliYTU3ZjZlY2MzZDZkOWE4YzY2MTc0ZDUw
|
|
15
|
-
ODY5NTQ0YmRmMmEyNmNkMWFkN2FjMDI1NGYyMTEwZTU2YzllYmY=
|
|
6
|
+
metadata.gz: 49e7b87a08b76d549dfa109af26a78b7def836ce5e5eeec9997cb452d776fa77505fdd71d52dfc4b9dc906d85a6e6ecb139d0c10cdbcb13fd9ce62a066ba915b
|
|
7
|
+
data.tar.gz: f2efd0206003c21d5be50d72b0617ca8e9214e3766ddbfb8e9fd8f2e4c09da9bd7644198026c16f06fbdbb710f8f74dc8aab0e9bbae86dbfb327d7732bc812fe
|
data/Rakefile
CHANGED
|
@@ -20,7 +20,7 @@ Jeweler::Tasks.new do |gem|
|
|
|
20
20
|
gem.summary = %Q{API client to ZoomInfo}
|
|
21
21
|
gem.description = %Q{API client to ZoomInfo's 'new API'}
|
|
22
22
|
gem.email = "ianm280@gmail.com"
|
|
23
|
-
gem.authors = ["Ian Morgan"]
|
|
23
|
+
gem.authors = ["Ian Morgan", "Val Savvateev"]
|
|
24
24
|
# dependencies defined in Gemfile
|
|
25
25
|
end
|
|
26
26
|
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.7
|
data/lib/zoominfo-ruby.rb
CHANGED
data/lib/zoominfo-ruby/client.rb
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module ZoomInfo
|
|
2
2
|
class Base
|
|
3
|
-
include KeyGeneration
|
|
4
3
|
include HTTParty
|
|
5
4
|
base_uri 'partnerapi.zoominfo.com/partnerapi/'
|
|
6
5
|
format :xml
|
|
@@ -12,9 +11,11 @@ module ZoomInfo
|
|
|
12
11
|
self.class.default_params({pc: partner_name, outputType: 'xml'})
|
|
13
12
|
end
|
|
14
13
|
|
|
15
|
-
def
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
def generate_key(search_terms, password)
|
|
15
|
+
search_term_prefaces = search_terms.collect{|t| t[0..1]}.join()
|
|
16
|
+
date_formatted = Time.now.strftime("%-d%-m%-Y")
|
|
17
|
+
|
|
18
|
+
Digest::MD5.hexdigest(search_term_prefaces + password + date_formatted)
|
|
18
19
|
end
|
|
19
20
|
end
|
|
20
21
|
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
module ZoomInfo
|
|
2
2
|
class Company < ZoomInfo::Base
|
|
3
|
+
SEARCH_NON_KEY_PARAMS = %w(pc outputType outputFieldOptions rpp page SortBy SortOrder)
|
|
4
|
+
DETAIL_KEY_PARAMS = %w(CompanyID CompanyDomain)
|
|
5
|
+
|
|
3
6
|
def search(query = {})
|
|
4
|
-
query =
|
|
7
|
+
query[:key] = generate_key(query.except(*SEARCH_NON_KEY_PARAMS).values, @api_key)
|
|
5
8
|
self.class.get("/company/search", query: query).parsed_response
|
|
6
9
|
end
|
|
7
10
|
|
|
8
11
|
def detail(query = {})
|
|
9
|
-
query =
|
|
10
|
-
self.class.get("/company/detail", query: query).parsed_response
|
|
12
|
+
query[:key] = generate_key(query.slice(*DETAIL_KEY_PARAMS).values, @api_key)
|
|
13
|
+
self.class.get("/company/detail", query: query).parsed_response["CompanyDetailRequest"]
|
|
11
14
|
end
|
|
12
15
|
|
|
13
16
|
def search_by_company_name(company_name)
|
|
14
17
|
search('CompanyName' => company_name)['CompanySearchRequest']['CompanySearchResults']
|
|
15
18
|
end
|
|
16
19
|
|
|
17
|
-
def detail_by_domain_name(domain_name)
|
|
18
|
-
detail('CompanyDomain' => domain_name)
|
|
20
|
+
def detail_by_domain_name(domain_name, opts = {})
|
|
21
|
+
detail({'CompanyDomain' => domain_name}.merge!(opts))
|
|
19
22
|
end
|
|
20
23
|
|
|
21
24
|
# Runs 2 API calls, first to people search, second to company detail
|
data/lib/zoominfo-ruby/person.rb
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
module ZoomInfo
|
|
2
2
|
class Person < ZoomInfo::Base
|
|
3
|
+
SEARCH_NON_KEY_PARAMS = %w(pc numMatches echoInput outputFieldOptions matchCompany uniqueInputId)
|
|
4
|
+
DETAIL_KEY_PARAMS = %w(PersonID EmailAddress)
|
|
5
|
+
|
|
3
6
|
def search(query = {})
|
|
4
|
-
query =
|
|
7
|
+
query[:key] = generate_key(query.except(*SEARCH_NON_KEY_PARAMS).values, @api_key)
|
|
5
8
|
self.class.get("/person/search", query: query).parsed_response
|
|
6
9
|
end
|
|
7
10
|
|
|
8
11
|
def detail(query = {})
|
|
9
|
-
query =
|
|
12
|
+
query[:key] = generate_key(query.slice(*DETAIL_KEY_PARAMS).values, @api_key)
|
|
10
13
|
self.class.get("/person/detail", query: query).parsed_response
|
|
11
14
|
end
|
|
12
15
|
|
data/zoominfo-ruby.gemspec
CHANGED
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: zoominfo-ruby 0.0.
|
|
5
|
+
# stub: zoominfo-ruby 0.0.7 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
8
|
s.name = "zoominfo-ruby"
|
|
9
|
-
s.version = "0.0.
|
|
9
|
+
s.version = "0.0.7"
|
|
10
10
|
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
-
s.
|
|
13
|
-
s.
|
|
12
|
+
s.require_paths = ["lib"]
|
|
13
|
+
s.authors = ["Ian Morgan", "Val Savvateev"]
|
|
14
|
+
s.date = "2015-05-15"
|
|
14
15
|
s.description = "API client to ZoomInfo's 'new API'"
|
|
15
16
|
s.email = "ianm280@gmail.com"
|
|
16
17
|
s.extra_rdoc_files = [
|
|
@@ -30,17 +31,14 @@ Gem::Specification.new do |s|
|
|
|
30
31
|
"lib/zoominfo-ruby.rb",
|
|
31
32
|
"lib/zoominfo-ruby/client.rb",
|
|
32
33
|
"lib/zoominfo-ruby/company.rb",
|
|
33
|
-
"lib/zoominfo-ruby/key_generation.rb",
|
|
34
34
|
"lib/zoominfo-ruby/person.rb",
|
|
35
|
-
"spec/key_generation_spec.rb",
|
|
36
35
|
"spec/spec_helper.rb",
|
|
37
36
|
"spec/zoominfo-ruby_spec.rb",
|
|
38
37
|
"zoominfo-ruby.gemspec"
|
|
39
38
|
]
|
|
40
39
|
s.homepage = "http://github.com/exitround/zoominfo-ruby"
|
|
41
40
|
s.licenses = ["MIT"]
|
|
42
|
-
s.
|
|
43
|
-
s.rubygems_version = "2.1.11"
|
|
41
|
+
s.rubygems_version = "2.4.6"
|
|
44
42
|
s.summary = "API client to ZoomInfo"
|
|
45
43
|
|
|
46
44
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
|
@@ -1,41 +1,42 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zoominfo-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ian Morgan
|
|
8
|
+
- Val Savvateev
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
|
12
13
|
dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
|
14
15
|
name: httparty
|
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
|
16
17
|
requirements:
|
|
17
|
-
- -
|
|
18
|
+
- - '>='
|
|
18
19
|
- !ruby/object:Gem::Version
|
|
19
20
|
version: '0'
|
|
20
21
|
type: :runtime
|
|
21
22
|
prerelease: false
|
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
24
|
requirements:
|
|
24
|
-
- -
|
|
25
|
+
- - '>='
|
|
25
26
|
- !ruby/object:Gem::Version
|
|
26
27
|
version: '0'
|
|
27
28
|
- !ruby/object:Gem::Dependency
|
|
28
29
|
name: guard-rspec
|
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
|
30
31
|
requirements:
|
|
31
|
-
- -
|
|
32
|
+
- - '>='
|
|
32
33
|
- !ruby/object:Gem::Version
|
|
33
34
|
version: '0'
|
|
34
35
|
type: :runtime
|
|
35
36
|
prerelease: false
|
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
38
|
requirements:
|
|
38
|
-
- -
|
|
39
|
+
- - '>='
|
|
39
40
|
- !ruby/object:Gem::Version
|
|
40
41
|
version: '0'
|
|
41
42
|
- !ruby/object:Gem::Dependency
|
|
@@ -70,14 +71,14 @@ dependencies:
|
|
|
70
71
|
name: bundler
|
|
71
72
|
requirement: !ruby/object:Gem::Requirement
|
|
72
73
|
requirements:
|
|
73
|
-
- -
|
|
74
|
+
- - '>='
|
|
74
75
|
- !ruby/object:Gem::Version
|
|
75
76
|
version: '0'
|
|
76
77
|
type: :development
|
|
77
78
|
prerelease: false
|
|
78
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
80
|
requirements:
|
|
80
|
-
- -
|
|
81
|
+
- - '>='
|
|
81
82
|
- !ruby/object:Gem::Version
|
|
82
83
|
version: '0'
|
|
83
84
|
- !ruby/object:Gem::Dependency
|
|
@@ -98,28 +99,28 @@ dependencies:
|
|
|
98
99
|
name: guard
|
|
99
100
|
requirement: !ruby/object:Gem::Requirement
|
|
100
101
|
requirements:
|
|
101
|
-
- -
|
|
102
|
+
- - '>='
|
|
102
103
|
- !ruby/object:Gem::Version
|
|
103
104
|
version: '0'
|
|
104
105
|
type: :development
|
|
105
106
|
prerelease: false
|
|
106
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
108
|
requirements:
|
|
108
|
-
- -
|
|
109
|
+
- - '>='
|
|
109
110
|
- !ruby/object:Gem::Version
|
|
110
111
|
version: '0'
|
|
111
112
|
- !ruby/object:Gem::Dependency
|
|
112
113
|
name: timecop
|
|
113
114
|
requirement: !ruby/object:Gem::Requirement
|
|
114
115
|
requirements:
|
|
115
|
-
- -
|
|
116
|
+
- - '>='
|
|
116
117
|
- !ruby/object:Gem::Version
|
|
117
118
|
version: '0'
|
|
118
119
|
type: :development
|
|
119
120
|
prerelease: false
|
|
120
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
122
|
requirements:
|
|
122
|
-
- -
|
|
123
|
+
- - '>='
|
|
123
124
|
- !ruby/object:Gem::Version
|
|
124
125
|
version: '0'
|
|
125
126
|
description: API client to ZoomInfo's 'new API'
|
|
@@ -142,9 +143,7 @@ files:
|
|
|
142
143
|
- lib/zoominfo-ruby.rb
|
|
143
144
|
- lib/zoominfo-ruby/client.rb
|
|
144
145
|
- lib/zoominfo-ruby/company.rb
|
|
145
|
-
- lib/zoominfo-ruby/key_generation.rb
|
|
146
146
|
- lib/zoominfo-ruby/person.rb
|
|
147
|
-
- spec/key_generation_spec.rb
|
|
148
147
|
- spec/spec_helper.rb
|
|
149
148
|
- spec/zoominfo-ruby_spec.rb
|
|
150
149
|
- zoominfo-ruby.gemspec
|
|
@@ -158,17 +157,17 @@ require_paths:
|
|
|
158
157
|
- lib
|
|
159
158
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
159
|
requirements:
|
|
161
|
-
- -
|
|
160
|
+
- - '>='
|
|
162
161
|
- !ruby/object:Gem::Version
|
|
163
162
|
version: '0'
|
|
164
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
164
|
requirements:
|
|
166
|
-
- -
|
|
165
|
+
- - '>='
|
|
167
166
|
- !ruby/object:Gem::Version
|
|
168
167
|
version: '0'
|
|
169
168
|
requirements: []
|
|
170
169
|
rubyforge_project:
|
|
171
|
-
rubygems_version: 2.
|
|
170
|
+
rubygems_version: 2.4.8
|
|
172
171
|
signing_key:
|
|
173
172
|
specification_version: 4
|
|
174
173
|
summary: API client to ZoomInfo
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# As noted in the people_search_query input parameters table, the key is made up of a string consisting of 5 parameters concatenated together, and then encrypted with MD5. Parameters are:
|
|
2
|
-
#
|
|
3
|
-
# The first 2 characters of each search term with a "yes" in the "Key" column, in the order listed in the input parameters table for the given query (below). If the value for a search term has only 1 character, then the key generation should use that single character.
|
|
4
|
-
# Your partner password
|
|
5
|
-
# Today's day of the month (not padded with zero)
|
|
6
|
-
# Today's month (not padded with zero)
|
|
7
|
-
# Today's year (4 digit)
|
|
8
|
-
module ZoomInfo
|
|
9
|
-
module KeyGeneration
|
|
10
|
-
def generate_key(search_terms, password)
|
|
11
|
-
search_term_prefaces = ""
|
|
12
|
-
date_formatted = Time.now.strftime("%-d%-m%-Y")
|
|
13
|
-
search_terms.each do |search_term|
|
|
14
|
-
search_term_prefaces << search_term[0..1]
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
return Digest::MD5.hexdigest(search_term_prefaces + password + date_formatted)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
data/spec/key_generation_spec.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
|
-
|
|
3
|
-
# As noted in the people_search_query input parameters table, the key is made up of a string consisting of 5 parameters concatenated together, and then encrypted with MD5. Parameters are:
|
|
4
|
-
#
|
|
5
|
-
# The first 2 characters of each search term with a "yes" in the "Key" column, in the order listed in the input parameters table for the given query (below). If the value for a search term has only 1 character, then the key generation should use that single character.
|
|
6
|
-
# Your partner password
|
|
7
|
-
# Today's day of the month (not padded with zero)
|
|
8
|
-
# Today's month (not padded with zero)
|
|
9
|
-
# Today's year (4 digit)
|
|
10
|
-
|
|
11
|
-
include ZoomInfo::KeyGeneration
|
|
12
|
-
|
|
13
|
-
describe "API key generation" do
|
|
14
|
-
before do
|
|
15
|
-
Timecop.freeze(Time.local(2012, 5, 15))
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
after do
|
|
19
|
-
Timecop.return
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Using the People Search Query to search the following criteria:
|
|
23
|
-
# "Vice President" for PersonTitle
|
|
24
|
-
# "200714" for IndustryClassification
|
|
25
|
-
# "California" for State
|
|
26
|
-
# The query is run on May 15th, 2012
|
|
27
|
-
# Your assigned partner code is "example"
|
|
28
|
-
# Your assigned password is "testtest"
|
|
29
|
-
|
|
30
|
-
it "generates the correct MD5 key" do
|
|
31
|
-
puts Time.now.inspect
|
|
32
|
-
generate_key(['Vice President', '200714', 'California'], "testtest").should eq "60dee80b3c634c2709dbe102c6fe60ea"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|