whois 2.5.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +1537 -0
- data/README.md +212 -0
- data/Rakefile +3 -3
- data/lib/whois.rb +26 -1
- data/lib/whois/definitions/tlds.rb +3 -2
- data/lib/whois/record.rb +2 -2
- data/lib/whois/record/parser/base_afilias.rb +2 -2
- data/lib/whois/record/parser/base_cocca.rb +9 -1
- data/lib/whois/record/parser/jobswhois.verisign-grs.com.rb +6 -2
- data/lib/whois/record/parser/kero.yachay.pe.rb +1 -1
- data/lib/whois/record/parser/whois.adamsnames.tc.rb +1 -1
- data/lib/whois/record/parser/whois.aeda.net.ae.rb +1 -1
- data/lib/whois/record/parser/whois.ai.rb +1 -1
- data/lib/whois/record/parser/whois.arnes.si.rb +1 -1
- data/lib/whois/record/parser/whois.ati.tn.rb +133 -0
- data/lib/whois/record/parser/whois.biz.rb +1 -1
- data/lib/whois/record/parser/whois.cat.rb +1 -1
- data/lib/whois/record/parser/whois.cctld.uz.rb +4 -3
- data/lib/whois/record/parser/whois.centralnic.com.rb +1 -3
- data/lib/whois/record/parser/whois.cnnic.cn.rb +1 -1
- data/lib/whois/record/parser/whois.co.ca.rb +1 -1
- data/lib/whois/record/parser/whois.co.pl.rb +1 -1
- data/lib/whois/record/parser/whois.co.ug.rb +13 -12
- data/lib/whois/record/parser/whois.crsnic.net.rb +6 -2
- data/lib/whois/record/parser/whois.denic.de.rb +1 -1
- data/lib/whois/record/parser/whois.dk-hostmaster.dk.rb +1 -1
- data/lib/whois/record/parser/whois.dns.be.rb +2 -2
- data/lib/whois/record/parser/whois.dns.lu.rb +2 -2
- data/lib/whois/record/parser/whois.dns.pl.rb +2 -2
- data/lib/whois/record/parser/whois.dns.pt.rb +1 -1
- data/lib/whois/record/parser/whois.domain-registry.nl.rb +1 -1
- data/lib/whois/record/parser/whois.domain.kg.rb +1 -1
- data/lib/whois/record/parser/whois.domainregistry.my.rb +1 -1
- data/lib/whois/record/parser/whois.domreg.lt.rb +2 -2
- data/lib/whois/record/parser/whois.dot.tk.rb +1 -1
- data/lib/whois/record/parser/whois.dreamhost.com.rb +1 -1
- data/lib/whois/record/parser/whois.educause.edu.rb +128 -20
- data/lib/whois/record/parser/whois.eenet.ee.rb +1 -1
- data/lib/whois/record/parser/whois.eu.rb +2 -2
- data/lib/whois/record/parser/whois.fi.rb +1 -1
- data/lib/whois/record/parser/whois.gg.rb +1 -1
- data/lib/whois/record/parser/whois.godaddy.com.rb +1 -1
- data/lib/whois/record/parser/whois.hkirc.hk.rb +12 -13
- data/lib/whois/record/parser/whois.iana.org.rb +2 -1
- data/lib/whois/record/parser/whois.in.ua.rb +1 -1
- data/lib/whois/record/parser/whois.isnic.is.rb +1 -1
- data/lib/whois/record/parser/whois.isoc.org.il.rb +1 -1
- data/lib/whois/record/parser/whois.ja.net.rb +2 -1
- data/lib/whois/record/parser/whois.je.rb +1 -1
- data/lib/whois/record/parser/whois.jprs.jp.rb +1 -1
- data/lib/whois/record/parser/whois.kenic.or.ke.rb +1 -1
- data/lib/whois/record/parser/whois.markmonitor.com.rb +1 -1
- data/lib/whois/record/parser/whois.meregistry.net.rb +1 -1
- data/lib/whois/record/parser/whois.museum.rb +1 -1
- data/lib/whois/record/parser/whois.na-nic.com.na.rb +1 -0
- data/lib/whois/record/parser/whois.netcom.cm.rb +1 -1
- data/lib/whois/record/parser/whois.nic-se.se.rb +1 -1
- data/lib/whois/record/parser/whois.nic.am.rb +1 -1
- data/lib/whois/record/parser/whois.nic.as.rb +1 -1
- data/lib/whois/record/parser/whois.nic.asia.rb +1 -1
- data/lib/whois/record/parser/whois.nic.at.rb +1 -1
- data/lib/whois/record/parser/whois.nic.cc.rb +1 -1
- data/lib/whois/record/parser/whois.nic.cd.rb +1 -1
- data/lib/whois/record/parser/whois.nic.ch.rb +2 -2
- data/lib/whois/record/parser/whois.nic.ci.rb +1 -1
- data/lib/whois/record/parser/whois.nic.ck.rb +1 -1
- data/lib/whois/record/parser/whois.nic.cl.rb +1 -1
- data/lib/whois/record/parser/whois.nic.co.rb +1 -1
- data/lib/whois/record/parser/whois.nic.coop.rb +1 -1
- data/lib/whois/record/parser/whois.nic.cz.rb +11 -9
- data/lib/whois/record/parser/whois.nic.ec.rb +1 -1
- data/lib/whois/record/parser/whois.nic.gl.rb +2 -63
- data/lib/whois/record/parser/whois.nic.hu.rb +3 -3
- data/lib/whois/record/parser/whois.nic.im.rb +1 -1
- data/lib/whois/record/parser/whois.nic.ir.rb +1 -1
- data/lib/whois/record/parser/whois.nic.it.rb +4 -4
- data/lib/whois/record/parser/whois.nic.kz.rb +1 -1
- data/lib/whois/record/parser/whois.nic.li.rb +1 -1
- data/lib/whois/record/parser/whois.nic.lv.rb +1 -1
- data/lib/whois/record/parser/whois.nic.ly.rb +1 -1
- data/lib/whois/record/parser/whois.nic.md.rb +5 -5
- data/lib/whois/record/parser/whois.nic.mg.rb +1 -1
- data/lib/whois/record/parser/whois.nic.mx.rb +1 -1
- data/lib/whois/record/parser/whois.nic.net.sa.rb +1 -1
- data/lib/whois/record/parser/whois.nic.nu.rb +1 -1
- data/lib/whois/record/parser/whois.nic.org.uy.rb +1 -1
- data/lib/whois/record/parser/whois.nic.sl.rb +1 -1
- data/lib/whois/record/parser/whois.nic.sm.rb +1 -1
- data/lib/whois/record/parser/whois.nic.sn.rb +6 -3
- data/lib/whois/record/parser/whois.nic.so.rb +1 -1
- data/lib/whois/record/parser/whois.nic.st.rb +1 -1
- data/lib/whois/record/parser/whois.nic.tel.rb +1 -1
- data/lib/whois/record/parser/whois.nic.tr.rb +2 -1
- data/lib/whois/record/parser/whois.nic.travel.rb +1 -1
- data/lib/whois/record/parser/whois.nic.tv.rb +1 -1
- data/lib/whois/record/parser/whois.nic.uk.rb +11 -4
- data/lib/whois/record/parser/whois.nic.us.rb +1 -1
- data/lib/whois/record/parser/whois.nic.ve.rb +5 -3
- data/lib/whois/record/parser/whois.pandi.or.id.rb +5 -4
- data/lib/whois/record/parser/whois.pnina.ps.rb +8 -8
- data/lib/whois/record/parser/whois.register.bg.rb +6 -5
- data/lib/whois/record/parser/whois.registry.hm.rb +1 -1
- data/lib/whois/record/parser/whois.registry.om.rb +125 -0
- data/lib/whois/record/parser/whois.registrypro.pro.rb +1 -1
- data/lib/whois/record/parser/whois.ripe.net.rb +1 -1
- data/lib/whois/record/parser/whois.rnids.rs.rb +1 -1
- data/lib/whois/record/parser/whois.rotld.ro.rb +5 -4
- data/lib/whois/record/parser/whois.samoanic.ws.rb +1 -1
- data/lib/whois/record/parser/whois.sgnic.sg.rb +16 -16
- data/lib/whois/record/parser/whois.sk-nic.sk.rb +15 -8
- data/lib/whois/record/parser/whois.smallregistry.net.rb +10 -2
- data/lib/whois/record/parser/whois.srs.net.nz.rb +38 -20
- data/lib/whois/record/parser/whois.tcinet.ru.rb +4 -2
- data/lib/whois/record/parser/whois.thnic.co.th.rb +5 -4
- data/lib/whois/record/parser/whois.tld.ee.rb +7 -7
- data/lib/whois/record/parser/whois.tonic.to.rb +2 -3
- data/lib/whois/record/parser/whois.twnic.net.tw.rb +1 -1
- data/lib/whois/record/parser/whois.tznic.or.tz.rb +8 -4
- data/lib/whois/record/parser/whois.usp.ac.fj.rb +5 -4
- data/lib/whois/record/parser/whois.za.net.rb +1 -1
- data/lib/whois/record/parser/whois.za.org.rb +1 -1
- data/lib/whois/record/scanners/whois.ati.tn.rb +46 -0
- data/lib/whois/record/scanners/whois.cira.ca.rb +0 -1
- data/lib/whois/record/scanners/whois.registry.om.rb +39 -0
- data/lib/whois/record/scanners/whois.rnids.rs.rb +5 -0
- data/lib/whois/record/super_struct.rb +8 -5
- data/lib/whois/server/adapters/base.rb +53 -53
- data/lib/whois/version.rb +2 -2
- data/spec/fixtures/responses/whois.ati.tn/status_available.expected +57 -0
- data/spec/fixtures/responses/whois.ati.tn/status_available.txt +4 -0
- data/spec/fixtures/responses/whois.ati.tn/status_registered.expected +122 -0
- data/spec/fixtures/responses/whois.ati.tn/status_registered.txt +36 -0
- data/spec/fixtures/responses/whois.cctld.uz/property_expires_on_dash.expected +2 -0
- data/spec/fixtures/responses/whois.cctld.uz/property_expires_on_dash.txt +123 -0
- data/spec/fixtures/responses/whois.cctld.uz/property_status_reserved.expected +8 -0
- data/spec/fixtures/responses/whois.cctld.uz/property_status_reserved.txt +123 -0
- data/spec/fixtures/responses/{whois.nic.uk/property_status_registered.expected → whois.co.ug/property_status_active.expected} +0 -0
- data/spec/fixtures/responses/whois.co.ug/property_status_active.txt +35 -0
- data/spec/fixtures/responses/whois.co.ug/property_status_unconfirmed.expected +8 -0
- data/spec/fixtures/responses/whois.co.ug/property_status_unconfirmed.txt +30 -0
- data/spec/fixtures/responses/whois.dns.be/{response_throttled.expected → response_throttled_hourly.expected} +0 -0
- data/spec/fixtures/responses/whois.dns.be/{response_throttled_max.txt → response_throttled_hourly.txt} +0 -0
- data/spec/fixtures/responses/whois.dns.be/{response_throttled_max.expected → response_throttled_limit.expected} +0 -0
- data/spec/fixtures/responses/whois.dns.be/{response_throttled.txt → response_throttled_limit.txt} +0 -0
- data/spec/fixtures/responses/whois.dns.hr/status_registered.expected +13 -11
- data/spec/fixtures/responses/whois.domain-registry.nl/status_available.expected +4 -0
- data/spec/fixtures/responses/whois.domain-registry.nl/status_redemption.expected +4 -0
- data/spec/fixtures/responses/whois.educause.edu/fixture1.txt +63 -0
- data/spec/fixtures/responses/whois.educause.edu/fixture2.txt +66 -0
- data/spec/fixtures/responses/whois.educause.edu/fixture3.txt +67 -0
- data/spec/fixtures/responses/whois.educause.edu/fixture4.txt +68 -0
- data/spec/fixtures/responses/whois.educause.edu/fixture5.txt +66 -0
- data/spec/fixtures/responses/whois.educause.edu/fixture6.txt +66 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant.expected +27 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant.txt +63 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_with_additional_organization.expected +28 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_with_additional_organization.txt +66 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_without_address.expected +26 -0
- data/spec/fixtures/responses/whois.educause.edu/{property_registrant_without_address.txt → property_contact_registrant_without_address.txt} +0 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_without_zip.expected +27 -0
- data/spec/fixtures/responses/whois.educause.edu/{property_registrant_without_zip.txt → property_contact_registrant_without_zip.txt} +0 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts.expected +31 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts.txt +63 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case1.expected +31 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case1.txt +66 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case2.expected +32 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case2.txt +67 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case3.expected +32 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case3.txt +66 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case4.expected +32 -0
- data/spec/fixtures/responses/whois.educause.edu/property_contacts_case4.txt +68 -0
- data/spec/fixtures/responses/whois.educause.edu/status_available.expected +34 -0
- data/spec/fixtures/responses/whois.educause.edu/status_registered.expected +70 -8
- data/spec/fixtures/responses/whois.hkirc.hk/property_expires_on_null.expected +2 -0
- data/spec/fixtures/responses/whois.hkirc.hk/property_expires_on_null.txt +104 -0
- data/spec/fixtures/responses/whois.na-nic.com.na/property_status_active.expected +8 -0
- data/spec/fixtures/responses/whois.na-nic.com.na/property_status_active.txt +54 -0
- data/spec/fixtures/responses/whois.na-nic.com.na/property_status_delegated.expected +8 -0
- data/spec/fixtures/responses/whois.na-nic.com.na/property_status_delegated.txt +86 -0
- data/spec/fixtures/responses/whois.na-nic.com.na/status_registered.expected +9 -2
- data/spec/fixtures/responses/whois.na-nic.com.na/status_registered.txt +17 -7
- data/spec/fixtures/responses/whois.nc/property_contact_without_state.txt +21 -0
- data/spec/fixtures/responses/whois.nic.af/status_registered.expected +14 -3
- data/spec/fixtures/responses/whois.nic.af/status_registered.txt +59 -40
- data/spec/fixtures/responses/whois.nic.cx/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.gl/status_available.expected +7 -0
- data/spec/fixtures/responses/whois.nic.gl/status_registered.expected +14 -0
- data/spec/fixtures/responses/whois.nic.gs/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.ht/status_registered.expected +9 -2
- data/spec/fixtures/responses/whois.nic.ht/status_registered.txt +58 -44
- data/spec/fixtures/responses/whois.nic.ki/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.ms/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.mu/status_registered.expected +9 -2
- data/spec/fixtures/responses/whois.nic.mu/status_registered.txt +52 -8
- data/spec/fixtures/responses/whois.nic.net.nf/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.net.ng/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.net.sb/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.nic.tl/status_registered.expected +9 -2
- data/spec/fixtures/responses/whois.nic.tl/status_registered.txt +42 -5
- data/spec/fixtures/responses/whois.nic.uk/property_nameservers_with_ip.txt +11 -7
- data/spec/fixtures/responses/whois.nic.uk/property_registrant_type_individual.txt +45 -0
- data/spec/fixtures/responses/whois.nic.uk/{property_status_registered.txt → property_registrant_type_unknown.txt} +5 -5
- data/spec/fixtures/responses/whois.nic.uk/property_status_missing.txt +2 -2
- data/spec/fixtures/responses/whois.nic.uk/property_status_no_status_listed.txt +2 -2
- data/spec/fixtures/responses/whois.nic.uk/property_status_registered_until_expiry_date.txt +18 -13
- data/spec/fixtures/responses/whois.nic.uk/property_status_suspended.txt +51 -51
- data/spec/fixtures/responses/whois.nic.uk/status_available.txt +2 -2
- data/spec/fixtures/responses/whois.nic.uk/status_invalid.txt +2 -2
- data/spec/fixtures/responses/whois.nic.uk/status_registered.expected +2 -2
- data/spec/fixtures/responses/whois.nic.uk/status_registered.txt +5 -5
- data/spec/fixtures/responses/whois.nic.uk/status_reserved.expected +1 -1
- data/spec/fixtures/responses/whois.nic.uk/status_reserved.txt +2 -2
- data/spec/fixtures/responses/whois.nic.uk/status_suspended.expected +1 -1
- data/spec/fixtures/responses/whois.nic.uk/status_suspended.txt +51 -51
- data/spec/fixtures/responses/whois.registry.gy/status_registered.expected +7 -0
- data/spec/fixtures/responses/whois.registry.om/status_available.expected +56 -0
- data/spec/fixtures/responses/whois.registry.om/status_available.txt +1 -0
- data/spec/fixtures/responses/whois.registry.om/status_registered.expected +100 -0
- data/spec/fixtures/responses/whois.registry.om/status_registered.txt +18 -0
- data/spec/fixtures/responses/whois.rnids.rs/property_nameservers_hyphenated.expected +9 -0
- data/spec/fixtures/responses/whois.rnids.rs/property_nameservers_hyphenated.txt +36 -0
- data/spec/fixtures/responses/whois.rnids.rs/token_whois_privacy.expected +11 -0
- data/spec/fixtures/responses/whois.rnids.rs/token_whois_privacy.txt +36 -0
- data/spec/fixtures/responses/whois.srs.net.nz/response_throttled.expected +2 -0
- data/spec/fixtures/responses/whois.srs.net.nz/response_throttled.txt +27 -0
- data/spec/fixtures/responses/whois.srs.net.nz/status_available.expected +4 -0
- data/spec/fixtures/responses/whois.srs.net.nz/status_available.txt +2 -3
- data/spec/fixtures/responses/whois.srs.net.nz/status_invalid.expected +4 -0
- data/spec/fixtures/responses/whois.srs.net.nz/status_invalid.txt +2 -3
- data/spec/fixtures/responses/whois.srs.net.nz/status_registered.expected +6 -2
- data/spec/fixtures/responses/whois.srs.net.nz/status_registered.txt +5 -4
- data/spec/fixtures/responses/whois.tznic.or.tz/property_status_expired.expected +8 -0
- data/spec/fixtures/responses/whois.tznic.or.tz/property_status_expired.txt +56 -0
- data/spec/support/helpers/spec_helper.rb +0 -5
- data/spec/tlds +4 -2
- data/spec/whois/record/contact_spec.rb +8 -8
- data/spec/whois/record/nameserver_spec.rb +6 -6
- data/spec/whois/record/parser/base_spec.rb +11 -11
- data/spec/whois/record/parser/blank_spec.rb +1 -1
- data/spec/whois/record/parser/responses/whois.ati.tn/status_available_spec.rb +108 -0
- data/spec/whois/record/parser/responses/whois.ati.tn/status_registered_spec.rb +173 -0
- data/spec/whois/record/parser/responses/whois.cctld.uz/property_expires_on_dash_spec.rb +29 -0
- data/spec/whois/record/parser/responses/whois.cctld.uz/property_status_reserved_spec.rb +39 -0
- data/spec/whois/record/parser/responses/{whois.nic.uk/property_status_registered_spec.rb → whois.co.ug/property_status_active_spec.rb} +4 -4
- data/spec/whois/record/parser/responses/whois.co.ug/property_status_unconfirmed_spec.rb +39 -0
- data/spec/whois/record/parser/responses/whois.dns.be/{response_throttled_spec.rb → response_throttled_hourly_spec.rb} +3 -3
- data/spec/whois/record/parser/responses/whois.dns.be/{response_throttled_max_spec.rb → response_throttled_limit_spec.rb} +3 -3
- data/spec/whois/record/parser/responses/whois.dns.hr/status_registered_spec.rb +13 -11
- data/spec/whois/record/parser/responses/whois.domain-registry.nl/status_available_spec.rb +5 -0
- data/spec/whois/record/parser/responses/whois.domain-registry.nl/status_redemption_spec.rb +5 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_spec.rb +44 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_with_additional_organization_spec.rb +44 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_without_address_spec.rb +44 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_without_zip_spec.rb +44 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case1_spec.rb +43 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case2_spec.rb +43 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case3_spec.rb +43 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case4_spec.rb +43 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_spec.rb +43 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/status_available_spec.rb +48 -0
- data/spec/whois/record/parser/responses/whois.educause.edu/status_registered_spec.rb +83 -8
- data/spec/whois/record/parser/responses/whois.hkirc.hk/property_expires_on_null_spec.rb +29 -0
- data/spec/whois/record/parser/responses/whois.na-nic.com.na/property_status_active_spec.rb +39 -0
- data/spec/whois/record/parser/responses/whois.na-nic.com.na/property_status_delegated_spec.rb +39 -0
- data/spec/whois/record/parser/responses/whois.na-nic.com.na/status_registered_spec.rb +10 -2
- data/spec/whois/record/parser/responses/whois.nic.af/status_registered_spec.rb +15 -3
- data/spec/whois/record/parser/responses/whois.nic.cx/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.gl/status_available_spec.rb +10 -0
- data/spec/whois/record/parser/responses/whois.nic.gl/status_registered_spec.rb +18 -0
- data/spec/whois/record/parser/responses/whois.nic.gs/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.ht/status_registered_spec.rb +10 -2
- data/spec/whois/record/parser/responses/whois.nic.ki/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.ms/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.mu/status_registered_spec.rb +10 -2
- data/spec/whois/record/parser/responses/whois.nic.net.nf/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.net.ng/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.net.sb/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.nic.tl/status_registered_spec.rb +10 -2
- data/spec/whois/record/parser/responses/whois.nic.uk/status_registered_spec.rb +2 -2
- data/spec/whois/record/parser/responses/whois.nic.uk/status_reserved_spec.rb +1 -1
- data/spec/whois/record/parser/responses/whois.nic.uk/status_suspended_spec.rb +1 -1
- data/spec/whois/record/parser/responses/whois.registry.gy/status_registered_spec.rb +8 -0
- data/spec/whois/record/parser/responses/whois.registry.om/status_available_spec.rb +107 -0
- data/spec/whois/record/parser/responses/whois.registry.om/status_registered_spec.rb +151 -0
- data/spec/whois/record/parser/responses/whois.rnids.rs/property_nameservers_hyphenated_spec.rb +36 -0
- data/spec/whois/record/parser/responses/whois.rnids.rs/token_whois_privacy_spec.rb +42 -0
- data/spec/whois/record/parser/responses/whois.srs.net.nz/response_throttled_spec.rb +29 -0
- data/spec/whois/record/parser/responses/whois.srs.net.nz/status_available_spec.rb +5 -0
- data/spec/whois/record/parser/responses/whois.srs.net.nz/status_invalid_spec.rb +5 -0
- data/spec/whois/record/parser/responses/whois.srs.net.nz/status_registered_spec.rb +7 -2
- data/spec/whois/record/parser/responses/whois.tznic.or.tz/property_status_expired_spec.rb +39 -0
- data/spec/whois/record/parser_spec.rb +25 -25
- data/spec/whois/record/part_spec.rb +5 -5
- data/spec/whois/record/registrar_spec.rb +8 -8
- data/spec/whois/record/super_struct_spec.rb +0 -1
- data/spec/whois/record_spec.rb +12 -12
- data/spec/whois/server/adapters/afilias_spec.rb +2 -2
- data/spec/whois/server/adapters/formatted_spec.rb +1 -1
- data/spec/whois/server/adapters/pir_spec.rb +2 -2
- data/spec/whois/server/adapters/standard_spec.rb +1 -1
- data/spec/whois/server/adapters/verisign_spec.rb +2 -2
- data/whois.gemspec +6 -6
- metadata +97 -20
- data/.rspec +0 -1
- data/spec/fixtures/responses/whois.educause.edu/property_registrant_without_address.expected +0 -11
- data/spec/fixtures/responses/whois.educause.edu/property_registrant_without_zip.expected +0 -12
- data/spec/whois/record/parser/responses/whois.educause.edu/property_registrant_without_address_spec.rb +0 -38
- data/spec/whois/record/parser/responses/whois.educause.edu/property_registrant_without_zip_spec.rb +0 -39
@@ -68,7 +68,7 @@ module Whois
|
|
68
68
|
property_supported :nameservers do
|
69
69
|
content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |line|
|
70
70
|
name, ipv4 = line.split(/\s+/)
|
71
|
-
Record::Nameserver.new(name, ipv4)
|
71
|
+
Record::Nameserver.new(:name => name, :ipv4 => ipv4)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
@@ -31,6 +31,7 @@ module Whois
|
|
31
31
|
if content_for_scanner =~ /^Status: (.+?)\n/
|
32
32
|
case $1.downcase
|
33
33
|
when "active" then :registered
|
34
|
+
when "reserved" then :reserved
|
34
35
|
else
|
35
36
|
Whois.bug!(ParserError, "Unknown status `#{$1}'.")
|
36
37
|
end
|
@@ -57,8 +58,8 @@ module Whois
|
|
57
58
|
property_not_supported :updated_on
|
58
59
|
|
59
60
|
property_supported :expires_on do
|
60
|
-
if content_for_scanner =~ /^Expiration Date
|
61
|
-
Time.parse($1)
|
61
|
+
if content_for_scanner =~ /^Expiration Date:\s+(.*)\n/
|
62
|
+
Time.parse($1) unless $1 == '-'
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
@@ -66,7 +67,7 @@ module Whois
|
|
66
67
|
property_supported :nameservers do
|
67
68
|
if content_for_scanner =~ /Domain servers in listed order:\n((.+\n)+)\n/
|
68
69
|
$1.split("\n").map do |name|
|
69
|
-
Record::Nameserver.new(name.strip.chomp("."))
|
70
|
+
Record::Nameserver.new(:name => name.strip.chomp("."))
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
@@ -14,16 +14,14 @@ module Whois
|
|
14
14
|
class Record
|
15
15
|
class Parser
|
16
16
|
|
17
|
-
#
|
18
|
-
# = whois.co.ug parser
|
19
|
-
#
|
20
17
|
# Parser for the whois.co.ug server.
|
21
18
|
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
19
|
+
# @note This parser is just a stub and provides only a few basic methods
|
20
|
+
# to check for domain availability and get domain status.
|
21
|
+
# Please consider to contribute implementing missing methods.
|
22
|
+
#
|
23
|
+
# @see Whois::Record::Parser::Example
|
24
|
+
# The Example parser for the list of all available methods.
|
27
25
|
#
|
28
26
|
# @author Simone Carletti <weppos@weppos.net>
|
29
27
|
# @author Moritz Heidkamp <moritz.heidkamp@bevuta.com>
|
@@ -33,9 +31,12 @@ module Whois
|
|
33
31
|
property_supported :status do
|
34
32
|
if content_for_scanner =~ /^Status:\s+(.+?)\n/
|
35
33
|
case $1.downcase
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
when 'active'
|
35
|
+
:registered
|
36
|
+
when 'unconfirmed'
|
37
|
+
:registered
|
38
|
+
else
|
39
|
+
Whois.bug!(ParserError, "Unknown status `#{$1}'.")
|
39
40
|
end
|
40
41
|
else
|
41
42
|
:available
|
@@ -72,7 +73,7 @@ module Whois
|
|
72
73
|
|
73
74
|
property_supported :nameservers do
|
74
75
|
content_for_scanner.scan(/Nameserver:\s+(.+)\n/).flatten.map do |name|
|
75
|
-
Record::Nameserver.new(name.downcase)
|
76
|
+
Record::Nameserver.new(:name => name.downcase)
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
@@ -71,14 +71,18 @@ module Whois
|
|
71
71
|
|
72
72
|
property_supported :registrar do
|
73
73
|
node("Registrar") do |raw|
|
74
|
-
Whois::Record::Registrar.new(
|
74
|
+
Whois::Record::Registrar.new(
|
75
|
+
:name => last_useful_item(raw),
|
76
|
+
:organization => last_useful_item(raw),
|
77
|
+
:url => referral_url
|
78
|
+
)
|
75
79
|
end
|
76
80
|
end
|
77
81
|
|
78
82
|
|
79
83
|
property_supported :nameservers do
|
80
84
|
Array.wrap(node("Name Server")).reject { |value| value =~ / / }.map do |name|
|
81
|
-
Record::Nameserver.new(name.downcase)
|
85
|
+
Record::Nameserver.new(:name => name.downcase)
|
82
86
|
end
|
83
87
|
end
|
84
88
|
|
@@ -67,9 +67,9 @@ module Whois
|
|
67
67
|
if content_for_scanner =~ /Nameservers:\s((.+\n)+)\n/
|
68
68
|
$1.split("\n").map do |line|
|
69
69
|
if line.strip =~ /(.+) \((.+)\)/
|
70
|
-
Record::Nameserver.new($1, $2)
|
70
|
+
Record::Nameserver.new(:name => $1, :ipv4 => $2)
|
71
71
|
else
|
72
|
-
Record::Nameserver.new(line.strip)
|
72
|
+
Record::Nameserver.new(:name => line.strip)
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
@@ -63,9 +63,9 @@ module Whois
|
|
63
63
|
property_supported :nameservers do
|
64
64
|
content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |line|
|
65
65
|
if line =~ /(.+) \[(.+)\]/
|
66
|
-
Record::Nameserver.new($1, $2)
|
66
|
+
Record::Nameserver.new(:name => $1, :ipv4 => $2)
|
67
67
|
else
|
68
|
-
Record::Nameserver.new(line)
|
68
|
+
Record::Nameserver.new(:name => line)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -63,9 +63,9 @@ module Whois
|
|
63
63
|
content_for_scanner.scan(/nameservers:\s+(.+)\n(.+)\n/).flatten.map do |line|
|
64
64
|
line.strip!
|
65
65
|
if line =~ /(.+) \[(.+)\]/
|
66
|
-
Record::Nameserver.new($1.chomp("."), $2)
|
66
|
+
Record::Nameserver.new(:name => $1.chomp("."), :ipv4 => $2)
|
67
67
|
else
|
68
|
-
Record::Nameserver.new(line.chomp("."))
|
68
|
+
Record::Nameserver.new(:name => line.chomp("."))
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -80,7 +80,7 @@ module Whois
|
|
80
80
|
if content_for_scanner =~ /Domain nameservers:\n((.+\n)+)\n/
|
81
81
|
$1.split("\n").map do |line|
|
82
82
|
name, ipv4 = line.strip.split(/\s+/)
|
83
|
-
Record::Nameserver.new(name, ipv4)
|
83
|
+
Record::Nameserver.new(:name => name, :ipv4 => ipv4)
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -66,7 +66,7 @@ module Whois
|
|
66
66
|
property_supported :nameservers do
|
67
67
|
if content_for_scanner =~ /Name servers in the listed order:\n\n((.+\n)+)\n/
|
68
68
|
$1.split("\n").map do |name|
|
69
|
-
Record::Nameserver.new(name.downcase)
|
69
|
+
Record::Nameserver.new(:name => name.downcase)
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -63,7 +63,7 @@ module Whois
|
|
63
63
|
property_supported :nameservers do
|
64
64
|
content_for_scanner.scan(/\[(?:Primary|Secondary) Name Server\](?:.+?)\n(.+\n)/).flatten.map do |line|
|
65
65
|
name, ipv4 = line.strip.split(/\s+/)
|
66
|
-
Record::Nameserver.new(name, ipv4)
|
66
|
+
Record::Nameserver.new(:name => name, :ipv4 => ipv4)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -56,9 +56,9 @@ module Whois
|
|
56
56
|
property_supported :nameservers do
|
57
57
|
content_for_scanner.scan(/Nameserver:\s+(.+)\n/).flatten.map do |line|
|
58
58
|
if line =~ /(.+)\t\[(.+)\]/
|
59
|
-
Record::Nameserver.new($1, $2)
|
59
|
+
Record::Nameserver.new(:name => $1, :ipv4 => $2)
|
60
60
|
else
|
61
|
-
Record::Nameserver.new(line.strip)
|
61
|
+
Record::Nameserver.new(:name => line.strip)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -62,7 +62,7 @@ module Whois
|
|
62
62
|
property_supported :nameservers do
|
63
63
|
if content_for_scanner =~ /Domain Nameservers:\n((.+\n)+)\s+\n/
|
64
64
|
$1.split("\n").map do |name|
|
65
|
-
Record::Nameserver.new(name.strip.downcase)
|
65
|
+
Record::Nameserver.new(:name => name.strip.downcase)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -73,7 +73,7 @@ module Whois
|
|
73
73
|
property_supported :nameservers do
|
74
74
|
if content_for_scanner =~ /Domain servers in listed order:\n\n((?:\s*[^\s\n]+\n)+)/
|
75
75
|
$1.split("\n").map do |line|
|
76
|
-
Record::Nameserver.new(line.strip)
|
76
|
+
Record::Nameserver.new(:name => line.strip)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
@@ -24,6 +24,29 @@ module Whois
|
|
24
24
|
#
|
25
25
|
class WhoisEducauseEdu < Base
|
26
26
|
|
27
|
+
property_supported :disclaimer do
|
28
|
+
if content_for_scanner =~ /\A((.*\n)+)\n--------------------------\n/
|
29
|
+
$1
|
30
|
+
else
|
31
|
+
Whois.bug!(ParserError, "Unable to parse disclaimer.")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
property_supported :domain do
|
37
|
+
if content_for_scanner =~ /Domain Name:\s(.+?)\n/
|
38
|
+
$1.downcase
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
property_not_supported :domain_id
|
43
|
+
|
44
|
+
|
45
|
+
property_not_supported :referral_whois
|
46
|
+
|
47
|
+
property_not_supported :referral_url
|
48
|
+
|
49
|
+
|
27
50
|
property_supported :status do
|
28
51
|
if available?
|
29
52
|
:available
|
@@ -49,7 +72,7 @@ module Whois
|
|
49
72
|
|
50
73
|
property_supported :updated_on do
|
51
74
|
if content_for_scanner =~ /Domain record last updated:\s+(.+?)\n/
|
52
|
-
Time.parse($1) unless $1 ==
|
75
|
+
Time.parse($1) unless $1 == 'unknown'
|
53
76
|
end
|
54
77
|
end
|
55
78
|
|
@@ -59,36 +82,121 @@ module Whois
|
|
59
82
|
end
|
60
83
|
end
|
61
84
|
|
85
|
+
|
86
|
+
property_not_supported :registrar
|
87
|
+
|
62
88
|
property_supported :registrant_contacts do
|
63
|
-
|
89
|
+
build_contact_registrant("Registrant", Whois::Record::Contact::TYPE_REGISTRANT)
|
90
|
+
end
|
91
|
+
|
92
|
+
property_supported :admin_contacts do
|
93
|
+
build_contact("Administrative Contact", Whois::Record::Contact::TYPE_ADMIN)
|
94
|
+
end
|
95
|
+
|
96
|
+
property_supported :technical_contacts do
|
97
|
+
build_contact("Technical Contact", Whois::Record::Contact::TYPE_TECHNICAL)
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
property_supported :nameservers do
|
102
|
+
if content_for_scanner =~ /Name Servers: \n((.+\n)+)\n/
|
103
|
+
$1.split("\n").map do |line|
|
104
|
+
name, ipv4 = line.strip.split(/\s+/)
|
105
|
+
Record::Nameserver.new(:name => name.downcase, :ipv4 => ipv4)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
# [NAME] | EMPTY
|
114
|
+
# [ROLE]?
|
115
|
+
# [ORGANIZATION]
|
116
|
+
# [ADDRESS]*
|
117
|
+
# [CITY, ST ZIP]
|
118
|
+
# [COUNTRY]
|
119
|
+
# [PHONE]
|
120
|
+
# [EMAIL]
|
121
|
+
def build_contact(element, type)
|
122
|
+
if content_for_scanner =~ /#{element}:\n+((.+\n)+)\n/
|
64
123
|
lines = $1.split("\n").map(&:strip)
|
124
|
+
items = lines.dup
|
125
|
+
|
126
|
+
# Extract variables
|
127
|
+
|
128
|
+
# items.shift if items[0].strip == ''
|
129
|
+
|
130
|
+
v13 = items.delete_at(-1)
|
65
131
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
132
|
+
v11 = items.delete_at(-1)
|
133
|
+
|
134
|
+
v9 = items.delete_at(-1)
|
135
|
+
|
136
|
+
v6 = items.delete_at(-1)
|
137
|
+
if v6 =~ /([^\n,]+),\s([A-Z]{2})(?:\s(\d{5}(?:-\d{4})?))/
|
138
|
+
v6, v7, v8 = $1, $2, $3
|
139
|
+
end
|
140
|
+
|
141
|
+
v4 = []
|
142
|
+
until items[0] =~ /^\d+/ || items.empty?
|
143
|
+
v4 << items.shift
|
71
144
|
end
|
145
|
+
v4 = v4.join("\n")
|
146
|
+
|
147
|
+
v5 = items.empty? ? nil : items.join("\n")
|
148
|
+
|
149
|
+
# Create Contact
|
72
150
|
|
73
151
|
Record::Contact.new(
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
152
|
+
:type => type,
|
153
|
+
:name => v4,
|
154
|
+
:organization => nil,
|
155
|
+
:address => v5,
|
156
|
+
:city => v6,
|
157
|
+
:state => v7,
|
158
|
+
:zip => v8,
|
159
|
+
:country => v9,
|
160
|
+
:phone => v11,
|
161
|
+
:email => v13
|
82
162
|
)
|
83
163
|
end
|
84
164
|
end
|
85
165
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
166
|
+
# [ORGANIZATION]
|
167
|
+
# [ADDRESS]*
|
168
|
+
# [CITY, ST ZIP] | [CITY]
|
169
|
+
# [COUNTRY]
|
170
|
+
def build_contact_registrant(element, type)
|
171
|
+
if content_for_scanner =~ /#{element}:\n((.+\n)+)\n/
|
172
|
+
lines = $1.split("\n").map(&:strip)
|
173
|
+
items = lines.dup
|
174
|
+
|
175
|
+
# Extract variables
|
176
|
+
|
177
|
+
v9 = items.delete_at(-1)
|
178
|
+
|
179
|
+
v4 = items.delete_at(0)
|
180
|
+
|
181
|
+
v6 = items.delete_at(-1)
|
182
|
+
if v6 =~ /([^\n,]+),\s([A-Z]{2})(?:\s(\d{5}))/
|
183
|
+
v6, v7, v8 = $1, $2, $3
|
91
184
|
end
|
185
|
+
|
186
|
+
v5 = items.empty? ? nil : items.join("\n")
|
187
|
+
|
188
|
+
# Create Contact
|
189
|
+
|
190
|
+
Record::Contact.new(
|
191
|
+
:type => type,
|
192
|
+
:name => nil,
|
193
|
+
:organization => v4,
|
194
|
+
:address => v5,
|
195
|
+
:city => v6,
|
196
|
+
:state => v7,
|
197
|
+
:zip => v8,
|
198
|
+
:country => v9
|
199
|
+
)
|
92
200
|
end
|
93
201
|
end
|
94
202
|
|