Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for whois.domaininfo.com #84

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions lib/whois/parsers/whois.domaininfo.com.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#--
# Ruby Whois
#
# An intelligent pure Ruby WHOIS client and parser.
#
# Copyright (c) 2009-2018 Simone Carletti <[email protected]>
#++


require_relative 'base_icann_compliant'


module Whois
class Parsers

class WhoisDomaininfoCom < BaseIcannCompliant
self.scanner = Scanners::BaseIcannCompliant, {
pattern_available: /^Domain does not exist$/
}

property_supported :registrant_contacts do
build_contact("Registrant", Parser::Contact::TYPE_REGISTRANT)
end

property_supported :admin_contacts do
build_contact("Admin", Parser::Contact::TYPE_ADMINISTRATIVE)
end

property_supported :technical_contacts do
build_contact("Tech", Parser::Contact::TYPE_TECHNICAL)
end

private

def build_contact(element, type)
node("#{element} Name") do
Parser::Contact.new(
type: type,
id: node("Registry #{element} ID").presence,
name: value_for_property(element, 'Name'),
organization: value_for_property(element, 'Organization'),
address: value_for_property(element, 'Street'),
city: value_for_property(element, 'City'),
zip: value_for_property(element, 'Postal Code'),
state: value_for_property(element, 'State/Province'),
country_code: value_for_property(element, 'Country'),
phone: value_for_phone_property(element, 'Phone'),
fax: value_for_phone_property(element, 'Fax'),
email: value_for_property(element, 'Email')
)
end
end

end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#domain
%s == nil

#domain_id
%s == nil

#status
%s == :available

#available?
%s == true

#registered?
%s == false

#created_on
%s == nil

#updated_on
%s == nil

#expires_on
%s == nil

#registrar
%s == nil

#registrant_contacts
%s %CLASS{array}
%s == []

#admin_contacts
%s %CLASS{array}
%s == []

#technical_contacts
%s %CLASS{array}
%s == []

#nameservers
%s %CLASS{array}
%s == []
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Domain does not exist
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#domain
%s == "domain.com"

#domain_id
%s == "575988_DOMAIN_COM-VRSN"

#status
%s == :registered

#available?
%s == false

#registered?
%s == true

#created_on
%s %CLASS{time}
%s %TIME{1997-10-25 04:00:00 UTC}

#updated_on
%s %CLASS{time}
%s %TIME{2017-10-19 12:56:58 UTC}

#expires_on
%s %CLASS{time}
%s %TIME{2018-10-24 04:00:00 UTC}

#registrar
%s %CLASS{registrar}
%s.id == "73"
%s.name == "PortsGroup AB"
%s.organization == "PortsGroup AB"
%s.url == "ports.domains"

#registrant_contacts
%s %CLASS{array}
%s %SIZE{1}
%s[0] %CLASS{contact}
%s[0].type == Whois::Parser::Contact::TYPE_REGISTRANT
%s[0].name == "Domain Name Department"
%s[0].organization == "Ports Group AB"
%s[0].address == "Kalkylvagen 3"
%s[0].city == "Molnlycke"
%s[0].zip == "43533"
%s[0].state == ""
%s[0].country_code == "SE"
%s[0].phone == "+46.317202030"
%s[0].fax == ""
%s[0].email == "[email protected]"

#admin_contacts
%s %CLASS{array}
%s %SIZE{1}
%s[0] %CLASS{contact}
%s[0].type == Whois::Parser::Contact::TYPE_ADMINISTRATIVE
%s[0].name == "Domain Name Department"
%s[0].organization == "Ports Group AB"
%s[0].address == "Kalkylvagen 3"
%s[0].city == "Molnlycke"
%s[0].zip == "43533"
%s[0].state == ""
%s[0].country_code == "SE"
%s[0].phone == "+46.317202030"
%s[0].fax == ""
%s[0].email == "[email protected]"

#technical_contacts
%s %CLASS{array}
%s %SIZE{1}
%s[0] %CLASS{contact}
%s[0].type == Whois::Parser::Contact::TYPE_TECHNICAL
%s[0].name == "Domain Name Department"
%s[0].organization == "Ports Group AB"
%s[0].address == "Kalkylvagen 3"
%s[0].city == "Molnlycke"
%s[0].zip == "43533"
%s[0].state == ""
%s[0].country_code == "SE"
%s[0].phone == "+46.317202030"
%s[0].fax == ""
%s[0].email == "[email protected]"

