whois 1.2.2 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +23 -0
- data/README.rdoc +24 -7
- data/lib/core_ext.rb +4 -3
- data/lib/whois/answer/contact.rb +1 -1
- data/lib/whois/answer/nameserver.rb +41 -0
- data/lib/whois/answer/parser/base.rb +1 -0
- data/lib/whois/answer/parser/jobswhois.verisign-grs.com.rb +2 -2
- data/lib/whois/answer/parser/scanners/iana.rb +145 -0
- data/lib/whois/answer/parser/scanners/verisign.rb +15 -15
- data/lib/whois/answer/parser/whois.crsnic.net.rb +2 -2
- data/lib/whois/answer/parser/whois.denic.de.rb +27 -22
- data/lib/whois/answer/parser/whois.iana.org.rb +56 -16
- data/lib/whois/answer/parser/whois.nic.cc.rb +1 -1
- data/lib/whois/answer/parser/whois.nic.hu.rb +12 -8
- data/lib/whois/answer/parser/whois.nic.it.rb +1 -1
- data/lib/whois/answer/parser/whois.nic.tv.rb +1 -1
- data/lib/whois/answer/parser/whois.publicinterestregistry.net.rb +11 -9
- data/lib/whois/answer/registrar.rb +5 -5
- data/lib/whois/client.rb +0 -1
- data/lib/whois/errors.rb +19 -19
- data/lib/whois/server.rb +119 -47
- data/lib/whois/server/adapters/base.rb +44 -2
- data/lib/whois/version.rb +4 -3
- data/whois.gemspec +9 -18
- metadata +26 -713
- data/Manifest +0 -541
- data/Rakefile +0 -82
- data/data/ip6_del_list +0 -47
- data/data/ip_del_list +0 -245
- data/data/make_ip6_del.pl +0 -38
- data/data/make_ip_del.pl +0 -25
- data/data/make_servers_charset.pl +0 -21
- data/data/make_tld_serv.pl +0 -23
- data/data/servers_charset_list +0 -38
- data/data/tld_serv_list +0 -377
- data/tasks/server.rake +0 -109
- data/test/list_tld +0 -324
- data/test/test_helper.rb +0 -56
- data/test/testcases/referrals/afilias.bz.txt +0 -40
- data/test/testcases/referrals/crsnic.com.txt +0 -210
- data/test/testcases/referrals/crsnic.com_more_servers.txt +0 -210
- data/test/testcases/referrals/crsnic.com_one_server.txt +0 -57
- data/test/testcases/referrals/niccc.cc.txt +0 -59
- data/test/testcases/referrals/pir.org.txt +0 -84
- data/test/testcases/responses/UTF8.txt +0 -10
- data/test/testcases/responses/jobswhois.verisign-grs.com/available.txt +0 -44
- data/test/testcases/responses/jobswhois.verisign-grs.com/property_registrar.txt +0 -54
- data/test/testcases/responses/jobswhois.verisign-grs.com/registered.txt +0 -54
- data/test/testcases/responses/whois.adamsnames.tc/gd/available.txt +0 -2
- data/test/testcases/responses/whois.adamsnames.tc/gd/registered.txt +0 -26
- data/test/testcases/responses/whois.adamsnames.tc/tc/available.txt +0 -2
- data/test/testcases/responses/whois.adamsnames.tc/tc/registered.txt +0 -28
- data/test/testcases/responses/whois.adamsnames.tc/vg/available.txt +0 -2
- data/test/testcases/responses/whois.adamsnames.tc/vg/registered.txt +0 -28
- data/test/testcases/responses/whois.aeda.net.ae/available.txt +0 -1
- data/test/testcases/responses/whois.aeda.net.ae/registered.txt +0 -15
- data/test/testcases/responses/whois.aero/available.txt +0 -1
- data/test/testcases/responses/whois.aero/registered.txt +0 -102
- data/test/testcases/responses/whois.afilias-grs.info/bz/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/bz/registered.txt +0 -122
- data/test/testcases/responses/whois.afilias-grs.info/gi/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/gi/registered.txt +0 -98
- data/test/testcases/responses/whois.afilias-grs.info/hn/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/hn/registered.txt +0 -85
- data/test/testcases/responses/whois.afilias-grs.info/lc/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/lc/registered.txt +0 -83
- data/test/testcases/responses/whois.afilias-grs.info/mn/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/mn/registered.txt +0 -100
- data/test/testcases/responses/whois.afilias-grs.info/sc/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/sc/registered.txt +0 -85
- data/test/testcases/responses/whois.afilias-grs.info/vc/available.txt +0 -1
- data/test/testcases/responses/whois.afilias-grs.info/vc/registered.txt +0 -100
- data/test/testcases/responses/whois.afilias.info/available.txt +0 -1
- data/test/testcases/responses/whois.afilias.info/registered.txt +0 -104
- data/test/testcases/responses/whois.ai/available.txt +0 -2
- data/test/testcases/responses/whois.ai/registered.txt +0 -59
- data/test/testcases/responses/whois.arnes.si/available.txt +0 -29
- data/test/testcases/responses/whois.arnes.si/registered.txt +0 -55
- data/test/testcases/responses/whois.audns.net.au/available.txt +0 -1
- data/test/testcases/responses/whois.audns.net.au/registered.txt +0 -23
- data/test/testcases/responses/whois.biz/available.txt +0 -25
- data/test/testcases/responses/whois.biz/registered.txt +0 -89
- data/test/testcases/responses/whois.cat/available.txt +0 -18
- data/test/testcases/responses/whois.cat/registered.txt +0 -83
- data/test/testcases/responses/whois.cctld.uz/available.txt +0 -12
- data/test/testcases/responses/whois.cctld.uz/registered.txt +0 -123
- data/test/testcases/responses/whois.cira.ca/available.txt +0 -9
- data/test/testcases/responses/whois.cira.ca/registered.txt +0 -47
- data/test/testcases/responses/whois.cnnic.cn/available.txt +0 -1
- data/test/testcases/responses/whois.cnnic.cn/registered.txt +0 -19
- data/test/testcases/responses/whois.crsnic.net/MULTIPLE.txt +0 -3
- data/test/testcases/responses/whois.crsnic.net/available.txt +0 -43
- data/test/testcases/responses/whois.crsnic.net/nameservers_with_no_nameserver.txt +0 -67
- data/test/testcases/responses/whois.crsnic.net/registered.txt +0 -57
- data/test/testcases/responses/whois.crsnic.net/registered_with_multiple_entries.txt +0 -235
- data/test/testcases/responses/whois.denic.de/1-10-0_available.txt +0 -30
- data/test/testcases/responses/whois.denic.de/1-10-0_registered.txt +0 -77
- data/test/testcases/responses/whois.denic.de/available.txt +0 -42
- data/test/testcases/responses/whois.denic.de/error_invalid_domain_name.txt +0 -37
- data/test/testcases/responses/whois.denic.de/property_nameservers_with_ip.txt +0 -67
- data/test/testcases/responses/whois.denic.de/property_technical_contact.txt +0 -70
- data/test/testcases/responses/whois.denic.de/registered.txt +0 -70
- data/test/testcases/responses/whois.dk-hostmaster.dk/available.txt +0 -15
- data/test/testcases/responses/whois.dk-hostmaster.dk/registered.txt +0 -47
- data/test/testcases/responses/whois.dns.be/available.txt +0 -41
- data/test/testcases/responses/whois.dns.be/registered.txt +0 -66
- data/test/testcases/responses/whois.dns.lu/available.txt +0 -26
- data/test/testcases/responses/whois.dns.lu/property_nameservers_with_ip.txt +0 -55
- data/test/testcases/responses/whois.dns.lu/registered.txt +0 -57
- data/test/testcases/responses/whois.dns.pt/available.txt +0 -1
- data/test/testcases/responses/whois.dns.pt/registered.txt +0 -32
- data/test/testcases/responses/whois.domain-registry.nl/available.txt +0 -21
- data/test/testcases/responses/whois.domain-registry.nl/registered.txt +0 -67
- data/test/testcases/responses/whois.domainregistry.ie/available.txt +0 -7
- data/test/testcases/responses/whois.domainregistry.ie/registered.txt +0 -26
- data/test/testcases/responses/whois.domreg.lt/available.txt +0 -18
- data/test/testcases/responses/whois.domreg.lt/property_nameservers_with_ip.txt +0 -32
- data/test/testcases/responses/whois.domreg.lt/registered.txt +0 -37
- data/test/testcases/responses/whois.dot.tk/available.txt +0 -1
- data/test/testcases/responses/whois.dot.tk/registered.txt +0 -28
- data/test/testcases/responses/whois.dotmobiregistry.net/available.txt +0 -25
- data/test/testcases/responses/whois.dotmobiregistry.net/registered.txt +0 -81
- data/test/testcases/responses/whois.educause.edu/available.txt +0 -28
- data/test/testcases/responses/whois.educause.edu/registered.txt +0 -66
- data/test/testcases/responses/whois.eenet.ee/available.txt +0 -6
- data/test/testcases/responses/whois.eenet.ee/registered.txt +0 -27
- data/test/testcases/responses/whois.eu.org/available.txt +0 -1
- data/test/testcases/responses/whois.eu.org/registered.txt +0 -19
- data/test/testcases/responses/whois.eu/available.txt +0 -47
- data/test/testcases/responses/whois.eu/property_nameservers_with_ip.txt +0 -61
- data/test/testcases/responses/whois.eu/registered.txt +0 -63
- data/test/testcases/responses/whois.hkdnr.net.hk/available.txt +0 -1
- data/test/testcases/responses/whois.hkdnr.net.hk/registered.txt +0 -96
- data/test/testcases/responses/whois.iana.org/MULTIPLE.txt +0 -3
- data/test/testcases/responses/whois.iana.org/available.txt +0 -7
- data/test/testcases/responses/whois.iana.org/registered.txt +0 -89
- data/test/testcases/responses/whois.in.ua/available.txt +0 -4
- data/test/testcases/responses/whois.in.ua/registered.txt +0 -16
- data/test/testcases/responses/whois.isnic.is/available.txt +0 -7
- data/test/testcases/responses/whois.isnic.is/registered.txt +0 -57
- data/test/testcases/responses/whois.jprs.jp/jp/available.txt +0 -17
- data/test/testcases/responses/whois.jprs.jp/jp/registered.txt +0 -30
- data/test/testcases/responses/whois.jprs.jp/ne.jp/available.txt +0 -17
- data/test/testcases/responses/whois.jprs.jp/ne.jp/registered.txt +0 -19
- data/test/testcases/responses/whois.meregistry.net/available.txt +0 -1
- data/test/testcases/responses/whois.meregistry.net/registered.txt +0 -94
- data/test/testcases/responses/whois.museum/available.txt +0 -18
- data/test/testcases/responses/whois.museum/registered.txt +0 -92
- data/test/testcases/responses/whois.net.ua/available.txt +0 -7
- data/test/testcases/responses/whois.net.ua/property_nameservers_uppercase.txt +0 -29
- data/test/testcases/responses/whois.net.ua/redirect_to_whois.in.ua.txt +0 -29
- data/test/testcases/responses/whois.net.ua/registered.txt +0 -58
- data/test/testcases/responses/whois.nic-se.se/available.txt +0 -21
- data/test/testcases/responses/whois.nic-se.se/property_nameservers_with_ip.txt +0 -37
- data/test/testcases/responses/whois.nic-se.se/registered.txt +0 -37
- data/test/testcases/responses/whois.nic.ac/available.txt +0 -2
- data/test/testcases/responses/whois.nic.ac/registered.txt +0 -2
- data/test/testcases/responses/whois.nic.af/available.txt +0 -13
- data/test/testcases/responses/whois.nic.af/registered.txt +0 -56
- data/test/testcases/responses/whois.nic.ag/available.txt +0 -1
- data/test/testcases/responses/whois.nic.ag/registered.txt +0 -100
- data/test/testcases/responses/whois.nic.am/available.txt +0 -3
- data/test/testcases/responses/whois.nic.am/registered.txt +0 -42
- data/test/testcases/responses/whois.nic.as/available.txt +0 -12
- data/test/testcases/responses/whois.nic.as/registered.txt +0 -18
- data/test/testcases/responses/whois.nic.asia/available.txt +0 -1
- data/test/testcases/responses/whois.nic.asia/registered.txt +0 -159
- data/test/testcases/responses/whois.nic.at/available.txt +0 -25
- data/test/testcases/responses/whois.nic.at/registered.txt +0 -65
- data/test/testcases/responses/whois.nic.cc/available.txt +0 -44
- data/test/testcases/responses/whois.nic.cc/registered.txt +0 -58
- data/test/testcases/responses/whois.nic.cd/available.txt +0 -1
- data/test/testcases/responses/whois.nic.cd/registered.txt +0 -85
- data/test/testcases/responses/whois.nic.ch/available.txt +0 -2
- data/test/testcases/responses/whois.nic.ch/property_nameservers_with_ip.txt +0 -27
- data/test/testcases/responses/whois.nic.ch/registered.txt +0 -28
- data/test/testcases/responses/whois.nic.co/available.txt +0 -28
- data/test/testcases/responses/whois.nic.co/registered.txt +0 -82
- data/test/testcases/responses/whois.nic.coop/available.txt +0 -33
- data/test/testcases/responses/whois.nic.coop/registered.txt +0 -123
- data/test/testcases/responses/whois.nic.ec/available.txt +0 -1
- data/test/testcases/responses/whois.nic.ec/registered.txt +0 -40
- data/test/testcases/responses/whois.nic.fr/fr/available.txt +0 -19
- data/test/testcases/responses/whois.nic.fr/fr/registered.txt +0 -98
- data/test/testcases/responses/whois.nic.fr/pm/available.txt +0 -19
- data/test/testcases/responses/whois.nic.fr/pm/registered.txt +0 -88
- data/test/testcases/responses/whois.nic.fr/re/available.txt +0 -19
- data/test/testcases/responses/whois.nic.fr/re/registered.txt +0 -83
- data/test/testcases/responses/whois.nic.fr/wf/available.txt +0 -19
- data/test/testcases/responses/whois.nic.fr/wf/registered.txt +0 -88
- data/test/testcases/responses/whois.nic.fr/yt/available.txt +0 -19
- data/test/testcases/responses/whois.nic.fr/yt/registered.txt +0 -88
- data/test/testcases/responses/whois.nic.gl/available.txt +0 -23
- data/test/testcases/responses/whois.nic.gl/registered.txt +0 -40
- data/test/testcases/responses/whois.nic.gov/available.txt +0 -1
- data/test/testcases/responses/whois.nic.gov/registered.txt +0 -5
- data/test/testcases/responses/whois.nic.ht/available.txt +0 -23
- data/test/testcases/responses/whois.nic.ht/registered.txt +0 -59
- data/test/testcases/responses/whois.nic.hu/current/available.txt +0 -3
- data/test/testcases/responses/whois.nic.hu/current/registered.txt +0 -9
- data/test/testcases/responses/whois.nic.hu/v1.99/available.txt +0 -12
- data/test/testcases/responses/whois.nic.hu/v1.99/in_progress.txt +0 -13
- data/test/testcases/responses/whois.nic.hu/v1.99/property_registrant_as_company.txt +0 -65
- data/test/testcases/responses/whois.nic.hu/v1.99/property_registrant_as_private_person.txt +0 -58
- data/test/testcases/responses/whois.nic.hu/v1.99/property_registrant_without_address.txt +0 -58
- data/test/testcases/responses/whois.nic.hu/v1.99/registered.txt +0 -65
- data/test/testcases/responses/whois.nic.im/available.txt +0 -2
- data/test/testcases/responses/whois.nic.im/registered.txt +0 -45
- data/test/testcases/responses/whois.nic.io/available.txt +0 -2
- data/test/testcases/responses/whois.nic.io/registered.txt +0 -2
- data/test/testcases/responses/whois.nic.it/available.txt +0 -2
- data/test/testcases/responses/whois.nic.it/property_admin_contact.txt +0 -53
- data/test/testcases/responses/whois.nic.it/property_registrant_contact.txt +0 -58
- data/test/testcases/responses/whois.nic.it/property_status_active.txt +0 -53
- data/test/testcases/responses/whois.nic.it/property_status_available.txt +0 -2
- data/test/testcases/responses/whois.nic.it/property_technical_contact.txt +0 -53
- data/test/testcases/responses/whois.nic.it/registered.txt +0 -53
- data/test/testcases/responses/whois.nic.kz/available.txt +0 -4
- data/test/testcases/responses/whois.nic.kz/registered.txt +0 -37
- data/test/testcases/responses/whois.nic.la/available.txt +0 -1
- data/test/testcases/responses/whois.nic.la/registered.txt +0 -70
- data/test/testcases/responses/whois.nic.lv/available.txt +0 -7
- data/test/testcases/responses/whois.nic.lv/registered.txt +0 -33
- data/test/testcases/responses/whois.nic.ly/available.txt +0 -1
- data/test/testcases/responses/whois.nic.ly/registered.txt +0 -65
- data/test/testcases/responses/whois.nic.mu/ki/available.txt +0 -20
- data/test/testcases/responses/whois.nic.mu/ki/registered.txt +0 -30
- data/test/testcases/responses/whois.nic.mu/mu/available.txt +0 -9
- data/test/testcases/responses/whois.nic.mu/mu/registered.txt +0 -22
- data/test/testcases/responses/whois.nic.mx/available.txt +0 -11
- data/test/testcases/responses/whois.nic.mx/registered.txt +0 -58
- data/test/testcases/responses/whois.nic.name/available.txt +0 -29
- data/test/testcases/responses/whois.nic.name/registered.txt +0 -36
- data/test/testcases/responses/whois.nic.name/reserved.txt +0 -30
- data/test/testcases/responses/whois.nic.net.sa/available.txt +0 -5
- data/test/testcases/responses/whois.nic.net.sa/registered.txt +0 -17
- data/test/testcases/responses/whois.nic.nu/available.txt +0 -19
- data/test/testcases/responses/whois.nic.nu/registered.txt +0 -35
- data/test/testcases/responses/whois.nic.or.kr/available.txt +0 -10
- data/test/testcases/responses/whois.nic.or.kr/registered.txt +0 -48
- data/test/testcases/responses/whois.nic.org.uy/available.txt +0 -10
- data/test/testcases/responses/whois.nic.org.uy/registered.txt +0 -48
- data/test/testcases/responses/whois.nic.sn/available.txt +0 -3
- data/test/testcases/responses/whois.nic.sn/registered.txt +0 -14
- data/test/testcases/responses/whois.nic.st/available.txt +0 -1
- data/test/testcases/responses/whois.nic.st/registered.txt +0 -47
- data/test/testcases/responses/whois.nic.tel/available.txt +0 -59
- data/test/testcases/responses/whois.nic.tel/registered.txt +0 -111
- data/test/testcases/responses/whois.nic.tl/available.txt +0 -21
- data/test/testcases/responses/whois.nic.tl/registered.txt +0 -29
- data/test/testcases/responses/whois.nic.tr/available.txt +0 -1
- data/test/testcases/responses/whois.nic.tr/property_nameservers_with_trailing_space.txt +0 -42
- data/test/testcases/responses/whois.nic.tr/registered.txt +0 -48
- data/test/testcases/responses/whois.nic.travel/available.txt +0 -25
- data/test/testcases/responses/whois.nic.travel/registered.txt +0 -75
- data/test/testcases/responses/whois.nic.tv/available.txt +0 -44
- data/test/testcases/responses/whois.nic.tv/registered.txt +0 -54
- data/test/testcases/responses/whois.nic.uk/available.txt +0 -20
- data/test/testcases/responses/whois.nic.uk/invalid.txt +0 -22
- data/test/testcases/responses/whois.nic.uk/registered.txt +0 -50
- data/test/testcases/responses/whois.nic.us/available.txt +0 -29
- data/test/testcases/responses/whois.nic.us/registered.txt +0 -99
- data/test/testcases/responses/whois.nic.ve/available.txt +0 -10
- data/test/testcases/responses/whois.nic.ve/registered.txt +0 -48
- data/test/testcases/responses/whois.norid.no/available.txt +0 -5
- data/test/testcases/responses/whois.norid.no/registered.txt +0 -34
- data/test/testcases/responses/whois.pandi.or.id/available.txt +0 -9
- data/test/testcases/responses/whois.pandi.or.id/registered.txt +0 -33
- data/test/testcases/responses/whois.publicinterestregistry.net/available.txt +0 -1
- data/test/testcases/responses/whois.publicinterestregistry.net/registered.txt +0 -85
- data/test/testcases/responses/whois.publicinterestregistry.net/throttle.txt +0 -1
- data/test/testcases/responses/whois.register.bg/available.txt +0 -1
- data/test/testcases/responses/whois.register.bg/property_nameservers_with_ip.txt +0 -42
- data/test/testcases/responses/whois.register.bg/registered.txt +0 -44
- data/test/testcases/responses/whois.registro.br/available.txt +0 -22
- data/test/testcases/responses/whois.registro.br/registered.txt +0 -23
- data/test/testcases/responses/whois.registry.in/available.txt +0 -1
- data/test/testcases/responses/whois.registry.in/registered.txt +0 -83
- data/test/testcases/responses/whois.registrypro.pro/available.txt +0 -20
- data/test/testcases/responses/whois.registrypro.pro/registered.txt +0 -62
- data/test/testcases/responses/whois.ripe.net/fo/available.txt +0 -11
- data/test/testcases/responses/whois.ripe.net/fo/registered.txt +0 -45
- data/test/testcases/responses/whois.ripe.net/gm/available.txt +0 -11
- data/test/testcases/responses/whois.ripe.net/gm/registered.txt +0 -37
- data/test/testcases/responses/whois.ripe.net/mc/available.txt +0 -11
- data/test/testcases/responses/whois.ripe.net/mc/registered.txt +0 -36
- data/test/testcases/responses/whois.ripe.net/sm/available.txt +0 -11
- data/test/testcases/responses/whois.ripe.net/sm/registered.txt +0 -60
- data/test/testcases/responses/whois.ripe.net/va/available.txt +0 -11
- data/test/testcases/responses/whois.ripe.net/va/registered.txt +0 -48
- data/test/testcases/responses/whois.ripn.net/ru/available.txt +0 -9
- data/test/testcases/responses/whois.ripn.net/ru/property_nameservers_with_ip.txt +0 -22
- data/test/testcases/responses/whois.ripn.net/ru/registered.txt +0 -24
- data/test/testcases/responses/whois.ripn.net/su/available.txt +0 -9
- data/test/testcases/responses/whois.ripn.net/su/registered.txt +0 -20
- data/test/testcases/responses/whois.rotld.ro/available.txt +0 -16
- data/test/testcases/responses/whois.rotld.ro/registered.txt +0 -27
- data/test/testcases/responses/whois.samoanic.ws/available.txt +0 -12
- data/test/testcases/responses/whois.samoanic.ws/registered.txt +0 -34
- data/test/testcases/responses/whois.srs.net.nz/available.txt +0 -28
- data/test/testcases/responses/whois.srs.net.nz/invalid.txt +0 -28
- data/test/testcases/responses/whois.srs.net.nz/registered.txt +0 -72
- data/test/testcases/responses/whois.tonic.to/1.txt +0 -1
- data/test/testcases/responses/whois.tonic.to/available.txt +0 -2
- data/test/testcases/responses/whois.tonic.to/incomplete.txt +0 -1
- data/test/testcases/responses/whois.tonic.to/registered.txt +0 -3
- data/test/testcases/responses/whois.za.net/available.txt +0 -9
- data/test/testcases/responses/whois.za.net/registered.txt +0 -42
- data/test/testcases/responses/whois.za.org/available.txt +0 -9
- data/test/testcases/responses/whois.za.org/registered.txt +0 -44
- data/test/whois/answer/contact_test.rb +0 -14
- data/test/whois/answer/parser/base_test.rb +0 -84
- data/test/whois/answer/parser/blank_test.rb +0 -19
- data/test/whois/answer/parser/jobswhois.verisign-grs.com_test.rb +0 -161
- data/test/whois/answer/parser/saudinic.net.sa_test.rb +0 -12
- data/test/whois/answer/parser/whois.adamsnames.tc_test.rb +0 -162
- data/test/whois/answer/parser/whois.aeda.net.ae_test.rb +0 -63
- data/test/whois/answer/parser/whois.aero_test.rb +0 -84
- data/test/whois/answer/parser/whois.afilias-grs.info_test.rb +0 -438
- data/test/whois/answer/parser/whois.afilias.info_test.rb +0 -64
- data/test/whois/answer/parser/whois.ai_test.rb +0 -58
- data/test/whois/answer/parser/whois.arnes.si_test.rb +0 -72
- data/test/whois/answer/parser/whois.audns.net.au_test.rb +0 -70
- data/test/whois/answer/parser/whois.ausregistry.net.au_test.rb +0 -12
- data/test/whois/answer/parser/whois.biz_test.rb +0 -64
- data/test/whois/answer/parser/whois.cat_test.rb +0 -64
- data/test/whois/answer/parser/whois.cctld.uz_test.rb +0 -91
- data/test/whois/answer/parser/whois.cira.ca_test.rb +0 -64
- data/test/whois/answer/parser/whois.cnnic.cn_test.rb +0 -73
- data/test/whois/answer/parser/whois.cnnic.net.cn_test.rb +0 -11
- data/test/whois/answer/parser/whois.crsnic.net_test.rb +0 -186
- data/test/whois/answer/parser/whois.denic.de_test.rb +0 -414
- data/test/whois/answer/parser/whois.dk-hostmaster.dk_test.rb +0 -57
- data/test/whois/answer/parser/whois.dns.be_test.rb +0 -65
- data/test/whois/answer/parser/whois.dns.lu_test.rb +0 -77
- data/test/whois/answer/parser/whois.dns.pt_test.rb +0 -84
- data/test/whois/answer/parser/whois.domain-registry.nl_test.rb +0 -62
- data/test/whois/answer/parser/whois.domainregistry.ie_test.rb +0 -60
- data/test/whois/answer/parser/whois.domreg.lt_test.rb +0 -67
- data/test/whois/answer/parser/whois.dot.tk_test.rb +0 -77
- data/test/whois/answer/parser/whois.dotmobiregistry.net_test.rb +0 -64
- data/test/whois/answer/parser/whois.educause.edu_test.rb +0 -64
- data/test/whois/answer/parser/whois.eenet.ee_test.rb +0 -91
- data/test/whois/answer/parser/whois.eu.org_test.rb +0 -51
- data/test/whois/answer/parser/whois.eu_test.rb +0 -65
- data/test/whois/answer/parser/whois.hkdnr.net.hk_test.rb +0 -77
- data/test/whois/answer/parser/whois.iana.org_test.rb +0 -63
- data/test/whois/answer/parser/whois.in.ua_test.rb +0 -91
- data/test/whois/answer/parser/whois.isnic.is_test.rb +0 -62
- data/test/whois/answer/parser/whois.jprs.jp_test.rb +0 -165
- data/test/whois/answer/parser/whois.meregistry.net_test.rb +0 -64
- data/test/whois/answer/parser/whois.museum_test.rb +0 -64
- data/test/whois/answer/parser/whois.net.ua_test.rb +0 -98
- data/test/whois/answer/parser/whois.nic-se.se_test.rb +0 -71
- data/test/whois/answer/parser/whois.nic.ac_test.rb +0 -126
- data/test/whois/answer/parser/whois.nic.af_test.rb +0 -84
- data/test/whois/answer/parser/whois.nic.ag_test.rb +0 -84
- data/test/whois/answer/parser/whois.nic.am_test.rb +0 -84
- data/test/whois/answer/parser/whois.nic.as_test.rb +0 -63
- data/test/whois/answer/parser/whois.nic.asia_test.rb +0 -69
- data/test/whois/answer/parser/whois.nic.at_test.rb +0 -65
- data/test/whois/answer/parser/whois.nic.cc_test.rb +0 -133
- data/test/whois/answer/parser/whois.nic.cd_test.rb +0 -62
- data/test/whois/answer/parser/whois.nic.ch_test.rb +0 -65
- data/test/whois/answer/parser/whois.nic.co_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.coop_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.ec_test.rb +0 -98
- data/test/whois/answer/parser/whois.nic.fr_test.rb +0 -281
- data/test/whois/answer/parser/whois.nic.gl_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.gov_test.rb +0 -51
- data/test/whois/answer/parser/whois.nic.ht_test.rb +0 -98
- data/test/whois/answer/parser/whois.nic.hu_test.rb +0 -321
- data/test/whois/answer/parser/whois.nic.im_test.rb +0 -60
- data/test/whois/answer/parser/whois.nic.io_test.rb +0 -51
- data/test/whois/answer/parser/whois.nic.it_test.rb +0 -298
- data/test/whois/answer/parser/whois.nic.kz_test.rb +0 -91
- data/test/whois/answer/parser/whois.nic.la_test.rb +0 -98
- data/test/whois/answer/parser/whois.nic.lv_test.rb +0 -65
- data/test/whois/answer/parser/whois.nic.ly_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.mu_test.rb +0 -123
- data/test/whois/answer/parser/whois.nic.mx_test.rb +0 -84
- data/test/whois/answer/parser/whois.nic.name_test.rb +0 -51
- data/test/whois/answer/parser/whois.nic.net.sa_test.rb +0 -84
- data/test/whois/answer/parser/whois.nic.nu_test.rb +0 -59
- data/test/whois/answer/parser/whois.nic.or.kr_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.org.uy_test.rb +0 -91
- data/test/whois/answer/parser/whois.nic.sn_test.rb +0 -190
- data/test/whois/answer/parser/whois.nic.st_test.rb +0 -77
- data/test/whois/answer/parser/whois.nic.tel_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.tl_test.rb +0 -84
- data/test/whois/answer/parser/whois.nic.tr_test.rb +0 -98
- data/test/whois/answer/parser/whois.nic.travel_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.tv_test.rb +0 -132
- data/test/whois/answer/parser/whois.nic.uk_test.rb +0 -76
- data/test/whois/answer/parser/whois.nic.us_test.rb +0 -64
- data/test/whois/answer/parser/whois.nic.ve_test.rb +0 -91
- data/test/whois/answer/parser/whois.norid.no_test.rb +0 -49
- data/test/whois/answer/parser/whois.pandi.or.id_test.rb +0 -79
- data/test/whois/answer/parser/whois.publicinterestregistry.net_test.rb +0 -284
- data/test/whois/answer/parser/whois.register.bg_test.rb +0 -69
- data/test/whois/answer/parser/whois.registro.br_test.rb +0 -51
- data/test/whois/answer/parser/whois.registry.in_test.rb +0 -69
- data/test/whois/answer/parser/whois.registrypro.pro_test.rb +0 -84
- data/test/whois/answer/parser/whois.ripe.net_test.rb +0 -266
- data/test/whois/answer/parser/whois.ripn.net_test.rb +0 -127
- data/test/whois/answer/parser/whois.rotld.ro_test.rb +0 -63
- data/test/whois/answer/parser/whois.samoanic.ws_test.rb +0 -64
- data/test/whois/answer/parser/whois.srs.net.nz_test.rb +0 -79
- data/test/whois/answer/parser/whois.tonic.to_test.rb +0 -125
- data/test/whois/answer/parser/whois.za.net_test.rb +0 -62
- data/test/whois/answer/parser/whois.za.org_test.rb +0 -62
- data/test/whois/answer/parser_test.rb +0 -219
- data/test/whois/answer/super_struct_test.rb +0 -24
- data/test/whois/answer_test.rb +0 -180
- data/test/whois/client_test.rb +0 -96
- data/test/whois/errors_test.rb +0 -23
- data/test/whois/integration_test.rb +0 -31
- data/test/whois/server/adapters/afilias_test.rb +0 -37
- data/test/whois/server/adapters/base_test.rb +0 -15
- data/test/whois/server/adapters/formatted_test.rb +0 -29
- data/test/whois/server/adapters/none_test.rb +0 -22
- data/test/whois/server/adapters/not_implemented_test.rb +0 -16
- data/test/whois/server/adapters/pir_test.rb +0 -37
- data/test/whois/server/adapters/standard_test.rb +0 -36
- data/test/whois/server/adapters/verisign_test.rb +0 -51
- data/test/whois/server/adapters/web_test.rb +0 -17
- data/test/whois/server_test.rb +0 -105
- data/utils/bm_delegation_vs_inheritance.rb +0 -150
- data/utils/bm_shell_vs_pure.rb +0 -14
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
= Changelog
|
2
2
|
|
3
|
+
== Release 1.3.0
|
4
|
+
|
5
|
+
* ADDED: Ability to query IANA for TLD WHOIS information. [aadlani]
|
6
|
+
|
7
|
+
Whois.query(".com")
|
8
|
+
# => IANA WHOIS response for .com TLD
|
9
|
+
|
10
|
+
Whois.query(".invalid")
|
11
|
+
# => IANA WHOIS response for unassigned TLD
|
12
|
+
|
13
|
+
|
14
|
+
* ADDED: Ability to compare two Server adapters for equality.
|
15
|
+
|
16
|
+
Whois::Server.factory(:ipv4, "192.168.1.0/10", "whois.foo") == Whois::Server.factory(:ipv4, "192.168.1.0/10", "whois.foo")
|
17
|
+
# => true
|
18
|
+
|
19
|
+
Whois::Server.factory(:ipv4, "192.168.1.0", "whois.foo") == Whois::Server.factory(:ipv4, "192.168.1.0/10", "whois.foo")
|
20
|
+
# => false
|
21
|
+
|
22
|
+
* CHANGED: Renamed Scanners::VerisignScanner to Scanners::Verisign.
|
23
|
+
|
24
|
+
* CHANGED: Excluded test folder from the packaged .gem file to reduce the size of the final packaged library.
|
25
|
+
|
3
26
|
|
4
27
|
== Release 1.2.2
|
5
28
|
|
data/README.rdoc
CHANGED
@@ -15,7 +15,7 @@ An extensive test suite is available to verify the library correctness but you m
|
|
15
15
|
* Intelligent Ruby client
|
16
16
|
* Flexible and extensible configuration with support for user-defined servers
|
17
17
|
* Powerful whois response parser
|
18
|
-
* Support for IPv6, IPv4 and
|
18
|
+
* Support for IPv6, IPv4, TLD and domain WHOIS queries
|
19
19
|
* Object oriented design
|
20
20
|
* Compatible with Ruby 1.8.6 and newer, including Ruby 1.9
|
21
21
|
|
@@ -48,21 +48,26 @@ Note. This section covers only the essentials for getting started with the Whois
|
|
48
48
|
|
49
49
|
=== Querying the Server
|
50
50
|
|
51
|
-
Whois provides the ability to get WHOIS information for
|
51
|
+
Whois provides the ability to get WHOIS information for TLD, domain names, IPv4 and IPv6 addresses. The client is smart enough to guess the best WHOIS server according to given query, send the request and return the response.
|
52
52
|
|
53
53
|
Check out the following examples:
|
54
54
|
|
55
|
-
# Domain
|
55
|
+
# Domain WHOIS
|
56
56
|
w = Whois::Client.new
|
57
57
|
w.query("google.com")
|
58
58
|
# => #<Whois::Answer>
|
59
59
|
|
60
|
-
#
|
60
|
+
# TLD WHOIS
|
61
|
+
w = Whois::Client.new
|
62
|
+
w.query(".com")
|
63
|
+
# => #<Whois::Answer>
|
64
|
+
|
65
|
+
# IPv4 WHOIS
|
61
66
|
w = Whois::Client.new
|
62
67
|
w.query("74.125.67.100")
|
63
68
|
# => #<Whois::Answer>
|
64
69
|
|
65
|
-
# IPv6
|
70
|
+
# IPv6 WHOIS
|
66
71
|
w = Whois::Client.new
|
67
72
|
w.query("2001:db8::1428:57ab")
|
68
73
|
# => #<Whois::Answer>
|
@@ -71,6 +76,7 @@ The query method is stateless. For this reason, you can safely re-use the same c
|
|
71
76
|
|
72
77
|
w = Whois::Client.new
|
73
78
|
w.query("google.com")
|
79
|
+
w.query(".com")
|
74
80
|
w.query("74.125.67.100")
|
75
81
|
w.query("2001:db8::1428:57ab")
|
76
82
|
w.query("google.it")
|
@@ -80,6 +86,17 @@ If you just need a WHOIS response and you don't care about a full control of the
|
|
80
86
|
Whois.whois("google.com")
|
81
87
|
# => #<Whois::Answer>
|
82
88
|
|
89
|
+
Did I mention you can even use blocks?
|
90
|
+
|
91
|
+
Whois::Client.new do |w|
|
92
|
+
w.query("google.com")
|
93
|
+
w.query(".com")
|
94
|
+
w.query("74.125.67.100")
|
95
|
+
w.query("2001:db8::1428:57ab")
|
96
|
+
w.query("google.it")
|
97
|
+
end
|
98
|
+
|
99
|
+
|
83
100
|
=== Consuming the Answer
|
84
101
|
|
85
102
|
As of release 0.8, a WHOIS query no longer returns a simple string. Instead, you get a full <tt>Whois::Answer</tt> instance and this is just the beginning of the story.
|
@@ -166,9 +183,9 @@ Bug reports and Feature suggestions {are welcomed}[http://github.com/weppos/whoi
|
|
166
183
|
|
167
184
|
== More
|
168
185
|
|
169
|
-
* {Homepage}[http://ruby-whois.org]
|
186
|
+
* {Homepage}[http://www.ruby-whois.org]
|
170
187
|
* {GitHub Repository}[http://github.com/weppos/whois]
|
171
|
-
* {API Documentation}[http://whois.
|
188
|
+
* {API Documentation}[http://www.ruby-whois.org/api/]
|
172
189
|
* {Discussion Group}[http://groups.google.com/group/ruby-whois]
|
173
190
|
|
174
191
|
|
data/lib/core_ext.rb
CHANGED
@@ -2,7 +2,6 @@ unless :to_proc.respond_to?(:to_proc)
|
|
2
2
|
class Symbol
|
3
3
|
# Turns the symbol into a simple proc,
|
4
4
|
# which is especially useful for enumerations.
|
5
|
-
# Extracted from ActiveSupport.
|
6
5
|
#
|
7
6
|
# Examples
|
8
7
|
#
|
@@ -12,6 +11,8 @@ unless :to_proc.respond_to?(:to_proc)
|
|
12
11
|
# # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
|
13
12
|
# people.select(&:manager?).collect(&:salary)
|
14
13
|
#
|
14
|
+
# Extracted from ActiveSupport.
|
15
|
+
#
|
15
16
|
# Returns a Proc which incapsulates the method business logic.
|
16
17
|
def to_proc
|
17
18
|
Proc.new { |*args| args.shift.__send__(self, *args) }
|
@@ -27,9 +28,9 @@ class DateTime
|
|
27
28
|
# See http://github.com/weppos/whois/issues#issue/24
|
28
29
|
unless method_defined?(:to_time)
|
29
30
|
# Attempts to convert self to a Ruby Time object; returns self if out of range of Ruby Time class
|
30
|
-
# Extracted from ActiveSupport.
|
31
|
-
#
|
32
31
|
# If self has an offset other than 0, self will just be returned unaltered, since there's no clean way to map it to a Time.
|
32
|
+
#
|
33
|
+
# Extracted from ActiveSupport.
|
33
34
|
def to_time
|
34
35
|
self.offset == 0 ? ::Time.utc(year, month, day, hour, min, sec) : self
|
35
36
|
end
|
data/lib/whois/answer/contact.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# = Ruby Whois
|
3
|
+
#
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Net
|
8
|
+
# Package:: Whois
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
require 'whois/answer/super_struct'
|
18
|
+
|
19
|
+
|
20
|
+
module Whois
|
21
|
+
class Answer
|
22
|
+
|
23
|
+
#
|
24
|
+
# = Nameserver
|
25
|
+
#
|
26
|
+
# Holds the details of the Name Servers extracted from the WHOIS answer.
|
27
|
+
#
|
28
|
+
# A Nameserver is composed by the following attributes:
|
29
|
+
#
|
30
|
+
# * <tt>:name</tt>:
|
31
|
+
# * <tt>:ipv4</tt>:
|
32
|
+
# * <tt>:ipv6</tt>:
|
33
|
+
#
|
34
|
+
# Be aware that every WHOIS server can return a different number of details
|
35
|
+
# or no details at all.
|
36
|
+
#
|
37
|
+
class Nameserver < SuperStruct.new(:name, :ipv4, :ipv6)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -95,10 +95,10 @@ module Whois
|
|
95
95
|
protected
|
96
96
|
|
97
97
|
def parse
|
98
|
-
Scanners::
|
98
|
+
Scanners::Verisign.new(content_for_scanner).parse
|
99
99
|
end
|
100
100
|
|
101
|
-
# In case of "Response
|
101
|
+
# In case of "SPAM Response", the response contains more than one item
|
102
102
|
# for the same value and the value becomes an Array.
|
103
103
|
def last_useful_item(values)
|
104
104
|
values.is_a?(Array) ? values.last : values
|
@@ -0,0 +1,145 @@
|
|
1
|
+
#
|
2
|
+
# = Ruby Whois
|
3
|
+
#
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Net
|
8
|
+
# Package:: Whois
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
module Whois
|
18
|
+
class Answer
|
19
|
+
class Parser
|
20
|
+
module Scanners
|
21
|
+
|
22
|
+
class Iana
|
23
|
+
|
24
|
+
def initialize(content)
|
25
|
+
@input = StringScanner.new(content)
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse
|
29
|
+
@ast = {}
|
30
|
+
while !@input.eos?
|
31
|
+
trim_newline ||
|
32
|
+
parse_content
|
33
|
+
end
|
34
|
+
@ast
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def parse_content
|
40
|
+
parse_disclaimer ||
|
41
|
+
parse_section ||
|
42
|
+
error("Unexpected token")
|
43
|
+
end
|
44
|
+
|
45
|
+
def trim_newline
|
46
|
+
@input.scan(/\n/)
|
47
|
+
end
|
48
|
+
|
49
|
+
def parse_section
|
50
|
+
if @input.scan(/^(.+):(.+)\n/)
|
51
|
+
|
52
|
+
# Adapt the section's name depending on the first line
|
53
|
+
section = case @input[1].strip
|
54
|
+
when 'contact'
|
55
|
+
@input[2].strip # use the contact type name as identifier
|
56
|
+
when 'created', 'changed'
|
57
|
+
'dates'
|
58
|
+
when 'nserver'
|
59
|
+
'nameservers'
|
60
|
+
else
|
61
|
+
@input[1].strip # Default name is the first label found
|
62
|
+
end
|
63
|
+
|
64
|
+
content = parse_section_pairs
|
65
|
+
@input.match?(/\n+/) || error("Unexpected end of section")
|
66
|
+
@ast[section] = content
|
67
|
+
else
|
68
|
+
false
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def parse_section_pairs
|
73
|
+
# Sets by default the firsts values found in the section parsing bellow
|
74
|
+
section_name, section_value = @input[1].strip, @input[2].strip
|
75
|
+
#contents = {section_name => section_value}
|
76
|
+
|
77
|
+
contents = {}
|
78
|
+
|
79
|
+
while content = parse_section_pair
|
80
|
+
contents.merge!(content)
|
81
|
+
end
|
82
|
+
|
83
|
+
if contents.has_key? section_name
|
84
|
+
contents[section_name].insert(0, "#{section_value}\n")
|
85
|
+
else
|
86
|
+
contents[section_name] = section_value
|
87
|
+
end
|
88
|
+
|
89
|
+
if !contents.empty?
|
90
|
+
contents
|
91
|
+
else
|
92
|
+
false
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
def parse_section_pair
|
98
|
+
if @input.scan(/^(.+):\s*(.+)\n/)
|
99
|
+
key = @input[1].strip
|
100
|
+
values = [@input[2].strip]
|
101
|
+
|
102
|
+
while value = parse_section_pair_newlinevalue(key)
|
103
|
+
values << value
|
104
|
+
end
|
105
|
+
{ key => values.join("\n") }
|
106
|
+
else
|
107
|
+
false
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
def parse_section_pair_newlinevalue(key)
|
113
|
+
if @input.scan(/^#{key}:\s*(.+)\n/)
|
114
|
+
@input[1].strip
|
115
|
+
else
|
116
|
+
false
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def parse_disclaimer
|
121
|
+
if @input.match?(/^\%(.*?)\n/)
|
122
|
+
disclaimer = []
|
123
|
+
while @input.scan(/\%(.*?)\n/)
|
124
|
+
matched = @input[1].strip
|
125
|
+
disclaimer << matched if matched =~ /\w+/
|
126
|
+
end
|
127
|
+
@ast["Disclaimer"] = disclaimer.join(" ")
|
128
|
+
else
|
129
|
+
false
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def error(message)
|
134
|
+
if @input.eos?
|
135
|
+
raise "Unexpected end of input."
|
136
|
+
else
|
137
|
+
raise "#{message}: #{@input.peek(@input.string.length)}"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -19,7 +19,7 @@ module Whois
|
|
19
19
|
class Parser
|
20
20
|
module Scanners
|
21
21
|
|
22
|
-
class
|
22
|
+
class Verisign
|
23
23
|
|
24
24
|
def initialize(content)
|
25
25
|
@input = StringScanner.new(content)
|
@@ -36,7 +36,7 @@ module Whois
|
|
36
36
|
private
|
37
37
|
|
38
38
|
def parse_content
|
39
|
-
|
39
|
+
trim_empty_line ||
|
40
40
|
parse_not_found ||
|
41
41
|
parse_disclaimer ||
|
42
42
|
parse_notice ||
|
@@ -44,13 +44,23 @@ module Whois
|
|
44
44
|
skip_iana_service ||
|
45
45
|
trim_last_update ||
|
46
46
|
trim_fuffa ||
|
47
|
+
|
47
48
|
error("Unexpected token")
|
48
49
|
end
|
49
50
|
|
50
|
-
def
|
51
|
-
@input.
|
51
|
+
def trim_empty_line
|
52
|
+
@input.skip(/^\n/)
|
52
53
|
end
|
53
54
|
|
55
|
+
def error(message)
|
56
|
+
if @input.eos?
|
57
|
+
raise "Unexpected end of input."
|
58
|
+
else
|
59
|
+
raise "#{message}: `#{@input.peek(@input.string.length)}'"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
54
64
|
def trim_last_update
|
55
65
|
@input.scan(/>>>(.*?)<<<\n/)
|
56
66
|
end
|
@@ -81,8 +91,6 @@ module Whois
|
|
81
91
|
lines << @input[1].strip
|
82
92
|
end
|
83
93
|
@ast["Notice"] = lines.join(" ")
|
84
|
-
else
|
85
|
-
false
|
86
94
|
end
|
87
95
|
end
|
88
96
|
|
@@ -93,8 +101,6 @@ module Whois
|
|
93
101
|
lines << @input[1].strip
|
94
102
|
end
|
95
103
|
@ast["Disclaimer"] = lines.join(" ")
|
96
|
-
else
|
97
|
-
false
|
98
104
|
end
|
99
105
|
end
|
100
106
|
|
@@ -107,18 +113,12 @@ module Whois
|
|
107
113
|
@ast[key].is_a?(Array) || @ast[key] = [@ast[key]]
|
108
114
|
@ast[key] << value
|
109
115
|
end
|
110
|
-
else
|
111
|
-
false
|
112
116
|
end
|
113
117
|
end
|
114
118
|
|
115
|
-
def error(message)
|
116
|
-
raise "#{message}: #{@input.peek(@input.string.length)}"
|
117
|
-
end
|
118
|
-
|
119
119
|
end
|
120
120
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
124
|
-
end
|
124
|
+
end
|
@@ -100,10 +100,10 @@ module Whois
|
|
100
100
|
protected
|
101
101
|
|
102
102
|
def parse
|
103
|
-
Scanners::
|
103
|
+
Scanners::Verisign.new(content_for_scanner).parse
|
104
104
|
end
|
105
105
|
|
106
|
-
# In case of "Response
|
106
|
+
# In case of "SPAM Response", the response contains more than one item
|
107
107
|
# for the same value and the value becomes an Array.
|
108
108
|
def last_useful_item(values)
|
109
109
|
values.is_a?(Array) ? values.last : values
|