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.joker.com #85

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.joker.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 WhoisJokerCom < BaseIcannCompliant
self.scanner = Scanners::BaseIcannCompliant, {
pattern_available: /^NOT FOUND\n/
}

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
42 changes: 42 additions & 0 deletions spec/fixtures/responses/whois.joker.com/status_available.expected
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 @@
NOT FOUND
91 changes: 91 additions & 0 deletions spec/fixtures/responses/whois.joker.com/status_registered.expected
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
#domain
%s == "domain.com"

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

#status
%s == :registered

#available?
%s == false

#registered?
%s == true

#created_on
%s %CLASS{time}
%s %TIME{1994-11-27 00:00:00 UTC}

#updated_on
%s %CLASS{time}
%s %TIME{2018-02-21 18:51:25 UTC}

#expires_on
%s %CLASS{time}
%s %TIME{2027-08-03 15:02:10 UTC}

#registrar
%s %CLASS{registrar}
%s.id == "113"
%s.name == "CSL Computer Service Langenbach GmbH d/b/a joker.com"
%s.organization == "CSL Computer Service Langenbach GmbH d/b/a joker.com"
%s.url == "http://joker.com/"

#registrant_contacts
%s %CLASS{array}
%s %SIZE{1}
%s[0] %CLASS{contact}
%s[0].type == Whois::Parser::Contact::TYPE_REGISTRANT
%s[0].name == "Domain Administrator"
%s[0].organization == "CSL Computer Service Langenbach GmbH"
%s[0].address == "Hansaallee 191-193"
%s[0].city == "Duesseldorf"
%s[0].zip == "40549"
%s[0].state == ""
%s[0].country_code == "DE"
%s[0].phone == "+49.211867670"
%s[0].fax == "+49.2118676710"
%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 == "n/a"
%s[0].organization == "CSL Computer Service Langenbach GmbH"
%s[0].address == "Hansaallee 191-193"
%s[0].city == "Duesseldorf"
%s[0].zip == "40549"
%s[0].state == ""
%s[0].country_code == "DE"
%s[0].phone == "+49.211867670"
%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 Administrator"
%s[0].organization == "CSL Computer Service Langenbach GmbH"
%s[0].address == "Hansaallee 191-193"
%s[0].city == "Duesseldorf"
%s[0].zip == "40549"
%s[0].state == "NRW"
%s[0].country_code == "DE"
%s[0].phone == "+49.211867670"
%s[0].fax == "+49.2118676710"
%s[0].email == "[email protected]"

#nameservers
%s %CLASS{array}
%s %SIZE{3}
%s[0] %CLASS{nameserver}
%s[0].name == "j.ns.joker.com"
%s[1] %CLASS{nameserver}
%s[1].name == "k.ns.joker.com"
%s[2] %CLASS{nameserver}
%s[2].name == "l.ns.joker.com"
65 changes: 65 additions & 0 deletions spec/fixtures/responses/whois.joker.com/status_registered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
Domain Name: joker.com
Registry Domain ID: 523683_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.joker.com
Registrar URL: http://joker.com/
Updated Date: 2018-02-21T18:51:25Z
Creation Date: 1994-11-27T00:00:00Z
Registrar Registration Expiration Date: 2027-08-03T15:02:10Z
Registrar: CSL Computer Service Langenbach GmbH d/b/a joker.com
Registrar IANA ID: 113
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +49.21186767447
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Registry Registrant ID:
Registrant Name: Domain Administrator
Registrant Organization: CSL Computer Service Langenbach GmbH
Registrant Street: Hansaallee 191-193
Registrant City: Duesseldorf
Registrant Postal Code: 40549
Registrant Country: DE
Registrant Phone: +49.211867670
Registrant Fax: +49.2118676710
Registrant Email: [email protected]
Registry Admin ID:
Admin Name: n/a
Admin Organization: CSL Computer Service Langenbach GmbH
Admin Street: Hansaallee 191-193
Admin City: Duesseldorf
Admin Postal Code: 40549
Admin Country: DE
Admin Phone: +49.211867670
Admin Email: [email protected]
Registry Tech ID:
Tech Name: Domain Administrator
Tech Organization: CSL Computer Service Langenbach GmbH
Tech Street: Hansaallee 191-193
Tech City: Duesseldorf
Tech State/Province: NRW
Tech Postal Code: 40549
Tech Country: DE
Tech Phone: +49.211867670
Tech Fax: +49.2118676710
Tech Email: [email protected]
Name Server: j.ns.joker.com
Name Server: k.ns.joker.com
Name Server: l.ns.joker.com
DNSSEC: unsigned
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
>>> Last update of WHOIS database: 2018-05-03T10:01:07Z <<<

Query Time: 0.085578
Query Source: 82.99.18.126
WHOIS Source: joker.com live whois service


For more information on Whois status codes, please visit https://icann.org/epp

NOTE: By submitting a WHOIS query, you agree to abide by the following
NOTE: terms of use: You agree that you may use this data only for lawful
NOTE: purposes and that under no circumstances will you use this data to:
NOTE: (1) allow, enable, or otherwise support the transmission of mass
NOTE: unsolicited, commercial advertising or solicitations via direct mail,
NOTE: e-mail, telephone, or facsimile; or (2) enable high volume, automated,
NOTE: electronic processes that apply to Joker.com (or its computer systems).
NOTE: The compilation, repackaging, dissemination or other use of this data
NOTE: is expressly prohibited without the prior written consent of Joker.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.joker.com/status_available.expected
#
# and regenerate the tests with the following rake task
#
# $ rake spec:generate
#

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

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

subject do
file = fixture("responses", "whois.joker.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