whois_worker.rb 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. class WhoisWorker
  2. include Sidekiq::Worker
  3. include Sidekiq::Status::Worker # Important!
  4. include Sidekiq::Benchmark::Worker
  5. sidekiq_options :retry => false, :backtrace => true, expires_in: 1.hour
  6. def perform(domain)
  7. benchmark.whois_metric do
  8. website = Website.find_by(:domain => domain)
  9. if website and Rails.env.production?
  10. whois_data = Whois.whois(website.domain)
  11. if whois_data and whois_data.contacts
  12. contacts = whois_data.contacts
  13. unless contacts.blank?
  14. contacts.each do |contact|
  15. if contact.organization
  16. company = Company.find_or_initialize_by(:company_name => contact.organization, :domain => website.domain)
  17. unless company.id
  18. company.address = contact.address
  19. company.city = contact.city
  20. company.state = contact.state
  21. company.country = contact.country
  22. if company.save
  23. website.company_id = company.id
  24. end
  25. end
  26. if contact.name
  27. name_array = contact.name.split(" ")
  28. person = Person.find_or_initialize_by(:first_name => name_array.first, :last_name => name_array.last, :domain => website.domain)
  29. unless person.id
  30. person.company_id = company.id
  31. person.save
  32. end
  33. end
  34. end
  35. end
  36. end
  37. website.whois = whois_data.to_s
  38. website.save
  39. end
  40. end
  41. end
  42. benchmark.finish
  43. end
  44. end