whois 2.5.1 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (308) hide show
  1. data/CHANGELOG.md +1537 -0
  2. data/README.md +212 -0
  3. data/Rakefile +3 -3
  4. data/lib/whois.rb +26 -1
  5. data/lib/whois/definitions/tlds.rb +3 -2
  6. data/lib/whois/record.rb +2 -2
  7. data/lib/whois/record/parser/base_afilias.rb +2 -2
  8. data/lib/whois/record/parser/base_cocca.rb +9 -1
  9. data/lib/whois/record/parser/jobswhois.verisign-grs.com.rb +6 -2
  10. data/lib/whois/record/parser/kero.yachay.pe.rb +1 -1
  11. data/lib/whois/record/parser/whois.adamsnames.tc.rb +1 -1
  12. data/lib/whois/record/parser/whois.aeda.net.ae.rb +1 -1
  13. data/lib/whois/record/parser/whois.ai.rb +1 -1
  14. data/lib/whois/record/parser/whois.arnes.si.rb +1 -1
  15. data/lib/whois/record/parser/whois.ati.tn.rb +133 -0
  16. data/lib/whois/record/parser/whois.biz.rb +1 -1
  17. data/lib/whois/record/parser/whois.cat.rb +1 -1
  18. data/lib/whois/record/parser/whois.cctld.uz.rb +4 -3
  19. data/lib/whois/record/parser/whois.centralnic.com.rb +1 -3
  20. data/lib/whois/record/parser/whois.cnnic.cn.rb +1 -1
  21. data/lib/whois/record/parser/whois.co.ca.rb +1 -1
  22. data/lib/whois/record/parser/whois.co.pl.rb +1 -1
  23. data/lib/whois/record/parser/whois.co.ug.rb +13 -12
  24. data/lib/whois/record/parser/whois.crsnic.net.rb +6 -2
  25. data/lib/whois/record/parser/whois.denic.de.rb +1 -1
  26. data/lib/whois/record/parser/whois.dk-hostmaster.dk.rb +1 -1
  27. data/lib/whois/record/parser/whois.dns.be.rb +2 -2
  28. data/lib/whois/record/parser/whois.dns.lu.rb +2 -2
  29. data/lib/whois/record/parser/whois.dns.pl.rb +2 -2
  30. data/lib/whois/record/parser/whois.dns.pt.rb +1 -1
  31. data/lib/whois/record/parser/whois.domain-registry.nl.rb +1 -1
  32. data/lib/whois/record/parser/whois.domain.kg.rb +1 -1
  33. data/lib/whois/record/parser/whois.domainregistry.my.rb +1 -1
  34. data/lib/whois/record/parser/whois.domreg.lt.rb +2 -2
  35. data/lib/whois/record/parser/whois.dot.tk.rb +1 -1
  36. data/lib/whois/record/parser/whois.dreamhost.com.rb +1 -1
  37. data/lib/whois/record/parser/whois.educause.edu.rb +128 -20
  38. data/lib/whois/record/parser/whois.eenet.ee.rb +1 -1
  39. data/lib/whois/record/parser/whois.eu.rb +2 -2
  40. data/lib/whois/record/parser/whois.fi.rb +1 -1
  41. data/lib/whois/record/parser/whois.gg.rb +1 -1
  42. data/lib/whois/record/parser/whois.godaddy.com.rb +1 -1
  43. data/lib/whois/record/parser/whois.hkirc.hk.rb +12 -13
  44. data/lib/whois/record/parser/whois.iana.org.rb +2 -1
  45. data/lib/whois/record/parser/whois.in.ua.rb +1 -1
  46. data/lib/whois/record/parser/whois.isnic.is.rb +1 -1
  47. data/lib/whois/record/parser/whois.isoc.org.il.rb +1 -1
  48. data/lib/whois/record/parser/whois.ja.net.rb +2 -1
  49. data/lib/whois/record/parser/whois.je.rb +1 -1
  50. data/lib/whois/record/parser/whois.jprs.jp.rb +1 -1
  51. data/lib/whois/record/parser/whois.kenic.or.ke.rb +1 -1
  52. data/lib/whois/record/parser/whois.markmonitor.com.rb +1 -1
  53. data/lib/whois/record/parser/whois.meregistry.net.rb +1 -1
  54. data/lib/whois/record/parser/whois.museum.rb +1 -1
  55. data/lib/whois/record/parser/whois.na-nic.com.na.rb +1 -0
  56. data/lib/whois/record/parser/whois.netcom.cm.rb +1 -1
  57. data/lib/whois/record/parser/whois.nic-se.se.rb +1 -1
  58. data/lib/whois/record/parser/whois.nic.am.rb +1 -1
  59. data/lib/whois/record/parser/whois.nic.as.rb +1 -1
  60. data/lib/whois/record/parser/whois.nic.asia.rb +1 -1
  61. data/lib/whois/record/parser/whois.nic.at.rb +1 -1
  62. data/lib/whois/record/parser/whois.nic.cc.rb +1 -1
  63. data/lib/whois/record/parser/whois.nic.cd.rb +1 -1
  64. data/lib/whois/record/parser/whois.nic.ch.rb +2 -2
  65. data/lib/whois/record/parser/whois.nic.ci.rb +1 -1
  66. data/lib/whois/record/parser/whois.nic.ck.rb +1 -1
  67. data/lib/whois/record/parser/whois.nic.cl.rb +1 -1
  68. data/lib/whois/record/parser/whois.nic.co.rb +1 -1
  69. data/lib/whois/record/parser/whois.nic.coop.rb +1 -1
  70. data/lib/whois/record/parser/whois.nic.cz.rb +11 -9
  71. data/lib/whois/record/parser/whois.nic.ec.rb +1 -1
  72. data/lib/whois/record/parser/whois.nic.gl.rb +2 -63
  73. data/lib/whois/record/parser/whois.nic.hu.rb +3 -3
  74. data/lib/whois/record/parser/whois.nic.im.rb +1 -1
  75. data/lib/whois/record/parser/whois.nic.ir.rb +1 -1
  76. data/lib/whois/record/parser/whois.nic.it.rb +4 -4
  77. data/lib/whois/record/parser/whois.nic.kz.rb +1 -1
  78. data/lib/whois/record/parser/whois.nic.li.rb +1 -1
  79. data/lib/whois/record/parser/whois.nic.lv.rb +1 -1
  80. data/lib/whois/record/parser/whois.nic.ly.rb +1 -1
  81. data/lib/whois/record/parser/whois.nic.md.rb +5 -5
  82. data/lib/whois/record/parser/whois.nic.mg.rb +1 -1
  83. data/lib/whois/record/parser/whois.nic.mx.rb +1 -1
  84. data/lib/whois/record/parser/whois.nic.net.sa.rb +1 -1
  85. data/lib/whois/record/parser/whois.nic.nu.rb +1 -1
  86. data/lib/whois/record/parser/whois.nic.org.uy.rb +1 -1
  87. data/lib/whois/record/parser/whois.nic.sl.rb +1 -1
  88. data/lib/whois/record/parser/whois.nic.sm.rb +1 -1
  89. data/lib/whois/record/parser/whois.nic.sn.rb +6 -3
  90. data/lib/whois/record/parser/whois.nic.so.rb +1 -1
  91. data/lib/whois/record/parser/whois.nic.st.rb +1 -1
  92. data/lib/whois/record/parser/whois.nic.tel.rb +1 -1
  93. data/lib/whois/record/parser/whois.nic.tr.rb +2 -1
  94. data/lib/whois/record/parser/whois.nic.travel.rb +1 -1
  95. data/lib/whois/record/parser/whois.nic.tv.rb +1 -1
  96. data/lib/whois/record/parser/whois.nic.uk.rb +11 -4
  97. data/lib/whois/record/parser/whois.nic.us.rb +1 -1
  98. data/lib/whois/record/parser/whois.nic.ve.rb +5 -3
  99. data/lib/whois/record/parser/whois.pandi.or.id.rb +5 -4
  100. data/lib/whois/record/parser/whois.pnina.ps.rb +8 -8
  101. data/lib/whois/record/parser/whois.register.bg.rb +6 -5
  102. data/lib/whois/record/parser/whois.registry.hm.rb +1 -1
  103. data/lib/whois/record/parser/whois.registry.om.rb +125 -0
  104. data/lib/whois/record/parser/whois.registrypro.pro.rb +1 -1
  105. data/lib/whois/record/parser/whois.ripe.net.rb +1 -1
  106. data/lib/whois/record/parser/whois.rnids.rs.rb +1 -1
  107. data/lib/whois/record/parser/whois.rotld.ro.rb +5 -4
  108. data/lib/whois/record/parser/whois.samoanic.ws.rb +1 -1
  109. data/lib/whois/record/parser/whois.sgnic.sg.rb +16 -16
  110. data/lib/whois/record/parser/whois.sk-nic.sk.rb +15 -8
  111. data/lib/whois/record/parser/whois.smallregistry.net.rb +10 -2
  112. data/lib/whois/record/parser/whois.srs.net.nz.rb +38 -20
  113. data/lib/whois/record/parser/whois.tcinet.ru.rb +4 -2
  114. data/lib/whois/record/parser/whois.thnic.co.th.rb +5 -4
  115. data/lib/whois/record/parser/whois.tld.ee.rb +7 -7
  116. data/lib/whois/record/parser/whois.tonic.to.rb +2 -3
  117. data/lib/whois/record/parser/whois.twnic.net.tw.rb +1 -1
  118. data/lib/whois/record/parser/whois.tznic.or.tz.rb +8 -4
  119. data/lib/whois/record/parser/whois.usp.ac.fj.rb +5 -4
  120. data/lib/whois/record/parser/whois.za.net.rb +1 -1
  121. data/lib/whois/record/parser/whois.za.org.rb +1 -1
  122. data/lib/whois/record/scanners/whois.ati.tn.rb +46 -0
  123. data/lib/whois/record/scanners/whois.cira.ca.rb +0 -1
  124. data/lib/whois/record/scanners/whois.registry.om.rb +39 -0
  125. data/lib/whois/record/scanners/whois.rnids.rs.rb +5 -0
  126. data/lib/whois/record/super_struct.rb +8 -5
  127. data/lib/whois/server/adapters/base.rb +53 -53
  128. data/lib/whois/version.rb +2 -2
  129. data/spec/fixtures/responses/whois.ati.tn/status_available.expected +57 -0
  130. data/spec/fixtures/responses/whois.ati.tn/status_available.txt +4 -0
  131. data/spec/fixtures/responses/whois.ati.tn/status_registered.expected +122 -0
  132. data/spec/fixtures/responses/whois.ati.tn/status_registered.txt +36 -0
  133. data/spec/fixtures/responses/whois.cctld.uz/property_expires_on_dash.expected +2 -0
  134. data/spec/fixtures/responses/whois.cctld.uz/property_expires_on_dash.txt +123 -0
  135. data/spec/fixtures/responses/whois.cctld.uz/property_status_reserved.expected +8 -0
  136. data/spec/fixtures/responses/whois.cctld.uz/property_status_reserved.txt +123 -0
  137. data/spec/fixtures/responses/{whois.nic.uk/property_status_registered.expected → whois.co.ug/property_status_active.expected} +0 -0
  138. data/spec/fixtures/responses/whois.co.ug/property_status_active.txt +35 -0
  139. data/spec/fixtures/responses/whois.co.ug/property_status_unconfirmed.expected +8 -0
  140. data/spec/fixtures/responses/whois.co.ug/property_status_unconfirmed.txt +30 -0
  141. data/spec/fixtures/responses/whois.dns.be/{response_throttled.expected → response_throttled_hourly.expected} +0 -0
  142. data/spec/fixtures/responses/whois.dns.be/{response_throttled_max.txt → response_throttled_hourly.txt} +0 -0
  143. data/spec/fixtures/responses/whois.dns.be/{response_throttled_max.expected → response_throttled_limit.expected} +0 -0
  144. data/spec/fixtures/responses/whois.dns.be/{response_throttled.txt → response_throttled_limit.txt} +0 -0
  145. data/spec/fixtures/responses/whois.dns.hr/status_registered.expected +13 -11
  146. data/spec/fixtures/responses/whois.domain-registry.nl/status_available.expected +4 -0
  147. data/spec/fixtures/responses/whois.domain-registry.nl/status_redemption.expected +4 -0
  148. data/spec/fixtures/responses/whois.educause.edu/fixture1.txt +63 -0
  149. data/spec/fixtures/responses/whois.educause.edu/fixture2.txt +66 -0
  150. data/spec/fixtures/responses/whois.educause.edu/fixture3.txt +67 -0
  151. data/spec/fixtures/responses/whois.educause.edu/fixture4.txt +68 -0
  152. data/spec/fixtures/responses/whois.educause.edu/fixture5.txt +66 -0
  153. data/spec/fixtures/responses/whois.educause.edu/fixture6.txt +66 -0
  154. data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant.expected +27 -0
  155. data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant.txt +63 -0
  156. data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_with_additional_organization.expected +28 -0
  157. data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_with_additional_organization.txt +66 -0
  158. data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_without_address.expected +26 -0
  159. data/spec/fixtures/responses/whois.educause.edu/{property_registrant_without_address.txt → property_contact_registrant_without_address.txt} +0 -0
  160. data/spec/fixtures/responses/whois.educause.edu/property_contact_registrant_without_zip.expected +27 -0
  161. data/spec/fixtures/responses/whois.educause.edu/{property_registrant_without_zip.txt → property_contact_registrant_without_zip.txt} +0 -0
  162. data/spec/fixtures/responses/whois.educause.edu/property_contacts.expected +31 -0
  163. data/spec/fixtures/responses/whois.educause.edu/property_contacts.txt +63 -0
  164. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case1.expected +31 -0
  165. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case1.txt +66 -0
  166. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case2.expected +32 -0
  167. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case2.txt +67 -0
  168. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case3.expected +32 -0
  169. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case3.txt +66 -0
  170. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case4.expected +32 -0
  171. data/spec/fixtures/responses/whois.educause.edu/property_contacts_case4.txt +68 -0
  172. data/spec/fixtures/responses/whois.educause.edu/status_available.expected +34 -0
  173. data/spec/fixtures/responses/whois.educause.edu/status_registered.expected +70 -8
  174. data/spec/fixtures/responses/whois.hkirc.hk/property_expires_on_null.expected +2 -0
  175. data/spec/fixtures/responses/whois.hkirc.hk/property_expires_on_null.txt +104 -0
  176. data/spec/fixtures/responses/whois.na-nic.com.na/property_status_active.expected +8 -0
  177. data/spec/fixtures/responses/whois.na-nic.com.na/property_status_active.txt +54 -0
  178. data/spec/fixtures/responses/whois.na-nic.com.na/property_status_delegated.expected +8 -0
  179. data/spec/fixtures/responses/whois.na-nic.com.na/property_status_delegated.txt +86 -0
  180. data/spec/fixtures/responses/whois.na-nic.com.na/status_registered.expected +9 -2
  181. data/spec/fixtures/responses/whois.na-nic.com.na/status_registered.txt +17 -7
  182. data/spec/fixtures/responses/whois.nc/property_contact_without_state.txt +21 -0
  183. data/spec/fixtures/responses/whois.nic.af/status_registered.expected +14 -3
  184. data/spec/fixtures/responses/whois.nic.af/status_registered.txt +59 -40
  185. data/spec/fixtures/responses/whois.nic.cx/status_registered.expected +7 -0
  186. data/spec/fixtures/responses/whois.nic.gl/status_available.expected +7 -0
  187. data/spec/fixtures/responses/whois.nic.gl/status_registered.expected +14 -0
  188. data/spec/fixtures/responses/whois.nic.gs/status_registered.expected +7 -0
  189. data/spec/fixtures/responses/whois.nic.ht/status_registered.expected +9 -2
  190. data/spec/fixtures/responses/whois.nic.ht/status_registered.txt +58 -44
  191. data/spec/fixtures/responses/whois.nic.ki/status_registered.expected +7 -0
  192. data/spec/fixtures/responses/whois.nic.ms/status_registered.expected +7 -0
  193. data/spec/fixtures/responses/whois.nic.mu/status_registered.expected +9 -2
  194. data/spec/fixtures/responses/whois.nic.mu/status_registered.txt +52 -8
  195. data/spec/fixtures/responses/whois.nic.net.nf/status_registered.expected +7 -0
  196. data/spec/fixtures/responses/whois.nic.net.ng/status_registered.expected +7 -0
  197. data/spec/fixtures/responses/whois.nic.net.sb/status_registered.expected +7 -0
  198. data/spec/fixtures/responses/whois.nic.tl/status_registered.expected +9 -2
  199. data/spec/fixtures/responses/whois.nic.tl/status_registered.txt +42 -5
  200. data/spec/fixtures/responses/whois.nic.uk/property_nameservers_with_ip.txt +11 -7
  201. data/spec/fixtures/responses/whois.nic.uk/property_registrant_type_individual.txt +45 -0
  202. data/spec/fixtures/responses/whois.nic.uk/{property_status_registered.txt → property_registrant_type_unknown.txt} +5 -5
  203. data/spec/fixtures/responses/whois.nic.uk/property_status_missing.txt +2 -2
  204. data/spec/fixtures/responses/whois.nic.uk/property_status_no_status_listed.txt +2 -2
  205. data/spec/fixtures/responses/whois.nic.uk/property_status_registered_until_expiry_date.txt +18 -13
  206. data/spec/fixtures/responses/whois.nic.uk/property_status_suspended.txt +51 -51
  207. data/spec/fixtures/responses/whois.nic.uk/status_available.txt +2 -2
  208. data/spec/fixtures/responses/whois.nic.uk/status_invalid.txt +2 -2
  209. data/spec/fixtures/responses/whois.nic.uk/status_registered.expected +2 -2
  210. data/spec/fixtures/responses/whois.nic.uk/status_registered.txt +5 -5
  211. data/spec/fixtures/responses/whois.nic.uk/status_reserved.expected +1 -1
  212. data/spec/fixtures/responses/whois.nic.uk/status_reserved.txt +2 -2
  213. data/spec/fixtures/responses/whois.nic.uk/status_suspended.expected +1 -1
  214. data/spec/fixtures/responses/whois.nic.uk/status_suspended.txt +51 -51
  215. data/spec/fixtures/responses/whois.registry.gy/status_registered.expected +7 -0
  216. data/spec/fixtures/responses/whois.registry.om/status_available.expected +56 -0
  217. data/spec/fixtures/responses/whois.registry.om/status_available.txt +1 -0
  218. data/spec/fixtures/responses/whois.registry.om/status_registered.expected +100 -0
  219. data/spec/fixtures/responses/whois.registry.om/status_registered.txt +18 -0
  220. data/spec/fixtures/responses/whois.rnids.rs/property_nameservers_hyphenated.expected +9 -0
  221. data/spec/fixtures/responses/whois.rnids.rs/property_nameservers_hyphenated.txt +36 -0
  222. data/spec/fixtures/responses/whois.rnids.rs/token_whois_privacy.expected +11 -0
  223. data/spec/fixtures/responses/whois.rnids.rs/token_whois_privacy.txt +36 -0
  224. data/spec/fixtures/responses/whois.srs.net.nz/response_throttled.expected +2 -0
  225. data/spec/fixtures/responses/whois.srs.net.nz/response_throttled.txt +27 -0
  226. data/spec/fixtures/responses/whois.srs.net.nz/status_available.expected +4 -0
  227. data/spec/fixtures/responses/whois.srs.net.nz/status_available.txt +2 -3
  228. data/spec/fixtures/responses/whois.srs.net.nz/status_invalid.expected +4 -0
  229. data/spec/fixtures/responses/whois.srs.net.nz/status_invalid.txt +2 -3
  230. data/spec/fixtures/responses/whois.srs.net.nz/status_registered.expected +6 -2
  231. data/spec/fixtures/responses/whois.srs.net.nz/status_registered.txt +5 -4
  232. data/spec/fixtures/responses/whois.tznic.or.tz/property_status_expired.expected +8 -0
  233. data/spec/fixtures/responses/whois.tznic.or.tz/property_status_expired.txt +56 -0
  234. data/spec/support/helpers/spec_helper.rb +0 -5
  235. data/spec/tlds +4 -2
  236. data/spec/whois/record/contact_spec.rb +8 -8
  237. data/spec/whois/record/nameserver_spec.rb +6 -6
  238. data/spec/whois/record/parser/base_spec.rb +11 -11
  239. data/spec/whois/record/parser/blank_spec.rb +1 -1
  240. data/spec/whois/record/parser/responses/whois.ati.tn/status_available_spec.rb +108 -0
  241. data/spec/whois/record/parser/responses/whois.ati.tn/status_registered_spec.rb +173 -0
  242. data/spec/whois/record/parser/responses/whois.cctld.uz/property_expires_on_dash_spec.rb +29 -0
  243. data/spec/whois/record/parser/responses/whois.cctld.uz/property_status_reserved_spec.rb +39 -0
  244. data/spec/whois/record/parser/responses/{whois.nic.uk/property_status_registered_spec.rb → whois.co.ug/property_status_active_spec.rb} +4 -4
  245. data/spec/whois/record/parser/responses/whois.co.ug/property_status_unconfirmed_spec.rb +39 -0
  246. data/spec/whois/record/parser/responses/whois.dns.be/{response_throttled_spec.rb → response_throttled_hourly_spec.rb} +3 -3
  247. data/spec/whois/record/parser/responses/whois.dns.be/{response_throttled_max_spec.rb → response_throttled_limit_spec.rb} +3 -3
  248. data/spec/whois/record/parser/responses/whois.dns.hr/status_registered_spec.rb +13 -11
  249. data/spec/whois/record/parser/responses/whois.domain-registry.nl/status_available_spec.rb +5 -0
  250. data/spec/whois/record/parser/responses/whois.domain-registry.nl/status_redemption_spec.rb +5 -0
  251. data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_spec.rb +44 -0
  252. data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_with_additional_organization_spec.rb +44 -0
  253. data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_without_address_spec.rb +44 -0
  254. data/spec/whois/record/parser/responses/whois.educause.edu/property_contact_registrant_without_zip_spec.rb +44 -0
  255. data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case1_spec.rb +43 -0
  256. data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case2_spec.rb +43 -0
  257. data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case3_spec.rb +43 -0
  258. data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_case4_spec.rb +43 -0
  259. data/spec/whois/record/parser/responses/whois.educause.edu/property_contacts_spec.rb +43 -0
  260. data/spec/whois/record/parser/responses/whois.educause.edu/status_available_spec.rb +48 -0
  261. data/spec/whois/record/parser/responses/whois.educause.edu/status_registered_spec.rb +83 -8
  262. data/spec/whois/record/parser/responses/whois.hkirc.hk/property_expires_on_null_spec.rb +29 -0
  263. data/spec/whois/record/parser/responses/whois.na-nic.com.na/property_status_active_spec.rb +39 -0
  264. data/spec/whois/record/parser/responses/whois.na-nic.com.na/property_status_delegated_spec.rb +39 -0
  265. data/spec/whois/record/parser/responses/whois.na-nic.com.na/status_registered_spec.rb +10 -2
  266. data/spec/whois/record/parser/responses/whois.nic.af/status_registered_spec.rb +15 -3
  267. data/spec/whois/record/parser/responses/whois.nic.cx/status_registered_spec.rb +8 -0
  268. data/spec/whois/record/parser/responses/whois.nic.gl/status_available_spec.rb +10 -0
  269. data/spec/whois/record/parser/responses/whois.nic.gl/status_registered_spec.rb +18 -0
  270. data/spec/whois/record/parser/responses/whois.nic.gs/status_registered_spec.rb +8 -0
  271. data/spec/whois/record/parser/responses/whois.nic.ht/status_registered_spec.rb +10 -2
  272. data/spec/whois/record/parser/responses/whois.nic.ki/status_registered_spec.rb +8 -0
  273. data/spec/whois/record/parser/responses/whois.nic.ms/status_registered_spec.rb +8 -0
  274. data/spec/whois/record/parser/responses/whois.nic.mu/status_registered_spec.rb +10 -2
  275. data/spec/whois/record/parser/responses/whois.nic.net.nf/status_registered_spec.rb +8 -0
  276. data/spec/whois/record/parser/responses/whois.nic.net.ng/status_registered_spec.rb +8 -0
  277. data/spec/whois/record/parser/responses/whois.nic.net.sb/status_registered_spec.rb +8 -0
  278. data/spec/whois/record/parser/responses/whois.nic.tl/status_registered_spec.rb +10 -2
  279. data/spec/whois/record/parser/responses/whois.nic.uk/status_registered_spec.rb +2 -2
  280. data/spec/whois/record/parser/responses/whois.nic.uk/status_reserved_spec.rb +1 -1
  281. data/spec/whois/record/parser/responses/whois.nic.uk/status_suspended_spec.rb +1 -1
  282. data/spec/whois/record/parser/responses/whois.registry.gy/status_registered_spec.rb +8 -0
  283. data/spec/whois/record/parser/responses/whois.registry.om/status_available_spec.rb +107 -0
  284. data/spec/whois/record/parser/responses/whois.registry.om/status_registered_spec.rb +151 -0
  285. data/spec/whois/record/parser/responses/whois.rnids.rs/property_nameservers_hyphenated_spec.rb +36 -0
  286. data/spec/whois/record/parser/responses/whois.rnids.rs/token_whois_privacy_spec.rb +42 -0
  287. data/spec/whois/record/parser/responses/whois.srs.net.nz/response_throttled_spec.rb +29 -0
  288. data/spec/whois/record/parser/responses/whois.srs.net.nz/status_available_spec.rb +5 -0
  289. data/spec/whois/record/parser/responses/whois.srs.net.nz/status_invalid_spec.rb +5 -0
  290. data/spec/whois/record/parser/responses/whois.srs.net.nz/status_registered_spec.rb +7 -2
  291. data/spec/whois/record/parser/responses/whois.tznic.or.tz/property_status_expired_spec.rb +39 -0
  292. data/spec/whois/record/parser_spec.rb +25 -25
  293. data/spec/whois/record/part_spec.rb +5 -5
  294. data/spec/whois/record/registrar_spec.rb +8 -8
  295. data/spec/whois/record/super_struct_spec.rb +0 -1
  296. data/spec/whois/record_spec.rb +12 -12
  297. data/spec/whois/server/adapters/afilias_spec.rb +2 -2
  298. data/spec/whois/server/adapters/formatted_spec.rb +1 -1
  299. data/spec/whois/server/adapters/pir_spec.rb +2 -2
  300. data/spec/whois/server/adapters/standard_spec.rb +1 -1
  301. data/spec/whois/server/adapters/verisign_spec.rb +2 -2
  302. data/whois.gemspec +6 -6
  303. metadata +97 -20
  304. data/.rspec +0 -1
  305. data/spec/fixtures/responses/whois.educause.edu/property_registrant_without_address.expected +0 -11
  306. data/spec/fixtures/responses/whois.educause.edu/property_registrant_without_zip.expected +0 -12
  307. data/spec/whois/record/parser/responses/whois.educause.edu/property_registrant_without_address_spec.rb +0 -38
  308. data/spec/whois/record/parser/responses/whois.educause.edu/property_registrant_without_zip_spec.rb +0 -39