#nameservers
%s %CLASS{array}
%s %SIZE{4}
%s[0] %CLASS{nameserver}
%s[0].name == "dns01.dipcon.com"
%s[1] %CLASS{nameserver}
%s[1].name == "dns02.ports.se"
%s[2] %CLASS{nameserver}
%s[2].name == "dns03.ports.se"
%s[3] %CLASS{nameserver}
%s[3].name == "dns04.ports.net"
98 changes: 98 additions & 0 deletions spec/fixtures/responses/whois.domaininfo.com/status_registered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
Domain Name: domaininfo.com
Registry Domain ID: 575988_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.domaininfo.com
Registrar URL: ports.domains
Updated Date: 2017-10-19T12:56:58Z
Creation Date: 1997-10-25T04:00:00Z
Registrar Registration Expiration Date: 2018-10-24T04:00:00Z
Registrar: PortsGroup AB
Registrar IANA ID: 73
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +46.317202000
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Registry Registrant ID:
Registrant Name: Domain Name Department
Registrant Organization: Ports Group AB
Registrant Street: Kalkylvagen 3
Registrant City: Molnlycke
Registrant State/Province:
Registrant Postal Code: 43533
Registrant Country: SE
Registrant Phone: +46.317202030
Registrant Fax:
Registrant Email: [email protected]
Registry Admin ID:
Admin Name: Domain Name Department
Admin Organization: Ports Group AB
Admin Street: Kalkylvagen 3
Admin City: Molnlycke
Admin State/Province:
Admin Postal Code: 43533
Admin Country: SE
Admin Phone: +46.317202030
Admin Fax:
Admin Email: [email protected]
Registry Tech ID:
Tech Name: Domain Name Department
Tech Organization: Ports Group AB
Tech Street: Kalkylvagen 3
Tech City: Molnlycke
Tech State/Province:
Tech Postal Code: 43533
Tech Country: SE
Tech Phone: +46.317202030
Tech Fax:
Tech Email: [email protected]
Name Server: DNS01.DIPCON.COM
Name Server: DNS02.PORTS.SE
Name Server: DNS03.PORTS.SE
Name Server: DNS04.PORTS.NET
DNSSEC: unsigned
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net
>>> Last update of WHOIS database: 2018-05-03T22:00:01Z

NOTICE: The expiration date displayed in this record is the date the
registrar's sponsorship of the domain name registration in the registry is
currently set to expire. This date does not necessarily reflect the expiration
date of the domain name registrant's agreement with the sponsoring
registrar. Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.

TERMS OF USE: You are not authorized to access or query our Whois
database through the use of electronic processes that are high-volume and
automated except as reasonably necessary to register domain names or
modify existing registrations; the Data in VeriSign Global Registry
Services' ("VeriSign") Whois database is provided by VeriSign for
information purposes only, and to assist persons in obtaining information
about or related to a domain name registration record. VeriSign does not
guarantee its accuracy. By submitting a Whois query, you agree to abide
by the following terms of use: You agree that you may use this Data only
for lawful purposes and that under no circumstances will you use this Data
to: (1) allow, enable, or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail, telephone,
or facsimile; or (2) enable high volume, automated, electronic processes
that apply to VeriSign (or its computer systems). The compilation,
repackaging, dissemination or other use of this Data is expressly
prohibited without the prior written consent of VeriSign. You agree not to
use electronic processes that are automated and high-volume to access or
query the Whois database except as reasonably necessary to register
domain names or modify existing registrations. VeriSign reserves the right
to restrict your access to the Whois database in its sole discretion to ensure
operational stability. VeriSign may restrict or terminate your access to the
Whois database for failure to abide by these terms of use. VeriSign
reserves the right to modify these terms at any time.

The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.----------------------------------------------------------------------------
You agree that you will not reproduce, sell, transfer, or modify any of the
data presented in response to your search request, or use of any such data
for commercial purpose, without the prior express written permission of
Domaininfo AB - domaininfo.com
Register your name in 200+ top level domains at http://www.domaininfo.com domaininfo.com
----------------------------------------------------------------------------

Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# encoding: utf-8

# This file is autogenerated. Do not edit it manually.
# If you want change the content of this file, edit
#
# /spec/fixtures/responses/whois.domaininfo.com/status_available.expected
#
# and regenerate the tests with the following rake task
#
# $ rake spec:generate
#

require 'spec_helper'
require 'whois/parsers/whois.domaininfo.com.rb'

describe Whois::Parsers::WhoisDomaininfoCom, "status_available.expected" do

subject do
file = fixture("responses", "whois.domaininfo.com/status_available.txt")
part = Whois::Record::Part.new(body: File.read(file))
described_class.new(part)
end

describe "#domain" do
it do
expect(subject.domain).to eq(nil)
end
end
describe "#domain_id" do
it do
expect(subject.domain_id).to eq(nil)
end
end
describe "#status" do
it do
expect(subject.status).to eq(:available)
end
end
describe "#available?" do
it do
expect(subject.available?).to eq(true)
end
end
describe "#registered?" do
it do
expect(subject.registered?).to eq(false)
end
end
describe "#created_on" do
it do
expect(subject.created_on).to eq(nil)
end
end
describe "#updated_on" do
it do
expect(subject.updated_on).to eq(nil)
end
end
describe "#expires_on" do
it do
expect(subject.expires_on).to eq(nil)
end
end
describe "#registrar" do
it do
expect(subject.registrar).to eq(nil)
end
end
describe "#registrant_contacts" do
it do
expect(subject.registrant_contacts).to be_a(Array)
expect(subject.registrant_contacts).to eq([])
end
end
describe "#admin_contacts" do
it do
expect(subject.admin_contacts).to be_a(Array)
expect(subject.admin_contacts).to eq([])
end
end
describe "#technical_contacts" do
it do
expect(subject.technical_contacts).to be_a(Array)
expect(subject.technical_contacts).to eq([])
end
end
describe "#nameservers" do
it do
expect(subject.nameservers).to be_a(Array)
expect(subject.nameservers).to eq([])
end
end
end
Loading