appending 1.3 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/appending.rb +61 -54
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e018ab896cfc8ade090d1520b22241d6a6ff94af9680466ce659aa5ad6e7fb9b
|
4
|
+
data.tar.gz: 1d9ddd8428910b8085399bbcdbba8198cb05bdc112200714844c29a35bde0ff0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 721ec624c8fe4594ab7fff4aac354fbc0dafb1215abb5c5c51c88d942eb8929877fa4bfe85ae4b9f960166caee84bd480ba318c26b998d3b4b68dd4aa69c6539
|
7
|
+
data.tar.gz: 9a16c08e7ff289a88253b81dafe553aee4792672e4ac83c4325e554a9da743ddf9282f0ee13f9c4d5ce312694268882da2daad730d28aade85777c69268ec2d1
|
data/lib/appending.rb
CHANGED
@@ -183,35 +183,11 @@ module BlackStack
|
|
183
183
|
params = {
|
184
184
|
:email => email,
|
185
185
|
}
|
186
|
-
|
186
|
+
# send HTTP-GET request to @@verifier_url, using the standard HTTP module
|
187
|
+
res = Net::HTTP.get_response(URI.parse("#{url}?email=#{params[:email]}"))
|
187
188
|
parsed = JSON.parse(res.body)
|
188
|
-
parsed
|
189
|
-
|
190
|
-
|
191
|
-
# verify an email address
|
192
|
-
def self.append(fname, lname, domain)
|
193
|
-
ret = []
|
194
|
-
if !catch_all?(domain)
|
195
|
-
EmailVerifier.config do |config|
|
196
|
-
config.verifier_email = "leandro.sardi@expandedventure.com"
|
197
|
-
end
|
198
|
-
[
|
199
|
-
"#{fname}@#{domain}",
|
200
|
-
"#{lname}@#{domain}",
|
201
|
-
|
202
|
-
"#{fname}.#{lname}@#{domain}",
|
203
|
-
"#{lname}.#{fname}@#{domain}",
|
204
|
-
|
205
|
-
"#{fname}#{lname}@#{domain}",
|
206
|
-
"#{lname}#{fname}@#{domain}",
|
207
|
-
|
208
|
-
"#{fname[0]}#{lname}@#{domain}",
|
209
|
-
"#{fname[0]}.#{lname}@#{domain}",
|
210
|
-
].each { |email|
|
211
|
-
ret << email.downcase if verify(email)
|
212
|
-
}
|
213
|
-
end
|
214
|
-
ret
|
189
|
+
#parsed = JSON.parse(`curl --location --request GET '#{url}?email=#{email}' --header 'Content-Type: application/json'`)
|
190
|
+
parsed['status'] == 'success'
|
215
191
|
end
|
216
192
|
|
217
193
|
# This is a support method for the `append` methods.
|
@@ -262,8 +238,8 @@ module BlackStack
|
|
262
238
|
|
263
239
|
# Find a person in the indexes by its full name and company name.
|
264
240
|
# Append all the information in the index row.
|
265
|
-
def self.find_persons_with_full_name(name, cname)
|
266
|
-
l = BlackStack::
|
241
|
+
def self.find_persons_with_full_name(name, cname, l=nil)
|
242
|
+
l = BlackStack::DummyLogger.new if l.nil?
|
267
243
|
|
268
244
|
l.logs "Guessing fname from #{name}... "
|
269
245
|
fname = BlackStack::Appending::cleanup_fname(name)
|
@@ -273,13 +249,13 @@ module BlackStack
|
|
273
249
|
lname = BlackStack::Appending::cleanup_lname(name)
|
274
250
|
l.logf lname
|
275
251
|
|
276
|
-
BlackStack::Appending.find_persons(fname, lname, cname)
|
252
|
+
BlackStack::Appending.find_persons(fname, lname, cname, l)
|
277
253
|
end
|
278
254
|
|
279
255
|
# Find a person in the indexes by its first name, last name and company name.
|
280
256
|
# Append all the information in the index row.
|
281
|
-
def self.find_persons(fname, lname, cname)
|
282
|
-
l = BlackStack::
|
257
|
+
def self.find_persons(fname, lname, cname, l=nil)
|
258
|
+
l = BlackStack::DummyLogger.new if l.nil?
|
283
259
|
h = {
|
284
260
|
:matches => [],
|
285
261
|
:enlapsed_seconds => 0,
|
@@ -313,8 +289,8 @@ module BlackStack
|
|
313
289
|
|
314
290
|
# Find a company in the indexes by its first name, last name and company name.
|
315
291
|
# Append all the information in the index row.
|
316
|
-
def self.find_persons_by_company(cname)
|
317
|
-
l = BlackStack::
|
292
|
+
def self.find_persons_by_company(cname, l=nil)
|
293
|
+
l = BlackStack::DummyLogger.new if l.nil?
|
318
294
|
h = {
|
319
295
|
:matches => [],
|
320
296
|
:enlapsed_seconds => 0,
|
@@ -342,8 +318,8 @@ module BlackStack
|
|
342
318
|
h[:matches].map { |m| BlackStack::Appending::Result.new(m) }
|
343
319
|
end
|
344
320
|
|
345
|
-
def self.find_verified_emails_with_full_name(name, cname)
|
346
|
-
l = BlackStack::
|
321
|
+
def self.find_verified_emails_with_full_name(name, cname, l=nil)
|
322
|
+
l = BlackStack::DummyLogger.new if l.nil?
|
347
323
|
|
348
324
|
l.logs "Guessing fname from #{name}... "
|
349
325
|
fname = BlackStack::Appending::cleanup_fname(name)
|
@@ -353,25 +329,27 @@ module BlackStack
|
|
353
329
|
lname = BlackStack::Appending::cleanup_lname(name)
|
354
330
|
l.logf lname
|
355
331
|
|
356
|
-
BlackStack::Appending.find_verified_emails(fname, lname, cname)
|
332
|
+
BlackStack::Appending.find_verified_emails(fname, lname, cname, l)
|
357
333
|
end
|
358
334
|
|
359
|
-
def self.find_verified_emails(fname, lname, cname)
|
360
|
-
l = BlackStack::
|
335
|
+
def self.find_verified_emails(fname, lname, cname, l=nil)
|
336
|
+
l = BlackStack::DummyLogger.new if l.nil?
|
361
337
|
emails = []
|
362
338
|
domains = []
|
363
339
|
verified_emails = []
|
364
340
|
# get lead emails from in the indexes
|
365
341
|
l.logs ("Searching index emails... ")
|
366
|
-
emails = BlackStack::Appending.find_persons(fname, lname, cname).map { |res|
|
342
|
+
emails = BlackStack::Appending.find_persons(fname, lname, cname, l).map { |res|
|
367
343
|
res.emails
|
368
344
|
}.flatten.uniq.reject { |email|
|
369
345
|
email.to_s.empty?
|
370
|
-
}
|
371
|
-
|
346
|
+
}.uniq
|
347
|
+
# remove duplications
|
348
|
+
emails = emails.map { |email| email.to_s.downcase.strip }.uniq
|
349
|
+
l.logf "done (#{emails.to_s})"
|
372
350
|
# get company domains from the indexes
|
373
351
|
l.logs ("Searching index domains... ")
|
374
|
-
domains = BlackStack::Appending.find_persons_by_company(cname).map { |res|
|
352
|
+
domains = BlackStack::Appending.find_persons_by_company(cname, l).map { |res|
|
375
353
|
res.company_domains
|
376
354
|
}.flatten.reject { |email|
|
377
355
|
email.to_s.empty?
|
@@ -379,22 +357,51 @@ module BlackStack
|
|
379
357
|
# normalize domain
|
380
358
|
domain.to_s.gsub('www.', '').downcase
|
381
359
|
}.uniq
|
382
|
-
|
360
|
+
# remove duplications
|
361
|
+
domains = domains.map { |domain| domain.to_s.downcase.strip }.uniq
|
362
|
+
l.logf "done (#{domains.to_s})"
|
363
|
+
# add emails using fname and lname and company domains
|
364
|
+
# if the domain has not a catch-all address, then add all possible email variations to the array `emails`.
|
365
|
+
# if the domain has a catch-all address, then remove all emails with such a domain from the array `emails`.
|
366
|
+
l.logs ("Building list of candidates... ")
|
367
|
+
domains.each { |domain|
|
368
|
+
if !BlackStack::Appending.catch_all?(domain)
|
369
|
+
emails += [
|
370
|
+
"#{fname}@#{domain}",
|
371
|
+
"#{lname}@#{domain}",
|
372
|
+
"#{fname}.#{lname}@#{domain}",
|
373
|
+
"#{lname}.#{fname}@#{domain}",
|
374
|
+
"#{fname}#{lname}@#{domain}",
|
375
|
+
"#{lname}#{fname}@#{domain}",
|
376
|
+
"#{fname[0]}#{lname}@#{domain}",
|
377
|
+
"#{fname[0]}.#{lname}@#{domain}",
|
378
|
+
]
|
379
|
+
else
|
380
|
+
emails = emails.reject { |email| email =~ /@#{domain}$/ }
|
381
|
+
end
|
382
|
+
}
|
383
|
+
# delete duplicates
|
384
|
+
emails.uniq!
|
385
|
+
l.logf "done (#{emails.to_s})"
|
383
386
|
# verify all the emails found in the indexes
|
384
|
-
l.logs ("Verifying
|
387
|
+
l.logs ("Verifying emails... ")
|
385
388
|
emails.each { |email|
|
386
389
|
l.logs "Verifying #{email}... "
|
387
|
-
|
388
|
-
verified_emails << email if BlackStack::Appending.verify(email) && !BlackStack::Appending.catch_all?(domain)
|
390
|
+
verified_emails << email if BlackStack::Appending.verify(email)
|
389
391
|
l.done
|
392
|
+
break if verified_emails.size > 0
|
390
393
|
}
|
391
394
|
l.done
|
392
|
-
#
|
393
|
-
l.logs ("
|
394
|
-
|
395
|
-
l.logs "
|
396
|
-
|
397
|
-
|
395
|
+
# verify all the emails found in the indexes
|
396
|
+
l.logs ("Double check emails... ")
|
397
|
+
verified_emails.each { |email|
|
398
|
+
l.logs "Double-checking #{email}... "
|
399
|
+
if BlackStack::Appending.verify(email)
|
400
|
+
l.logf 'keep'
|
401
|
+
else
|
402
|
+
verified_emails.delete(email)
|
403
|
+
l.logf "removed"
|
404
|
+
end
|
398
405
|
}
|
399
406
|
l.done
|
400
407
|
# return
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appending
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leandro Daniel Sardi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: csv
|