@@ -82,7 +82,7 @@ module Whois
82
82
 
83
83
  address, city, zip, country_code = decompose_address(node("address"))
84
84
 
85
- Whois::Record::Contact.new(
85
+ Record::Contact.new(
86
86
  :type => Whois::Record::Contact::TYPE_REGISTRANT,
87
87
  :name => node("name"),
88
88
  :organization => node("org"),
@@ -106,7 +106,7 @@ module Whois
106
106
 
107
107
  property_supported :nameservers do
108
108
  Array.wrap(node("nameserver")).map do |name|
109
- Record::Nameserver.new(name)
109
+ Record::Nameserver.new(:name => name)
110
110
  end
111
111
  end
112
112
 
@@ -140,7 +140,7 @@ module Whois
140
140
 
141
141
  def build_contact(element, type)
142
142
  node(node(element)) do |raw|
143
- Whois::Record::Contact.new do |c|
143
+ Record::Contact.new do |c|
144
144
  c.type = type
145
145
  raw.each { |k,v| c[k.to_sym] = v }
146
146
  end
@@ -57,7 +57,7 @@ module Whois
57
57
 
58
58
  property_supported :nameservers do
59
59
  content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
60
- Record::Nameserver.new(name.chomp("."))
60
+ Record::Nameserver.new(:name => name.chomp("."))
61
61
  end
62
62
  end
63
63
 
@@ -57,7 +57,7 @@ module Whois
57
57
 
58
58
  property_supported :nameservers do
59
59
  content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
60
- Record::Nameserver.new(name)
60
+ Record::Nameserver.new(:name => name)
61
61
  end
62
62
  end
63
63
 
@@ -96,9 +96,9 @@ module Whois
96
96
  property_supported :registrar do
97
97
  node("Registrar") do |str|
98
98
  Record::Registrar.new(
99
- :id => str["Name"],
100
- :name => str["Name"],
101
- :organization => str["Organization"]
99
+ :id => str["Name"],
100
+ :name => str["Name"],
101
+ :organization => str["Organization"]
102
102
  )
103
103
  end
104
104
  end
@@ -118,7 +118,7 @@ module Whois
118
118
 
119
119
  property_supported :nameservers do
120
120
  Array.wrap(node("Nameservers")).map do |name|
121
- Record::Nameserver.new(name)
121
+ Record::Nameserver.new(:name => name)
122
122
  end
123
123
  end
124
124
 
@@ -61,7 +61,7 @@ module Whois
61
61
 
62
62
  property_supported :nameservers do
63
63
  content_for_scanner.scan(/^\w+ server\.+:\s(.*)\n/).flatten.map do |name|
64
- Record::Nameserver.new(name)
64
+ Record::Nameserver.new(:name => name)
65
65
  end
66
66
  end
67
67
 
@@ -54,7 +54,7 @@ module Whois
54
54
  property_supported :nameservers do
55
55
  if content_for_scanner =~ /Name servers:\n((.+\n)+)(?:\n|\z)/
56
56
  $1.split("\n").map do |name|
57
- Record::Nameserver.new(name)
57
+ Record::Nameserver.new(:name => name)
58
58
  end
59
59
  end
60
60
  end
@@ -56,7 +56,7 @@ module Whois
56
56
 
57
57
  property_supported :nameservers do
58
58
  content_for_scanner.scan(/Nserver:\s+(.+)\n/).flatten.map do |name|
59
- Record::Nameserver.new(name)
59
+ Record::Nameserver.new(:name => name)
60
60
  end
61
61
  end
62
62
 
@@ -66,7 +66,7 @@ module Whois
66
66
  property_supported :nameservers do
67
67
  if content_for_scanner =~ /Domain servers in listed order:\n((.+\n)+)\n/
68
68
  $1.split("\n").map do |name|
69
- Record::Nameserver.new(name.strip)
69
+ Record::Nameserver.new(:name => name.strip)
70
70
  end
71
71
  end
72
72
  end
@@ -75,10 +75,9 @@ module Whois
75
75
 
76
76
  property_supported :registrant_contacts do
77
77
  if content_for_scanner =~ /Registrant:\s+(.+?)\n/
78
- Whois::Record::Contact.new(
79
- nil,
80
- Whois::Record::Contact::TYPE_REGISTRANT,
81
- $1
78
+ Record::Contact.new(
79
+ :type => Whois::Record::Contact::TYPE_REGISTRANT,
80
+ :name => $1
82
81
  )
83
82
  end
84
83
  end
@@ -90,7 +89,8 @@ module Whois
90
89
 
91
90
  property_supported :nameservers do
92
91
  content_for_scanner.scan(/Name server:\s(.+?)\n/).flatten.map do |line|
93
- Record::Nameserver.new(*line.split(/\s+/))
92
+ name, ipv4 = line.split(/\s+/)
93
+ Record::Nameserver.new(:name => name, :ipv4 => ipv4)
94
94
  end
95
95
  end
96
96
 
@@ -75,7 +75,7 @@ module Whois
75
75
  property_supported :nameservers do
76
76
  if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
77
77
  $1.split("\n").map do |name|
78
- Record::Nameserver.new(name.strip)
78
+ Record::Nameserver.new(:name => name.strip)
79
79
  end
80
80
  end
81
81
  end
@@ -69,7 +69,7 @@ module Whois
69
69
  if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
70
70
  $1.scan(/DNS:\s+(.+)\n/).flatten.map do |line|
71
71
  name, ipv4 = line.strip.split(/\s+/)
72
- Record::Nameserver.new(name, ipv4)
72
+ Record::Nameserver.new(:name => name, :ipv4 => ipv4)
73
73
  end
74
74
  end
75
75
  end
@@ -57,7 +57,7 @@ module Whois
57
57
 
58
58
  property_supported :nameservers do
59
59
  content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
60
- Record::Nameserver.new(name)
60
+ Record::Nameserver.new(:name => name)
61
61
  end
62
62
  end
63
63
 
@@ -84,7 +84,7 @@ module Whois
84
84
  property_supported :nameservers do
85
85
  if content_for_scanner =~ /Domain servers in listed order:(.*)Owner and Administrative Contact information for domains/m
86
86
  $1.split.map do |name|
87
- Record::Nameserver.new(name)
87
+ Record::Nameserver.new(:name => name)
88
88
  end
89
89
  end
90
90
  end
@@ -66,7 +66,7 @@ module Whois
66
66
  property_supported :nameservers do
67
67
  if content_for_scanner =~ /Servidor\(es\) de Nombres de Dominio:\n\n((.+\n)+)\n/
68
68
  $1.scan(/-\s(.*?)\n/).flatten.map do |name|
69
- Record::Nameserver.new(name)
69
+ Record::Nameserver.new(:name => name)
70
70
  end
71
71
  end
72
72
  end
@@ -67,7 +67,7 @@ module Whois
67
67
 
68
68
  property_supported :nameservers do
69
69
  content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
70
- Record::Nameserver.new(name.downcase)
70
+ Record::Nameserver.new(:name => name.downcase)
71
71
  end
72
72
  end
73
73
 
@@ -66,7 +66,7 @@ module Whois
66
66
  property_supported :nameservers do
67
67
  if content_for_scanner =~ /DNS Servers:\n((.*\n)+)(?:\n|\z)/
68
68
  $1.split("\n").map do |name|
69
- Record::Nameserver.new(name.strip)
69
+ Record::Nameserver.new(:name => name.strip)
70
70
  end
71
71
  end
72
72
  end
@@ -69,7 +69,10 @@ module Whois
69
69
 
70
70
  property_supported :registrar do
71
71
  if content_for_scanner =~ /Registrar:\s+(.+)\n/
72
- Whois::Record::Registrar.new(:id => $1, :name => $1)
72
+ Whois::Record::Registrar.new(
73
+ :id => $1,
74
+ :name => $1
75
+ )
73
76
  end
74
77
  end
75
78
 
@@ -95,7 +98,7 @@ module Whois
95
98
 
96
99
  property_supported :nameservers do
97
100
  content_for_scanner.scan(/Nameserver:\s+(.+)\n/).flatten.map do |name|
98
- Record::Nameserver.new(name)
101
+ Record::Nameserver.new(:name => name)
99
102
  end
100
103
  end
101
104
 
@@ -103,7 +106,7 @@ module Whois
103
106
  private
104
107
 
105
108
  def build_contact(string, type)
106
- Whois::Record::Contact.new(
109
+ Record::Contact.new(
107
110
  :type => type,
108
111
  :id => string,
109
112
  :name => string
@@ -61,7 +61,7 @@ module Whois
61
61
 
62
62
  property_supported :nameservers do
63
63
  content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
64
- Record::Nameserver.new(name)
64
+ Record::Nameserver.new(:name => name)
65
65
  end
66
66
  end
67
67
 
@@ -62,7 +62,7 @@ module Whois
62
62
  property_supported :nameservers do
63
63
  if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n?/
64
64
  $1.split("\n").map do |name|
65
- Record::Nameserver.new(name.strip)
65
+ Record::Nameserver.new(:name => name.strip)
66
66
  end
67
67
  end
68
68
  end
@@ -65,7 +65,7 @@ module Whois
65
65
 
66
66
  property_supported :nameservers do
67
67
  content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
68
- Record::Nameserver.new(name.downcase)
68
+ Record::Nameserver.new(:name => name.downcase)
69
69
  end
70
70
  end
71
71
 
@@ -64,7 +64,8 @@ module Whois
64
64
  property_supported :nameservers do
65
65
  if content_for_scanner =~ /Domain Servers:\n((.+\n)+)\n/
66
66
  $1.split("\n").map do |line|
67
- Record::Nameserver.new(*line.split(/\s+/))
67
+ name, ipv4 = line.split(/\s+/)
68
+ Record::Nameserver.new(:name => name, :ipv4 => ipv4)
68
69
  end
69
70
  end
70
71
  end
@@ -61,7 +61,7 @@ module Whois
61
61
 
62
62
  property_supported :nameservers do
63
63
  content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
64
- Record::Nameserver.new(name.downcase)
64
+ Record::Nameserver.new(:name => name.downcase)
65
65
  end
66
66
  end
67
67
 
@@ -76,7 +76,7 @@ module Whois
76
76
 
77
77
  property_supported :nameservers do
78
78
  Array.wrap(node("Name Server")).reject { |value| value =~ /no nameserver/i }.map do |name|
79
- Nameserver.new(name.downcase)
79
+ Record::Nameserver.new(:name => name.downcase)
80
80
  end
81
81
  end
82
82
 
@@ -37,8 +37,6 @@ module Whois
37
37
  property_supported :status do
38
38
  if content_for_scanner =~ /\s+Registration status:\s+(.+?)\n/
39
39
  case $1.downcase
40
- when "registered until renewal date."
41
- :registered
42
40
  when "registered until expiry date."
43
41
  :registered
44
42
  when "registration request being processed."
@@ -82,7 +80,7 @@ module Whois
82
80
  end
83
81
 
84
82
  property_supported :expires_on do
85
- if content_for_scanner =~ /\s+Renewal date:\s+(.+)\n/
83
+ if content_for_scanner =~ /\s+Expiry date:\s+(.+)\n/
86
84
  Time.parse($1)
87
85
  end
88
86
  end
@@ -136,12 +134,21 @@ module Whois
136
134
  property_supported :nameservers do
137
135
  if content_for_scanner =~ /Name servers:\n((.+\n)+)\n/
138
136
  $1.split("\n").reject { |value| value =~ /No name servers listed/ }.map do |line|
139
- Record::Nameserver.new(*line.strip.split(/\s+/))
137
+ name, ipv4, ipv6 = line.strip.split(/\s+/)
138
+ Record::Nameserver.new(:name => name, :ipv4 => ipv4, :ipv6 => ipv6)
140
139
  end
141
140
  end
142
141
  end
143
142
 
144
143
 
144
+ # Checks whether the response has been throttled.
145
+ #
146
+ # @return [Boolean]
147
+ #
148
+ # @example
149
+ # The WHOIS query quota for 127.0.0.1 has been exceeded
150
+ # and will be replenished in 50 seconds.
151
+ #
145
152
  def response_throttled?
146
153
  !!(content_for_scanner =~ /The WHOIS query quota for .+ has been exceeded/)
147
154
  end
@@ -61,7 +61,7 @@ module Whois
61
61
 
62
62
  property_supported :nameservers do
63
63
  content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
64
- Record::Nameserver.new(name.downcase)
64
+ Record::Nameserver.new(:name => name.downcase)
65
65
  end
66
66
  end
67
67
 
@@ -30,8 +30,10 @@ module Whois
30
30
  property_supported :status do
31
31
  if content_for_scanner =~ /Estatus del dominio: (.+?)\n/
32
32
  case $1.downcase
33
- when "activo" then :registered
34
- when "suspendido" then :inactive
33
+ when "activo"
34
+ :registered
35
+ when "suspendido"
36
+ :inactive
35
37
  else
36
38
  Whois.bug!(ParserError, "Unknown status `#{$1}'.")
37
39
  end
@@ -70,7 +72,7 @@ module Whois
70
72
  property_supported :nameservers do
71
73
  if content_for_scanner =~ /Servidor\(es\) de Nombres de Dominio:\n\n((.+\n)+)\n/
72
74
  $1.scan(/-\s(.*?)\n/).flatten.map do |name|
73
- Record::Nameserver.new(name)
75
+ Record::Nameserver.new(:name => name)
74
76
  end
75
77
  end
76
78
  end
@@ -30,9 +30,10 @@ module Whois
30
30
  property_supported :status do
31
31
  if content_for_scanner =~ /domain-status:\s+(.+)\n/
32
32
  case $1.downcase
33
- when "object is active" then :registered
34
- else
35
- Whois.bug!(ParserError, "Unknown status `#{$1}'.")
33
+ when "object is active"
34
+ :registered
35
+ else
36
+ Whois.bug!(ParserError, "Unknown status `#{$1}'.")
36
37
  end
37
38
  else
38
39
  :available
@@ -69,7 +70,7 @@ module Whois
69
70
 
70
71
  property_supported :nameservers do
71
72
  content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
72
- Record::Nameserver.new(name)
73
+ Record::Nameserver.new(:name => name)
73
74
  end
74
75
  end
75
76
 
@@ -29,13 +29,13 @@ module Whois
29
29
 
30
30
  property_supported :status do
31
31
  if content_for_scanner =~ /Status:\s+(.+?)\n/
32
- case $1.downcase
33
- when /^active/
34
- :registered
35
- when "not registered"
36
- :available
37
- else
38
- Whois.bug!(ParserError, "Unknown status `#{$1}'.")
32
+ case (s = $1.downcase)
33
+ when /^active/
34
+ :registered
35
+ when "not registered"
36
+ :available
37
+ else
38
+ Whois.bug!(ParserError, "Unknown status `#{s}'.")
39
39
  end
40
40
  else
41
41
  Whois.bug!(ParserError, "Unable to parse status.")
@@ -69,7 +69,7 @@ module Whois
69
69
  property_supported :nameservers do
70
70
  if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
71
71
  $1.split("\n").delete_if { |value| value =~ /nodns\.ns$/i }.map do |name|
72
- Record::Nameserver.new(name.strip)
72
+ Record::Nameserver.new(:name => name.strip)
73
73
  end
74
74
  end
75
75
  end
@@ -30,9 +30,10 @@ module Whois
30
30
  property_supported :status do
31
31
  if content_for_scanner =~ /registration status:\s+(.+?)\n/
32
32
  case $1.downcase
33
- when "registered" then :registered
34
- else
35
- Whois.bug!(ParserError, "Unknown status `#{$1}'.")
33
+ when "registered"
34
+ :registered
35
+ else
36
+ Whois.bug!(ParserError, "Unknown status `#{$1}'.")
36
37
  end
37
38
  else
38
39
  :available
@@ -71,9 +72,9 @@ module Whois
71
72
  if content_for_scanner =~ /NAME SERVER INFORMATION:\n((.+\n)+)\s+\n/
72
73
  $1.split("\n").map do |line|
73
74
  if line =~ /(.+) \((.+)\)/
74
- Record::Nameserver.new($1, $2)
75
+ Record::Nameserver.new(:name => $1, :ipv4 => $2)
75
76
  else
76
- Record::Nameserver.new(line.strip)
77
+ Record::Nameserver.new(:name => line.strip)
77
78
  end
78
79
  end
79
80
  end
@@ -63,7 +63,7 @@ module Whois
63
63
 
64
64
  property_supported :nameservers do
65
65
  content_for_scanner.scan(/Name Server: ([^\s]+)\n/).flatten.map do |name|
66
- Record::Nameserver.new(name.downcase)
66
+ Record::Nameserver.new(:name => name.downcase)
67
67
  end
68
68
  end
69
69