nymeria 1.0.0 → 2.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nymeria.rb +135 -42
  3. metadata +9 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0da433cf7627b6ce7836303ebe5ce5e09f60c1557001f133bb0e63bb1c2e3519
4
- data.tar.gz: c552fdc10fbb0435a3432aaf9449597af12993921100eee3fde8dbe89ba782c1
3
+ metadata.gz: e978077892e3db1fc5b2a5a85196e3c0b337fd77deeea3efbc7ade0d73caf581
4
+ data.tar.gz: 31074318571d12fca9c33c762d59bddbdc086350b4653074e4a076235fa823b1
5
5
  SHA512:
6
- metadata.gz: a5dca76b156fea1b15cd8184ab9d50adcba5b1bc3bbce0185e40b49f5177a1a3d069b49bcf088b9cbc7b5de7326706991aa65e10eeec887c86f619af34e00d18
7
- data.tar.gz: 0f389958290b388d7d9653d5ea95912b1f7ac1e8641bc4430cf6bff591b5f819eae7e9e48127154341d5a508c4d286499ab62f7c893edc6a0ffc48eb35854554
6
+ metadata.gz: 90dd2b0a279f240bbfc6c05519aa2f36a9f9f0ef5d84267577695e364d317ff67979c2e1f660ef25b40199bdfb190a72fc6899ca629c8f61a3409d6df4b3cb88
7
+ data.tar.gz: 3da7b5c6d3dcb507fd9f7d5f2f4309dc0abce3c6b9cf369799566ddaafa3b6a75cea06bc83987e1d87eed14537a2320dd51f3a46647cfcd99deba204169331a7
data/lib/nymeria.rb CHANGED
@@ -4,7 +4,7 @@ require 'json'
4
4
  require 'net/http'
5
5
 
6
6
  BASE_URL = 'https://www.nymeria.io/api/v3'
7
- USER_AGENT = 'nymeria.rb/1.0'
7
+ USER_AGENT = 'nymeria.rb/2.0'
8
8
 
9
9
  # Nymeria is our primary module namespace.
10
10
  module Nymeria
@@ -19,6 +19,10 @@ module Nymeria
19
19
  end
20
20
  end
21
21
 
22
+ def self.authenticated?
23
+ self.check_authentication.success?
24
+ end
25
+
22
26
  def self.check_authentication
23
27
  uri = URI("#{BASE_URL}/check-authentication")
24
28
  req = request(Net::HTTP::Post.new(uri))
@@ -29,7 +33,6 @@ module Nymeria
29
33
 
30
34
  response = JSON.parse(res.body)
31
35
 
