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
@@ -90,7 +90,7 @@ module Whois
90
90
 
91
91
  property_supported :nameservers do
92
92
  Array.wrap(node("Name Server")).map do |name|
93
- Nameserver.new(name.downcase)
93
+ Nameserver.new(:name => name.downcase)
94
94
  end
95
95
  end
96
96
 
@@ -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:(.*)\n/
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
@@ -92,9 +92,7 @@ module Whois
92
92
 
93
93
  property_supported :nameservers do
94
94
  Array.wrap(node("Name Server")).map do |name|
95
- Record::Nameserver.new(
96
- :name => name.downcase
97
- )
95
+ Record::Nameserver.new(:name => name.downcase)
98
96
  end
99
97
  end
100
98
 
@@ -88,7 +88,7 @@ module Whois
88
88
 
89
89
  property_supported :nameservers do
90
90
  Array.wrap(node("Name Server")).map do |name|
91
- Nameserver.new(name.downcase)
91
+ Nameserver.new(:name => name.downcase)
92
92
  end
93
93
  end
94
94
 
@@ -66,7 +66,7 @@ module Whois
66
66
 
67
67
  property_supported :nameservers do
68
68
  content_for_scanner.scan(/ns[\d]_hostname:\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
 
@@ -78,7 +78,7 @@ module Whois
78
78
 
79
79
  property_supported :nameservers do
80
80
  content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
81
- Record::Nameserver.new(name)
81
+ Record::Nameserver.new(:name => name)
82
82
  end
83
83
  end
84
84
 
@@ -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
- # NOTE: This parser is just a stub and provides only a few basic methods
23
- # to check for domain availability and get domain status.
24
- # Please consider to contribute implementing missing methods.
25
- # See WhoisNicIt parser for an explanation of all available methods
26
- # and examples.
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
- when "active" then :registered
37
- else
38
- Whois.bug!(ParserError, "Unknown status `#{$1}'.")
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(:name => last_useful_item(raw), :organization => last_useful_item(raw), :url => referral_url)
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
 
@@ -113,7 +113,7 @@ module Whois
113
113
  node("Nserver") do |values|
114
114
  values.map do |line|
115
115
  name, ipv4 = line.split(/\s+/)
116
- Record::Nameserver.new(name.chomp("."), ipv4)
116
+ Record::Nameserver.new(:name => name.chomp("."), :ipv4 => ipv4)
117
117
  end
118
118
  end
119
119
  end
@@ -68,7 +68,7 @@ module Whois
68
68
 
69
69
  property_supported :nameservers do
70
70
  content_for_scanner.scan(/Hostname:\s+(.+)\n/).flatten.map do |name|
71
- Record::Nameserver.new(name)
71
+ Record::Nameserver.new(:name => name)
72
72
  end
73
73
  end
74
74
 
@@ -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
@@ -67,7 +67,7 @@ module Whois
67
67
 
68
68
  property_supported :nameservers do
69
69
  content_for_scanner.scan(/Nameserver:\s(?:.+\t)?(.+?)\.\n/).flatten.map do |name|
70
- Record::Nameserver.new(name)
70
+ Record::Nameserver.new(:name => name)
71
71
  end
72
72
  end
73
73
 
@@ -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 == "unknown"
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
- if content_for_scanner =~ /Registrant:\n((.+\n)+)\n/
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
- case lines[-2]
67
- when /([^\n,]+),\s([A-Z]{2})(?:\s(\d{5}))/
68
- city, state, zip = $1, $2, $3
69
- else
70
- city = lines[-2]
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
- :type => Whois::Record::Contact::TYPE_REGISTRANT,
75
- :name => nil,
76
- :organization => lines[0],
77
- :address => lines[1..-3].join("\n"),
78
- :city => city,
79
- :state => state,
80
- :zip => zip,
81
- :country => lines[-1]
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
- property_supported :nameservers do
87
- if content_for_scanner =~ /Name Servers: \n((.+\n)+)\n/
88
- $1.split("\n").map do |line|
89
- name, ipv4 = line.strip.split(/\s+/)
90
- Record::Nameserver.new(name.downcase, ipv4)
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