zoominfo-ruby 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ODBhYjllZTM3N2ExM2I0NmRmNmQzZjc2MzgxMjBmNTNkZDgyMzIzOQ==
5
- data.tar.gz: !binary |-
6
- ODY1OTdmYzAwNWQ4OGYzYmVkM2MxYWU5YzFlNjgxODRiMGVlMmMzZA==
2
+ SHA1:
3
+ metadata.gz: d8eee4d56cdbd9f3ed928a984f73df1c3b531992
4
+ data.tar.gz: 7e6584adb93f32dd8e5103c519ffdf554d985b5f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MzU0YmE1YWJkYTRmNjk5Y2ZhOTA5OWFmM2E0ZmEyODkwMjQ1ODVjYzRiYzIz
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.5
1
+ 0.0.7
@@ -1,5 +1,4 @@
1
1
  require 'httparty'
2
- require_relative 'zoominfo-ruby/key_generation'
3
2
  require_relative 'zoominfo-ruby/client'
4
3
  require_relative 'zoominfo-ruby/company'
5
4
  require_relative 'zoominfo-ruby/person'
@@ -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 prepare_request(query)
16
- key = generate_key(query.values, @api_key)
17
- query.merge!(key: key)
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 = prepare_request(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 = prepare_request(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
@@ -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 = prepare_request(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 = prepare_request(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
 
@@ -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 ruby lib
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.5"
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.authors = ["Ian Morgan"]
13
- s.date = "2014-06-30"
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.require_paths = ["lib"]
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.5
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: 2014-06-30 00:00:00.000000000 Z
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.1.11
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
@@ -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