32
- # Use an open struct here?
33
36
  OpenStruct.new(
34
37
  success?: response['status'] == 'success',
35
38
  error: response['developer_message']
@@ -52,7 +55,6 @@ module Nymeria
52
55
 
53
56
  response = JSON.parse(res.body)
54
57
 
55
- # Use an open struct here?
56
58
  OpenStruct.new(
57
59
  success?: response['status'] == 'success',
58
60
  usage: OpenStruct.new(response['usage']),
@@ -65,53 +67,144 @@ module Nymeria
65
67
  )
66
68
  end
67
69
 
68
- def self.enrich(url, identifier = '')
69
- uri = URI("#{BASE_URL}/enrich")
70
- req = request(Net::HTTP::Post.new(uri))
71
- req.body = JSON.dump({ url: url, identifier: identifier })
72
-
73
- res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
74
- http.request(req)
70
+ # Accepts one or more hashes with any of the following: { url: '', identifier: '', email: '', custom: { ... } }
71
+ def self.enrich(*args)
72
+ if args.nil? || !args.is_a?(Array)
73
+ return OpenStruct.new(
74
+ success?: false,
75
+ error: "Invalid parameter detected. Requires one or more hashes with any of the following keys; :url, ;identifier or :email."
76
+ )
75
77
  end
76
78
 
77
- response = JSON.parse(res.body)
79
+ valid_keys = [:url, :identifier, :email, :custom]
78
80
 
79
- # Use an open struct here?
80
- OpenStruct.new(
81
- success?: response['status'] == 'success',
82
- usage: OpenStruct.new(response['usage']),
83
- data: OpenStruct.new(response['data'])
84
- )
85
- rescue => e
86
- OpenStruct.new(
87
- success?: false,
88
- error: "#{e}"
89
- )
90
- end
81
+ valid_args = args.select do |arg|
82
+ arg.is_a?(Hash) && valid_keys.any? { |k| arg.keys.include?(k) }
83
+ end
91
84
 
92
- def self.bulk_enrich(people)
93
- people = [people] unless people.is_a?(Array)
85
+ if valid_args.length == 0
86
+ return OpenStruct.new(
87
+ success?: false,
88
+ error: "Invalid parameter detected. Requires one or more hashes with any of the following keys; :url, ;identifier or :email."
89
+ )
90
+ end
94
91
 
95
- uri = URI("#{BASE_URL}/bulk-enrich")
96
- req = request(Net::HTTP::Post.new(uri))
97
- req.body = JSON.dump({ people: people })
92
+ # Clean the args; remove any unsupported keys.
93
+ valid_args.each do |arg|
94
+ arg.keys.each do |key|
95
+ arg.delete(key) unless valid_keys.include?(key)
96
+ end
97
+ end
98
98
 
99
- res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
100
- http.request(req)
99
+ if valid_args.length == 1
100
+ #
101
+ # Single Enrichment
102
+ #
103
+ begin
104
+ arg = valid_args.first
105
+
106
+ uri = URI("#{BASE_URL}/enrich")
107
+ req = request(Net::HTTP::Post.new(uri))
108
+ req.body = JSON.dump(arg)
109
+
110
+ res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
111
+ http.request(req)
112
+ end
113
+
114
+ response = JSON.parse(res.body)
115
+
116
+ return OpenStruct.new(
117
+ success?: response['status'] == 'success',
118
+ error: response['error'],
119
+ usage: OpenStruct.new(response['usage']),
120
+ data: OpenStruct.new(response['data'])
121
+ )
122
+ rescue => e
123
+ return OpenStruct.new(
124
+ success?: false,
125
+ error: "#{e}"
126
+ )
127
+ end
128
+ else
129
+ #
130
+ # Bulk Enrichment
131
+ #
132
+ begin
133
+ uri = URI("#{BASE_URL}/bulk-enrich")
134
+ req = request(Net::HTTP::Post.new(uri))
135
+ req.body = JSON.dump({ people: args })
136
+
137
+ res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
138
+ http.request(req)
139
+ end
140
+
141
+ response = JSON.parse(res.body)
142
+
143
+ OpenStruct.new(
144
+ success?: response['status'] == 'success',
145
+ error: response['error'],
146
+ usage: OpenStruct.new(response['usage']),
147
+ data: response.fetch('data', []).map { |data| OpenStruct.new(data) }
148
+ )
149
+ rescue => e
150
+ OpenStruct.new(
151
+ success?: false,
152
+ error: "#{e}"
153
+ )
154
+ end
101
155
  end
156
+ end
102
157
 
103
- response = JSON.parse(res.body)
158
+ def self.people(query)
159
+ begin
160
+ uri = URI("#{BASE_URL}/people")
161
+ uri.query = URI.encode_www_form(query)
162
+
163
+ req = request(Net::HTTP::Get.new(uri))
164
+
165
+ res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
166
+ http.request(req)
167
+ end
168
+
169
+ response = JSON.parse(res.body)
170
+
171
+ OpenStruct.new(
172
+ success?: response['status'] == 'success',
173
+ error: response['error'],
174
+ usage: OpenStruct.new(response['usage']),
175
+ data: response.fetch('data', []).map { |data| OpenStruct.new(data) }
176
+ )
177
+ rescue => e
178
+ OpenStruct.new(
179
+ success?: false,
180
+ error: "#{e}"
181
+ )
182
+ end
183
+ end
104
184
 
105
- # Use an open struct here?
106
- OpenStruct.new(
107
- success?: response['status'] == 'success',
108
- usage: OpenStruct.new(response['usage']),
109
- data: response.fetch('data', []).map { |data| OpenStruct.new(data) }
110
- )
111
- rescue => e
112
- OpenStruct.new(
113
- success?: false,
114
- error: "#{e}"
115
- )
185
+ def self.reveal(uuids)
186
+ begin
187
+ uri = URI("#{BASE_URL}/people")
188
+ req = request(Net::HTTP::Post.new(uri))
189
+ req.body = JSON.dump({ uuids: uuids })
190
+
191
+ res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
192
+ http.request(req)
193
+ end
194
+
195
+ response = JSON.parse(res.body)
196
+
197
+ OpenStruct.new(
198
+ success?: response['status'] == 'success',
199
+ error: response['error'],
200
+ usage: OpenStruct.new(response['usage']),
201
+ data: response.fetch('data', []).map { |data| OpenStruct.new(data) }
202
+ )
203
+ rescue => e
204
+ OpenStruct.new(
205
+ success?: false,
206
+ error: "#{e}"
207
+ )
208
+ end
116
209
  end
117
210
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nymeria
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nymeria, LLC
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-29 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Nymeria enables people to easily discover and connect with people. This
14
14
  gem is a light weight wrapper around Nymeria's API. With this gem you can easily
15
15
  interact with the API to find and verify people's contact information.
16
- email: rubygems@nymeria.io
16
+ email: dev@nymeria.io
17
17
  executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files: []
@@ -22,8 +22,9 @@ files:
22
22
  homepage: https://www.nymeria.io
23
23
  licenses:
24
24
  - MIT
25
- metadata: {}
26
- post_install_message:
25
+ metadata:
26
+ source_code_uri: https://git.nymeria.io/nymeria.rb
27
+ post_install_message:
27
28
  rdoc_options: []
28
29
  require_paths:
29
30
  - lib
@@ -38,8 +39,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
39
  - !ruby/object:Gem::Version
39
40
  version: '0'
40
41
  requirements: []
41
- rubygems_version: 3.1.4
42
- signing_key:
42
+ rubygems_version: 3.2.26
43
+ signing_key:
43
44
  specification_version: 4
44
45
  summary: Easily interact with Nymeria's API to find and verify people's contact information.
45
46
  test_files: []