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 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