whois 1.2.2 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (429) hide show
  1. data/CHANGELOG.rdoc +23 -0
  2. data/README.rdoc +24 -7
  3. data/lib/core_ext.rb +4 -3
  4. data/lib/whois/answer/contact.rb +1 -1
  5. data/lib/whois/answer/nameserver.rb +41 -0
  6. data/lib/whois/answer/parser/base.rb +1 -0
  7. data/lib/whois/answer/parser/jobswhois.verisign-grs.com.rb +2 -2
  8. data/lib/whois/answer/parser/scanners/iana.rb +145 -0
  9. data/lib/whois/answer/parser/scanners/verisign.rb +15 -15
  10. data/lib/whois/answer/parser/whois.crsnic.net.rb +2 -2
  11. data/lib/whois/answer/parser/whois.denic.de.rb +27 -22
  12. data/lib/whois/answer/parser/whois.iana.org.rb +56 -16
  13. data/lib/whois/answer/parser/whois.nic.cc.rb +1 -1
  14. data/lib/whois/answer/parser/whois.nic.hu.rb +12 -8
  15. data/lib/whois/answer/parser/whois.nic.it.rb +1 -1
  16. data/lib/whois/answer/parser/whois.nic.tv.rb +1 -1
  17. data/lib/whois/answer/parser/whois.publicinterestregistry.net.rb +11 -9
  18. data/lib/whois/answer/registrar.rb +5 -5
  19. data/lib/whois/client.rb +0 -1
  20. data/lib/whois/errors.rb +19 -19
  21. data/lib/whois/server.rb +119 -47
  22. data/lib/whois/server/adapters/base.rb +44 -2
  23. data/lib/whois/version.rb +4 -3
  24. data/whois.gemspec +9 -18
  25. metadata +26 -713
  26. data/Manifest +0 -541
  27. data/Rakefile +0 -82
  28. data/data/ip6_del_list +0 -47
  29. data/data/ip_del_list +0 -245
  30. data/data/make_ip6_del.pl +0 -38
  31. data/data/make_ip_del.pl +0 -25
  32. data/data/make_servers_charset.pl +0 -21
  33. data/data/make_tld_serv.pl +0 -23
  34. data/data/servers_charset_list +0 -38
  35. data/data/tld_serv_list +0 -377
  36. data/tasks/server.rake +0 -109
  37. data/test/list_tld +0 -324
  38. data/test/test_helper.rb +0 -56
  39. data/test/testcases/referrals/afilias.bz.txt +0 -40
  40. data/test/testcases/referrals/crsnic.com.txt +0 -210
  41. data/test/testcases/referrals/crsnic.com_more_servers.txt +0 -210
  42. data/test/testcases/referrals/crsnic.com_one_server.txt +0 -57
  43. data/test/testcases/referrals/niccc.cc.txt +0 -59
  44. data/test/testcases/referrals/pir.org.txt +0 -84
  45. data/test/testcases/responses/UTF8.txt +0 -10
  46. data/test/testcases/responses/jobswhois.verisign-grs.com/available.txt +0 -44
  47. data/test/testcases/responses/jobswhois.verisign-grs.com/property_registrar.txt +0 -54
  48. data/test/testcases/responses/jobswhois.verisign-grs.com/registered.txt +0 -54
  49. data/test/testcases/responses/whois.adamsnames.tc/gd/available.txt +0 -2
  50. data/test/testcases/responses/whois.adamsnames.tc/gd/registered.txt +0 -26
  51. data/test/testcases/responses/whois.adamsnames.tc/tc/available.txt +0 -2
  52. data/test/testcases/responses/whois.adamsnames.tc/tc/registered.txt +0 -28
  53. data/test/testcases/responses/whois.adamsnames.tc/vg/available.txt +0 -2
  54. data/test/testcases/responses/whois.adamsnames.tc/vg/registered.txt +0 -28
  55. data/test/testcases/responses/whois.aeda.net.ae/available.txt +0 -1
  56. data/test/testcases/responses/whois.aeda.net.ae/registered.txt +0 -15
  57. data/test/testcases/responses/whois.aero/available.txt +0 -1
  58. data/test/testcases/responses/whois.aero/registered.txt +0 -102
  59. data/test/testcases/responses/whois.afilias-grs.info/bz/available.txt +0 -1
  60. data/test/testcases/responses/whois.afilias-grs.info/bz/registered.txt +0 -122
  61. data/test/testcases/responses/whois.afilias-grs.info/gi/available.txt +0 -1
  62. data/test/testcases/responses/whois.afilias-grs.info/gi/registered.txt +0 -98
  63. data/test/testcases/responses/whois.afilias-grs.info/hn/available.txt +0 -1
  64. data/test/testcases/responses/whois.afilias-grs.info/hn/registered.txt +0 -85
  65. data/test/testcases/responses/whois.afilias-grs.info/lc/available.txt +0 -1
  66. data/test/testcases/responses/whois.afilias-grs.info/lc/registered.txt +0 -83
  67. data/test/testcases/responses/whois.afilias-grs.info/mn/available.txt +0 -1
  68. data/test/testcases/responses/whois.afilias-grs.info/mn/registered.txt +0 -100
  69. data/test/testcases/responses/whois.afilias-grs.info/sc/available.txt +0 -1
  70. data/test/testcases/responses/whois.afilias-grs.info/sc/registered.txt +0 -85
  71. data/test/testcases/responses/whois.afilias-grs.info/vc/available.txt +0 -1
  72. data/test/testcases/responses/whois.afilias-grs.info/vc/registered.txt +0 -100
  73. data/test/testcases/responses/whois.afilias.info/available.txt +0 -1
  74. data/test/testcases/responses/whois.afilias.info/registered.txt +0 -104
  75. data/test/testcases/responses/whois.ai/available.txt +0 -2
  76. data/test/testcases/responses/whois.ai/registered.txt +0 -59
  77. data/test/testcases/responses/whois.arnes.si/available.txt +0 -29
  78. data/test/testcases/responses/whois.arnes.si/registered.txt +0 -55
  79. data/test/testcases/responses/whois.audns.net.au/available.txt +0 -1
  80. data/test/testcases/responses/whois.audns.net.au/registered.txt +0 -23
  81. data/test/testcases/responses/whois.biz/available.txt +0 -25
  82. data/test/testcases/responses/whois.biz/registered.txt +0 -89
  83. data/test/testcases/responses/whois.cat/available.txt +0 -18
  84. data/test/testcases/responses/whois.cat/registered.txt +0 -83
  85. data/test/testcases/responses/whois.cctld.uz/available.txt +0 -12
  86. data/test/testcases/responses/whois.cctld.uz/registered.txt +0 -123
  87. data/test/testcases/responses/whois.cira.ca/available.txt +0 -9
  88. data/test/testcases/responses/whois.cira.ca/registered.txt +0 -47
  89. data/test/testcases/responses/whois.cnnic.cn/available.txt +0 -1
  90. data/test/testcases/responses/whois.cnnic.cn/registered.txt +0 -19
  91. data/test/testcases/responses/whois.crsnic.net/MULTIPLE.txt +0 -3
  92. data/test/testcases/responses/whois.crsnic.net/available.txt +0 -43
  93. data/test/testcases/responses/whois.crsnic.net/nameservers_with_no_nameserver.txt +0 -67
  94. data/test/testcases/responses/whois.crsnic.net/registered.txt +0 -57
  95. data/test/testcases/responses/whois.crsnic.net/registered_with_multiple_entries.txt +0 -235
  96. data/test/testcases/responses/whois.denic.de/1-10-0_available.txt +0 -30
  97. data/test/testcases/responses/whois.denic.de/1-10-0_registered.txt +0 -77
  98. data/test/testcases/responses/whois.denic.de/available.txt +0 -42
  99. data/test/testcases/responses/whois.denic.de/error_invalid_domain_name.txt +0 -37
  100. data/test/testcases/responses/whois.denic.de/property_nameservers_with_ip.txt +0 -67
  101. data/test/testcases/responses/whois.denic.de/property_technical_contact.txt +0 -70
  102. data/test/testcases/responses/whois.denic.de/registered.txt +0 -70
  103. data/test/testcases/responses/whois.dk-hostmaster.dk/available.txt +0 -15
  104. data/test/testcases/responses/whois.dk-hostmaster.dk/registered.txt +0 -47
  105. data/test/testcases/responses/whois.dns.be/available.txt +0 -41
  106. data/test/testcases/responses/whois.dns.be/registered.txt +0 -66
  107. data/test/testcases/responses/whois.dns.lu/available.txt +0 -26
  108. data/test/testcases/responses/whois.dns.lu/property_nameservers_with_ip.txt +0 -55
  109. data/test/testcases/responses/whois.dns.lu/registered.txt +0 -57
  110. data/test/testcases/responses/whois.dns.pt/available.txt +0 -1
  111. data/test/testcases/responses/whois.dns.pt/registered.txt +0 -32
  112. data/test/testcases/responses/whois.domain-registry.nl/available.txt +0 -21
  113. data/test/testcases/responses/whois.domain-registry.nl/registered.txt +0 -67
  114. data/test/testcases/responses/whois.domainregistry.ie/available.txt +0 -7
  115. data/test/testcases/responses/whois.domainregistry.ie/registered.txt +0 -26
  116. data/test/testcases/responses/whois.domreg.lt/available.txt +0 -18
  117. data/test/testcases/responses/whois.domreg.lt/property_nameservers_with_ip.txt +0 -32
  118. data/test/testcases/responses/whois.domreg.lt/registered.txt +0 -37
  119. data/test/testcases/responses/whois.dot.tk/available.txt +0 -1
  120. data/test/testcases/responses/whois.dot.tk/registered.txt +0 -28
  121. data/test/testcases/responses/whois.dotmobiregistry.net/available.txt +0 -25
  122. data/test/testcases/responses/whois.dotmobiregistry.net/registered.txt +0 -81
  123. data/test/testcases/responses/whois.educause.edu/available.txt +0 -28
  124. data/test/testcases/responses/whois.educause.edu/registered.txt +0 -66
  125. data/test/testcases/responses/whois.eenet.ee/available.txt +0 -6
  126. data/test/testcases/responses/whois.eenet.ee/registered.txt +0 -27
  127. data/test/testcases/responses/whois.eu.org/available.txt +0 -1
  128. data/test/testcases/responses/whois.eu.org/registered.txt +0 -19
  129. data/test/testcases/responses/whois.eu/available.txt +0 -47
  130. data/test/testcases/responses/whois.eu/property_nameservers_with_ip.txt +0 -61
  131. data/test/testcases/responses/whois.eu/registered.txt +0 -63
  132. data/test/testcases/responses/whois.hkdnr.net.hk/available.txt +0 -1
  133. data/test/testcases/responses/whois.hkdnr.net.hk/registered.txt +0 -96
  134. data/test/testcases/responses/whois.iana.org/MULTIPLE.txt +0 -3
  135. data/test/testcases/responses/whois.iana.org/available.txt +0 -7
  136. data/test/testcases/responses/whois.iana.org/registered.txt +0 -89
  137. data/test/testcases/responses/whois.in.ua/available.txt +0 -4
  138. data/test/testcases/responses/whois.in.ua/registered.txt +0 -16
  139. data/test/testcases/responses/whois.isnic.is/available.txt +0 -7
  140. data/test/testcases/responses/whois.isnic.is/registered.txt +0 -57
  141. data/test/testcases/responses/whois.jprs.jp/jp/available.txt +0 -17
  142. data/test/testcases/responses/whois.jprs.jp/jp/registered.txt +0 -30
  143. data/test/testcases/responses/whois.jprs.jp/ne.jp/available.txt +0 -17
  144. data/test/testcases/responses/whois.jprs.jp/ne.jp/registered.txt +0 -19
  145. data/test/testcases/responses/whois.meregistry.net/available.txt +0 -1
  146. data/test/testcases/responses/whois.meregistry.net/registered.txt +0 -94
  147. data/test/testcases/responses/whois.museum/available.txt +0 -18
  148. data/test/testcases/responses/whois.museum/registered.txt +0 -92
  149. data/test/testcases/responses/whois.net.ua/available.txt +0 -7
  150. data/test/testcases/responses/whois.net.ua/property_nameservers_uppercase.txt +0 -29
  151. data/test/testcases/responses/whois.net.ua/redirect_to_whois.in.ua.txt +0 -29
  152. data/test/testcases/responses/whois.net.ua/registered.txt +0 -58
  153. data/test/testcases/responses/whois.nic-se.se/available.txt +0 -21
  154. data/test/testcases/responses/whois.nic-se.se/property_nameservers_with_ip.txt +0 -37
  155. data/test/testcases/responses/whois.nic-se.se/registered.txt +0 -37
  156. data/test/testcases/responses/whois.nic.ac/available.txt +0 -2
  157. data/test/testcases/responses/whois.nic.ac/registered.txt +0 -2
  158. data/test/testcases/responses/whois.nic.af/available.txt +0 -13
  159. data/test/testcases/responses/whois.nic.af/registered.txt +0 -56
  160. data/test/testcases/responses/whois.nic.ag/available.txt +0 -1
  161. data/test/testcases/responses/whois.nic.ag/registered.txt +0 -100
  162. data/test/testcases/responses/whois.nic.am/available.txt +0 -3
  163. data/test/testcases/responses/whois.nic.am/registered.txt +0 -42
  164. data/test/testcases/responses/whois.nic.as/available.txt +0 -12
  165. data/test/testcases/responses/whois.nic.as/registered.txt +0 -18
  166. data/test/testcases/responses/whois.nic.asia/available.txt +0 -1
  167. data/test/testcases/responses/whois.nic.asia/registered.txt +0 -159
  168. data/test/testcases/responses/whois.nic.at/available.txt +0 -25
  169. data/test/testcases/responses/whois.nic.at/registered.txt +0 -65
  170. data/test/testcases/responses/whois.nic.cc/available.txt +0 -44
  171. data/test/testcases/responses/whois.nic.cc/registered.txt +0 -58
  172. data/test/testcases/responses/whois.nic.cd/available.txt +0 -1
  173. data/test/testcases/responses/whois.nic.cd/registered.txt +0 -85
  174. data/test/testcases/responses/whois.nic.ch/available.txt +0 -2
  175. data/test/testcases/responses/whois.nic.ch/property_nameservers_with_ip.txt +0 -27
  176. data/test/testcases/responses/whois.nic.ch/registered.txt +0 -28
  177. data/test/testcases/responses/whois.nic.co/available.txt +0 -28
  178. data/test/testcases/responses/whois.nic.co/registered.txt +0 -82
  179. data/test/testcases/responses/whois.nic.coop/available.txt +0 -33
  180. data/test/testcases/responses/whois.nic.coop/registered.txt +0 -123
  181. data/test/testcases/responses/whois.nic.ec/available.txt +0 -1
  182. data/test/testcases/responses/whois.nic.ec/registered.txt +0 -40
  183. data/test/testcases/responses/whois.nic.fr/fr/available.txt +0 -19
  184. data/test/testcases/responses/whois.nic.fr/fr/registered.txt +0 -98
  185. data/test/testcases/responses/whois.nic.fr/pm/available.txt +0 -19
  186. data/test/testcases/responses/whois.nic.fr/pm/registered.txt +0 -88
  187. data/test/testcases/responses/whois.nic.fr/re/available.txt +0 -19
  188. data/test/testcases/responses/whois.nic.fr/re/registered.txt +0 -83
  189. data/test/testcases/responses/whois.nic.fr/wf/available.txt +0 -19
  190. data/test/testcases/responses/whois.nic.fr/wf/registered.txt +0 -88
  191. data/test/testcases/responses/whois.nic.fr/yt/available.txt +0 -19
  192. data/test/testcases/responses/whois.nic.fr/yt/registered.txt +0 -88
  193. data/test/testcases/responses/whois.nic.gl/available.txt +0 -23
  194. data/test/testcases/responses/whois.nic.gl/registered.txt +0 -40
  195. data/test/testcases/responses/whois.nic.gov/available.txt +0 -1
  196. data/test/testcases/responses/whois.nic.gov/registered.txt +0 -5
  197. data/test/testcases/responses/whois.nic.ht/available.txt +0 -23
  198. data/test/testcases/responses/whois.nic.ht/registered.txt +0 -59
  199. data/test/testcases/responses/whois.nic.hu/current/available.txt +0 -3
  200. data/test/testcases/responses/whois.nic.hu/current/registered.txt +0 -9
  201. data/test/testcases/responses/whois.nic.hu/v1.99/available.txt +0 -12
  202. data/test/testcases/responses/whois.nic.hu/v1.99/in_progress.txt +0 -13
  203. data/test/testcases/responses/whois.nic.hu/v1.99/property_registrant_as_company.txt +0 -65
  204. data/test/testcases/responses/whois.nic.hu/v1.99/property_registrant_as_private_person.txt +0 -58
  205. data/test/testcases/responses/whois.nic.hu/v1.99/property_registrant_without_address.txt +0 -58
  206. data/test/testcases/responses/whois.nic.hu/v1.99/registered.txt +0 -65
  207. data/test/testcases/responses/whois.nic.im/available.txt +0 -2
  208. data/test/testcases/responses/whois.nic.im/registered.txt +0 -45
  209. data/test/testcases/responses/whois.nic.io/available.txt +0 -2
  210. data/test/testcases/responses/whois.nic.io/registered.txt +0 -2
  211. data/test/testcases/responses/whois.nic.it/available.txt +0 -2
  212. data/test/testcases/responses/whois.nic.it/property_admin_contact.txt +0 -53
  213. data/test/testcases/responses/whois.nic.it/property_registrant_contact.txt +0 -58
  214. data/test/testcases/responses/whois.nic.it/property_status_active.txt +0 -53
  215. data/test/testcases/responses/whois.nic.it/property_status_available.txt +0 -2
  216. data/test/testcases/responses/whois.nic.it/property_technical_contact.txt +0 -53
  217. data/test/testcases/responses/whois.nic.it/registered.txt +0 -53
  218. data/test/testcases/responses/whois.nic.kz/available.txt +0 -4
  219. data/test/testcases/responses/whois.nic.kz/registered.txt +0 -37
  220. data/test/testcases/responses/whois.nic.la/available.txt +0 -1
  221. data/test/testcases/responses/whois.nic.la/registered.txt +0 -70
  222. data/test/testcases/responses/whois.nic.lv/available.txt +0 -7
  223. data/test/testcases/responses/whois.nic.lv/registered.txt +0 -33
  224. data/test/testcases/responses/whois.nic.ly/available.txt +0 -1
  225. data/test/testcases/responses/whois.nic.ly/registered.txt +0 -65
  226. data/test/testcases/responses/whois.nic.mu/ki/available.txt +0 -20
  227. data/test/testcases/responses/whois.nic.mu/ki/registered.txt +0 -30
  228. data/test/testcases/responses/whois.nic.mu/mu/available.txt +0 -9
  229. data/test/testcases/responses/whois.nic.mu/mu/registered.txt +0 -22
  230. data/test/testcases/responses/whois.nic.mx/available.txt +0 -11
  231. data/test/testcases/responses/whois.nic.mx/registered.txt +0 -58
  232. data/test/testcases/responses/whois.nic.name/available.txt +0 -29
  233. data/test/testcases/responses/whois.nic.name/registered.txt +0 -36
  234. data/test/testcases/responses/whois.nic.name/reserved.txt +0 -30
  235. data/test/testcases/responses/whois.nic.net.sa/available.txt +0 -5
  236. data/test/testcases/responses/whois.nic.net.sa/registered.txt +0 -17
  237. data/test/testcases/responses/whois.nic.nu/available.txt +0 -19
  238. data/test/testcases/responses/whois.nic.nu/registered.txt +0 -35
  239. data/test/testcases/responses/whois.nic.or.kr/available.txt +0 -10
  240. data/test/testcases/responses/whois.nic.or.kr/registered.txt +0 -48
  241. data/test/testcases/responses/whois.nic.org.uy/available.txt +0 -10
  242. data/test/testcases/responses/whois.nic.org.uy/registered.txt +0 -48
  243. data/test/testcases/responses/whois.nic.sn/available.txt +0 -3
  244. data/test/testcases/responses/whois.nic.sn/registered.txt +0 -14
  245. data/test/testcases/responses/whois.nic.st/available.txt +0 -1
  246. data/test/testcases/responses/whois.nic.st/registered.txt +0 -47
  247. data/test/testcases/responses/whois.nic.tel/available.txt +0 -59
  248. data/test/testcases/responses/whois.nic.tel/registered.txt +0 -111
  249. data/test/testcases/responses/whois.nic.tl/available.txt +0 -21
  250. data/test/testcases/responses/whois.nic.tl/registered.txt +0 -29
  251. data/test/testcases/responses/whois.nic.tr/available.txt +0 -1
  252. data/test/testcases/responses/whois.nic.tr/property_nameservers_with_trailing_space.txt +0 -42
  253. data/test/testcases/responses/whois.nic.tr/registered.txt +0 -48
  254. data/test/testcases/responses/whois.nic.travel/available.txt +0 -25
  255. data/test/testcases/responses/whois.nic.travel/registered.txt +0 -75
  256. data/test/testcases/responses/whois.nic.tv/available.txt +0 -44
  257. data/test/testcases/responses/whois.nic.tv/registered.txt +0 -54
  258. data/test/testcases/responses/whois.nic.uk/available.txt +0 -20
  259. data/test/testcases/responses/whois.nic.uk/invalid.txt +0 -22
  260. data/test/testcases/responses/whois.nic.uk/registered.txt +0 -50
  261. data/test/testcases/responses/whois.nic.us/available.txt +0 -29
  262. data/test/testcases/responses/whois.nic.us/registered.txt +0 -99
  263. data/test/testcases/responses/whois.nic.ve/available.txt +0 -10
  264. data/test/testcases/responses/whois.nic.ve/registered.txt +0 -48
  265. data/test/testcases/responses/whois.norid.no/available.txt +0 -5
  266. data/test/testcases/responses/whois.norid.no/registered.txt +0 -34
  267. data/test/testcases/responses/whois.pandi.or.id/available.txt +0 -9
  268. data/test/testcases/responses/whois.pandi.or.id/registered.txt +0 -33
  269. data/test/testcases/responses/whois.publicinterestregistry.net/available.txt +0 -1
  270. data/test/testcases/responses/whois.publicinterestregistry.net/registered.txt +0 -85
  271. data/test/testcases/responses/whois.publicinterestregistry.net/throttle.txt +0 -1
  272. data/test/testcases/responses/whois.register.bg/available.txt +0 -1
  273. data/test/testcases/responses/whois.register.bg/property_nameservers_with_ip.txt +0 -42
  274. data/test/testcases/responses/whois.register.bg/registered.txt +0 -44
  275. data/test/testcases/responses/whois.registro.br/available.txt +0 -22
  276. data/test/testcases/responses/whois.registro.br/registered.txt +0 -23
  277. data/test/testcases/responses/whois.registry.in/available.txt +0 -1
  278. data/test/testcases/responses/whois.registry.in/registered.txt +0 -83
  279. data/test/testcases/responses/whois.registrypro.pro/available.txt +0 -20
  280. data/test/testcases/responses/whois.registrypro.pro/registered.txt +0 -62
  281. data/test/testcases/responses/whois.ripe.net/fo/available.txt +0 -11
  282. data/test/testcases/responses/whois.ripe.net/fo/registered.txt +0 -45
  283. data/test/testcases/responses/whois.ripe.net/gm/available.txt +0 -11
  284. data/test/testcases/responses/whois.ripe.net/gm/registered.txt +0 -37
  285. data/test/testcases/responses/whois.ripe.net/mc/available.txt +0 -11
  286. data/test/testcases/responses/whois.ripe.net/mc/registered.txt +0 -36
  287. data/test/testcases/responses/whois.ripe.net/sm/available.txt +0 -11
  288. data/test/testcases/responses/whois.ripe.net/sm/registered.txt +0 -60
  289. data/test/testcases/responses/whois.ripe.net/va/available.txt +0 -11
  290. data/test/testcases/responses/whois.ripe.net/va/registered.txt +0 -48
  291. data/test/testcases/responses/whois.ripn.net/ru/available.txt +0 -9
  292. data/test/testcases/responses/whois.ripn.net/ru/property_nameservers_with_ip.txt +0 -22
  293. data/test/testcases/responses/whois.ripn.net/ru/registered.txt +0 -24
  294. data/test/testcases/responses/whois.ripn.net/su/available.txt +0 -9
  295. data/test/testcases/responses/whois.ripn.net/su/registered.txt +0 -20
  296. data/test/testcases/responses/whois.rotld.ro/available.txt +0 -16
  297. data/test/testcases/responses/whois.rotld.ro/registered.txt +0 -27
  298. data/test/testcases/responses/whois.samoanic.ws/available.txt +0 -12
  299. data/test/testcases/responses/whois.samoanic.ws/registered.txt +0 -34
  300. data/test/testcases/responses/whois.srs.net.nz/available.txt +0 -28
  301. data/test/testcases/responses/whois.srs.net.nz/invalid.txt +0 -28
  302. data/test/testcases/responses/whois.srs.net.nz/registered.txt +0 -72
  303. data/test/testcases/responses/whois.tonic.to/1.txt +0 -1
  304. data/test/testcases/responses/whois.tonic.to/available.txt +0 -2
  305. data/test/testcases/responses/whois.tonic.to/incomplete.txt +0 -1
  306. data/test/testcases/responses/whois.tonic.to/registered.txt +0 -3
  307. data/test/testcases/responses/whois.za.net/available.txt +0 -9
  308. data/test/testcases/responses/whois.za.net/registered.txt +0 -42
  309. data/test/testcases/responses/whois.za.org/available.txt +0 -9
  310. data/test/testcases/responses/whois.za.org/registered.txt +0 -44
  311. data/test/whois/answer/contact_test.rb +0 -14
  312. data/test/whois/answer/parser/base_test.rb +0 -84
  313. data/test/whois/answer/parser/blank_test.rb +0 -19
  314. data/test/whois/answer/parser/jobswhois.verisign-grs.com_test.rb +0 -161
  315. data/test/whois/answer/parser/saudinic.net.sa_test.rb +0 -12
  316. data/test/whois/answer/parser/whois.adamsnames.tc_test.rb +0 -162
  317. data/test/whois/answer/parser/whois.aeda.net.ae_test.rb +0 -63
  318. data/test/whois/answer/parser/whois.aero_test.rb +0 -84
  319. data/test/whois/answer/parser/whois.afilias-grs.info_test.rb +0 -438
  320. data/test/whois/answer/parser/whois.afilias.info_test.rb +0 -64
  321. data/test/whois/answer/parser/whois.ai_test.rb +0 -58
  322. data/test/whois/answer/parser/whois.arnes.si_test.rb +0 -72
  323. data/test/whois/answer/parser/whois.audns.net.au_test.rb +0 -70
  324. data/test/whois/answer/parser/whois.ausregistry.net.au_test.rb +0 -12
  325. data/test/whois/answer/parser/whois.biz_test.rb +0 -64
  326. data/test/whois/answer/parser/whois.cat_test.rb +0 -64
  327. data/test/whois/answer/parser/whois.cctld.uz_test.rb +0 -91
  328. data/test/whois/answer/parser/whois.cira.ca_test.rb +0 -64
  329. data/test/whois/answer/parser/whois.cnnic.cn_test.rb +0 -73
  330. data/test/whois/answer/parser/whois.cnnic.net.cn_test.rb +0 -11
  331. data/test/whois/answer/parser/whois.crsnic.net_test.rb +0 -186
  332. data/test/whois/answer/parser/whois.denic.de_test.rb +0 -414
  333. data/test/whois/answer/parser/whois.dk-hostmaster.dk_test.rb +0 -57
  334. data/test/whois/answer/parser/whois.dns.be_test.rb +0 -65
  335. data/test/whois/answer/parser/whois.dns.lu_test.rb +0 -77
  336. data/test/whois/answer/parser/whois.dns.pt_test.rb +0 -84
  337. data/test/whois/answer/parser/whois.domain-registry.nl_test.rb +0 -62
  338. data/test/whois/answer/parser/whois.domainregistry.ie_test.rb +0 -60
  339. data/test/whois/answer/parser/whois.domreg.lt_test.rb +0 -67
  340. data/test/whois/answer/parser/whois.dot.tk_test.rb +0 -77
  341. data/test/whois/answer/parser/whois.dotmobiregistry.net_test.rb +0 -64
  342. data/test/whois/answer/parser/whois.educause.edu_test.rb +0 -64
  343. data/test/whois/answer/parser/whois.eenet.ee_test.rb +0 -91
  344. data/test/whois/answer/parser/whois.eu.org_test.rb +0 -51
  345. data/test/whois/answer/parser/whois.eu_test.rb +0 -65
  346. data/test/whois/answer/parser/whois.hkdnr.net.hk_test.rb +0 -77
  347. data/test/whois/answer/parser/whois.iana.org_test.rb +0 -63
  348. data/test/whois/answer/parser/whois.in.ua_test.rb +0 -91
  349. data/test/whois/answer/parser/whois.isnic.is_test.rb +0 -62
  350. data/test/whois/answer/parser/whois.jprs.jp_test.rb +0 -165
  351. data/test/whois/answer/parser/whois.meregistry.net_test.rb +0 -64
  352. data/test/whois/answer/parser/whois.museum_test.rb +0 -64
  353. data/test/whois/answer/parser/whois.net.ua_test.rb +0 -98
  354. data/test/whois/answer/parser/whois.nic-se.se_test.rb +0 -71
  355. data/test/whois/answer/parser/whois.nic.ac_test.rb +0 -126
  356. data/test/whois/answer/parser/whois.nic.af_test.rb +0 -84
  357. data/test/whois/answer/parser/whois.nic.ag_test.rb +0 -84
  358. data/test/whois/answer/parser/whois.nic.am_test.rb +0 -84
  359. data/test/whois/answer/parser/whois.nic.as_test.rb +0 -63
  360. data/test/whois/answer/parser/whois.nic.asia_test.rb +0 -69
  361. data/test/whois/answer/parser/whois.nic.at_test.rb +0 -65
  362. data/test/whois/answer/parser/whois.nic.cc_test.rb +0 -133
  363. data/test/whois/answer/parser/whois.nic.cd_test.rb +0 -62
  364. data/test/whois/answer/parser/whois.nic.ch_test.rb +0 -65
  365. data/test/whois/answer/parser/whois.nic.co_test.rb +0 -64
  366. data/test/whois/answer/parser/whois.nic.coop_test.rb +0 -64
  367. data/test/whois/answer/parser/whois.nic.ec_test.rb +0 -98
  368. data/test/whois/answer/parser/whois.nic.fr_test.rb +0 -281
  369. data/test/whois/answer/parser/whois.nic.gl_test.rb +0 -64
  370. data/test/whois/answer/parser/whois.nic.gov_test.rb +0 -51
  371. data/test/whois/answer/parser/whois.nic.ht_test.rb +0 -98
  372. data/test/whois/answer/parser/whois.nic.hu_test.rb +0 -321
  373. data/test/whois/answer/parser/whois.nic.im_test.rb +0 -60
  374. data/test/whois/answer/parser/whois.nic.io_test.rb +0 -51
  375. data/test/whois/answer/parser/whois.nic.it_test.rb +0 -298
  376. data/test/whois/answer/parser/whois.nic.kz_test.rb +0 -91
  377. data/test/whois/answer/parser/whois.nic.la_test.rb +0 -98
  378. data/test/whois/answer/parser/whois.nic.lv_test.rb +0 -65
  379. data/test/whois/answer/parser/whois.nic.ly_test.rb +0 -64
  380. data/test/whois/answer/parser/whois.nic.mu_test.rb +0 -123
  381. data/test/whois/answer/parser/whois.nic.mx_test.rb +0 -84
  382. data/test/whois/answer/parser/whois.nic.name_test.rb +0 -51
  383. data/test/whois/answer/parser/whois.nic.net.sa_test.rb +0 -84
  384. data/test/whois/answer/parser/whois.nic.nu_test.rb +0 -59
  385. data/test/whois/answer/parser/whois.nic.or.kr_test.rb +0 -64
  386. data/test/whois/answer/parser/whois.nic.org.uy_test.rb +0 -91
  387. data/test/whois/answer/parser/whois.nic.sn_test.rb +0 -190
  388. data/test/whois/answer/parser/whois.nic.st_test.rb +0 -77
  389. data/test/whois/answer/parser/whois.nic.tel_test.rb +0 -64
  390. data/test/whois/answer/parser/whois.nic.tl_test.rb +0 -84
  391. data/test/whois/answer/parser/whois.nic.tr_test.rb +0 -98
  392. data/test/whois/answer/parser/whois.nic.travel_test.rb +0 -64
  393. data/test/whois/answer/parser/whois.nic.tv_test.rb +0 -132
  394. data/test/whois/answer/parser/whois.nic.uk_test.rb +0 -76
  395. data/test/whois/answer/parser/whois.nic.us_test.rb +0 -64
  396. data/test/whois/answer/parser/whois.nic.ve_test.rb +0 -91
  397. data/test/whois/answer/parser/whois.norid.no_test.rb +0 -49
  398. data/test/whois/answer/parser/whois.pandi.or.id_test.rb +0 -79
  399. data/test/whois/answer/parser/whois.publicinterestregistry.net_test.rb +0 -284
  400. data/test/whois/answer/parser/whois.register.bg_test.rb +0 -69
  401. data/test/whois/answer/parser/whois.registro.br_test.rb +0 -51
  402. data/test/whois/answer/parser/whois.registry.in_test.rb +0 -69
  403. data/test/whois/answer/parser/whois.registrypro.pro_test.rb +0 -84
  404. data/test/whois/answer/parser/whois.ripe.net_test.rb +0 -266
  405. data/test/whois/answer/parser/whois.ripn.net_test.rb +0 -127
  406. data/test/whois/answer/parser/whois.rotld.ro_test.rb +0 -63
  407. data/test/whois/answer/parser/whois.samoanic.ws_test.rb +0 -64
  408. data/test/whois/answer/parser/whois.srs.net.nz_test.rb +0 -79
  409. data/test/whois/answer/parser/whois.tonic.to_test.rb +0 -125
  410. data/test/whois/answer/parser/whois.za.net_test.rb +0 -62
  411. data/test/whois/answer/parser/whois.za.org_test.rb +0 -62
  412. data/test/whois/answer/parser_test.rb +0 -219
  413. data/test/whois/answer/super_struct_test.rb +0 -24
  414. data/test/whois/answer_test.rb +0 -180
  415. data/test/whois/client_test.rb +0 -96
  416. data/test/whois/errors_test.rb +0 -23
  417. data/test/whois/integration_test.rb +0 -31
  418. data/test/whois/server/adapters/afilias_test.rb +0 -37
  419. data/test/whois/server/adapters/base_test.rb +0 -15
  420. data/test/whois/server/adapters/formatted_test.rb +0 -29
  421. data/test/whois/server/adapters/none_test.rb +0 -22
  422. data/test/whois/server/adapters/not_implemented_test.rb +0 -16
  423. data/test/whois/server/adapters/pir_test.rb +0 -37
  424. data/test/whois/server/adapters/standard_test.rb +0 -36
  425. data/test/whois/server/adapters/verisign_test.rb +0 -51
  426. data/test/whois/server/adapters/web_test.rb +0 -17
  427. data/test/whois/server_test.rb +0 -105
  428. data/utils/bm_delegation_vs_inheritance.rb +0 -150
  429. data/utils/bm_shell_vs_pure.rb +0 -14
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,28 @@
1
1
  = Changelog
2
2
 
3
+ == Release 1.3.0
4
+
5
+ * ADDED: Ability to query IANA for TLD WHOIS information. [aadlani]
6
+
7
+ Whois.query(".com")
8
+ # => IANA WHOIS response for .com TLD
9
+
10
+ Whois.query(".invalid")
11
+ # => IANA WHOIS response for unassigned TLD
12
+
13
+
14
+ * ADDED: Ability to compare two Server adapters for equality.
15
+
16
+ Whois::Server.factory(:ipv4, "192.168.1.0/10", "whois.foo") == Whois::Server.factory(:ipv4, "192.168.1.0/10", "whois.foo")
17
+ # => true
18
+
19
+ Whois::Server.factory(:ipv4, "192.168.1.0", "whois.foo") == Whois::Server.factory(:ipv4, "192.168.1.0/10", "whois.foo")
20
+ # => false
21
+
22
+ * CHANGED: Renamed Scanners::VerisignScanner to Scanners::Verisign.
23
+
24
+ * CHANGED: Excluded test folder from the packaged .gem file to reduce the size of the final packaged library.
25
+
3
26
 
4
27
  == Release 1.2.2
5
28
 
data/README.rdoc CHANGED
@@ -15,7 +15,7 @@ An extensive test suite is available to verify the library correctness but you m
15
15
  * Intelligent Ruby client
16
16
  * Flexible and extensible configuration with support for user-defined servers
17
17
  * Powerful whois response parser
18
- * Support for IPv6, IPv4 and top level domain whois queries
18
+ * Support for IPv6, IPv4, TLD and domain WHOIS queries
19
19
  * Object oriented design
20
20
  * Compatible with Ruby 1.8.6 and newer, including Ruby 1.9
21
21
 
@@ -48,21 +48,26 @@ Note. This section covers only the essentials for getting started with the Whois
48
48
 
49
49
  === Querying the Server
50
50
 
51
- Whois provides the ability to get WHOIS information for hostnames, IPv4 and IPv6 addresses. The client is smart enough to guess the best WHOIS server according to given query, send the request and return the response.
51
+ Whois provides the ability to get WHOIS information for TLD, domain names, IPv4 and IPv6 addresses. The client is smart enough to guess the best WHOIS server according to given query, send the request and return the response.
52
52
 
53
53
  Check out the following examples:
54
54
 
55
- # Domain Whois
55
+ # Domain WHOIS
56
56
  w = Whois::Client.new
57
57
  w.query("google.com")
58
58
  # => #<Whois::Answer>
59
59
 
60
- # IPv4 Whois
60
+ # TLD WHOIS
61
+ w = Whois::Client.new
62
+ w.query(".com")
63
+ # => #<Whois::Answer>
64
+
65
+ # IPv4 WHOIS
61
66
  w = Whois::Client.new
62
67
  w.query("74.125.67.100")
63
68
  # => #<Whois::Answer>
64
69
 
65
- # IPv6 Whois
70
+ # IPv6 WHOIS
66
71
  w = Whois::Client.new
67
72
  w.query("2001:db8::1428:57ab")
68
73
  # => #<Whois::Answer>
@@ -71,6 +76,7 @@ The query method is stateless. For this reason, you can safely re-use the same c
71
76
 
72
77
  w = Whois::Client.new
73
78
  w.query("google.com")
79
+ w.query(".com")
74
80
  w.query("74.125.67.100")
75
81
  w.query("2001:db8::1428:57ab")
76
82
  w.query("google.it")
@@ -80,6 +86,17 @@ If you just need a WHOIS response and you don't care about a full control of the
80
86
  Whois.whois("google.com")
81
87
  # => #<Whois::Answer>
82
88
 
89
+ Did I mention you can even use blocks?
90
+
91
+ Whois::Client.new do |w|
92
+ w.query("google.com")
93
+ w.query(".com")
94
+ w.query("74.125.67.100")
95
+ w.query("2001:db8::1428:57ab")
96
+ w.query("google.it")
97
+ end
98
+
99
+
83
100
  === Consuming the Answer
84
101
 
85
102
  As of release 0.8, a WHOIS query no longer returns a simple string. Instead, you get a full <tt>Whois::Answer</tt> instance and this is just the beginning of the story.
@@ -166,9 +183,9 @@ Bug reports and Feature suggestions {are welcomed}[http://github.com/weppos/whoi
166
183
 
167
184
  == More
168
185
 
169
- * {Homepage}[http://ruby-whois.org]
186
+ * {Homepage}[http://www.ruby-whois.org]
170
187
  * {GitHub Repository}[http://github.com/weppos/whois]
171
- * {API Documentation}[http://whois.rubyforge.org]
188
+ * {API Documentation}[http://www.ruby-whois.org/api/]
172
189
  * {Discussion Group}[http://groups.google.com/group/ruby-whois]
173
190
 
174
191
 
data/lib/core_ext.rb CHANGED
@@ -2,7 +2,6 @@ unless :to_proc.respond_to?(:to_proc)
2
2
  class Symbol
3
3
  # Turns the symbol into a simple proc,
4
4
  # which is especially useful for enumerations.
5
- # Extracted from ActiveSupport.
6
5
  #
7
6
  # Examples
8
7
  #
@@ -12,6 +11,8 @@ unless :to_proc.respond_to?(:to_proc)
12
11
  # # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
13
12
  # people.select(&:manager?).collect(&:salary)
14
13
  #
14
+ # Extracted from ActiveSupport.
15
+ #
15
16
  # Returns a Proc which incapsulates the method business logic.
16
17
  def to_proc
17
18
  Proc.new { |*args| args.shift.__send__(self, *args) }
@@ -27,9 +28,9 @@ class DateTime
27
28
  # See http://github.com/weppos/whois/issues#issue/24
28
29
  unless method_defined?(:to_time)
29
30
  # Attempts to convert self to a Ruby Time object; returns self if out of range of Ruby Time class
30
- # Extracted from ActiveSupport.
31
- #
32
31
  # If self has an offset other than 0, self will just be returned unaltered, since there's no clean way to map it to a Time.
32
+ #
33
+ # Extracted from ActiveSupport.
33
34
  def to_time
34
35
  self.offset == 0 ? ::Time.utc(year, month, day, hour, min, sec) : self
35
36
  end
@@ -58,4 +58,4 @@ module Whois
58
58
  end
59
59
 
60
60
  end
61
- end
61
+ end
@@ -0,0 +1,41 @@
1
+ #
2
+ # = Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ #
7
+ # Category:: Net
8
+ # Package:: Whois
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ #
14
+ #++
15
+
16
+
17
+ require 'whois/answer/super_struct'
18
+
19
+
20
+ module Whois
21
+ class Answer
22
+
23
+ #
24
+ # = Nameserver
25
+ #
26
+ # Holds the details of the Name Servers extracted from the WHOIS answer.
27
+ #
28
+ # A Nameserver is composed by the following attributes:
29
+ #
30
+ # * <tt>:name</tt>:
31
+ # * <tt>:ipv4</tt>:
32
+ # * <tt>:ipv6</tt>:
33
+ #
34
+ # Be aware that every WHOIS server can return a different number of details
35
+ # or no details at all.
36
+ #
37
+ class Nameserver < SuperStruct.new(:name, :ipv4, :ipv6)
38
+ end
39
+
40
+ end
41
+ end
@@ -17,6 +17,7 @@
17
17
  require 'time'
18
18
  require 'whois/answer/contact'
19
19
  require 'whois/answer/registrar'
20
+ require 'whois/answer/nameserver'
20
21
  require 'whois/answer/parser/ast'
21
22
 
22
23
 
@@ -95,10 +95,10 @@ module Whois
95
95
  protected
96
96
 
97
97
  def parse
98
- Scanners::VerisignScanner.new(content_for_scanner).parse
98
+ Scanners::Verisign.new(content_for_scanner).parse
99
99
  end
100
100
 
101
- # In case of "Response SPAM", the responde include more than one item
101
+ # In case of "SPAM Response", the response contains more than one item
102
102
  # for the same value and the value becomes an Array.
103
103
  def last_useful_item(values)
104
104
  values.is_a?(Array) ? values.last : values
@@ -0,0 +1,145 @@
1
+ #
2
+ # = Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ #
7
+ # Category:: Net
8
+ # Package:: Whois
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ #
14
+ #++
15
+
16
+
17
+ module Whois
18
+ class Answer
19
+ class Parser
20
+ module Scanners
21
+
22
+ class Iana
23
+
24
+ def initialize(content)
25
+ @input = StringScanner.new(content)
26
+ end
27
+
28
+ def parse
29
+ @ast = {}
30
+ while !@input.eos?
31
+ trim_newline ||
32
+ parse_content
33
+ end
34
+ @ast
35
+ end
36
+
37
+ private
38
+
39
+ def parse_content
40
+ parse_disclaimer ||
41
+ parse_section ||
42
+ error("Unexpected token")
43
+ end
44
+
45
+ def trim_newline
46
+ @input.scan(/\n/)
47
+ end
48
+
49
+ def parse_section
50
+ if @input.scan(/^(.+):(.+)\n/)
51
+
52
+ # Adapt the section's name depending on the first line
53
+ section = case @input[1].strip
54
+ when 'contact'
55
+ @input[2].strip # use the contact type name as identifier
56
+ when 'created', 'changed'
57
+ 'dates'
58
+ when 'nserver'
59
+ 'nameservers'
60
+ else
61
+ @input[1].strip # Default name is the first label found
62
+ end
63
+
64
+ content = parse_section_pairs
65
+ @input.match?(/\n+/) || error("Unexpected end of section")
66
+ @ast[section] = content
67
+ else
68
+ false
69
+ end
70
+ end
71
+
72
+ def parse_section_pairs
73
+ # Sets by default the firsts values found in the section parsing bellow
74
+ section_name, section_value = @input[1].strip, @input[2].strip
75
+ #contents = {section_name => section_value}
76
+
77
+ contents = {}
78
+
79
+ while content = parse_section_pair
80
+ contents.merge!(content)
81
+ end
82
+
83
+ if contents.has_key? section_name
84
+ contents[section_name].insert(0, "#{section_value}\n")
85
+ else
86
+ contents[section_name] = section_value
87
+ end
88
+
89
+ if !contents.empty?
90
+ contents
91
+ else
92
+ false
93
+ end
94
+ end
95
+
96
+
97
+ def parse_section_pair
98
+ if @input.scan(/^(.+):\s*(.+)\n/)
99
+ key = @input[1].strip
100
+ values = [@input[2].strip]
101
+
102
+ while value = parse_section_pair_newlinevalue(key)
103
+ values << value
104
+ end
105
+ { key => values.join("\n") }
106
+ else
107
+ false
108
+ end
109
+ end
110
+
111
+
112
+ def parse_section_pair_newlinevalue(key)
113
+ if @input.scan(/^#{key}:\s*(.+)\n/)
114
+ @input[1].strip
115
+ else
116
+ false
117
+ end
118
+ end
119
+
120
+ def parse_disclaimer
121
+ if @input.match?(/^\%(.*?)\n/)
122
+ disclaimer = []
123
+ while @input.scan(/\%(.*?)\n/)
124
+ matched = @input[1].strip
125
+ disclaimer << matched if matched =~ /\w+/
126
+ end
127
+ @ast["Disclaimer"] = disclaimer.join(" ")
128
+ else
129
+ false
130
+ end
131
+ end
132
+
133
+ def error(message)
134
+ if @input.eos?
135
+ raise "Unexpected end of input."
136
+ else
137
+ raise "#{message}: #{@input.peek(@input.string.length)}"
138
+ end
139
+ end
140
+
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
@@ -19,7 +19,7 @@ module Whois
19
19
  class Parser
20
20
  module Scanners
21
21
 
22
- class VerisignScanner
22
+ class Verisign
23
23
 
24
24
  def initialize(content)
25
25
  @input = StringScanner.new(content)
@@ -36,7 +36,7 @@ module Whois
36
36
  private
37
37
 
38
38
  def parse_content
39
- trim_newline ||
39
+ trim_empty_line ||
40
40
  parse_not_found ||
41
41
  parse_disclaimer ||
42
42
  parse_notice ||
@@ -44,13 +44,23 @@ module Whois
44
44
  skip_iana_service ||
45
45
  trim_last_update ||
46
46
  trim_fuffa ||
47
+
47
48
  error("Unexpected token")
48
49
  end
49
50
 
50
- def trim_newline
51
- @input.scan(/\n/)
51
+ def trim_empty_line
52
+ @input.skip(/^\n/)
52
53
  end
53
54
 
55
+ def error(message)
56
+ if @input.eos?
57
+ raise "Unexpected end of input."
58
+ else
59
+ raise "#{message}: `#{@input.peek(@input.string.length)}'"
60
+ end
61
+ end
62
+
63
+
54
64
  def trim_last_update
55
65
  @input.scan(/>>>(.*?)<<<\n/)
56
66
  end
@@ -81,8 +91,6 @@ module Whois
81
91
  lines << @input[1].strip
82
92
  end
83
93
  @ast["Notice"] = lines.join(" ")
84
- else
85
- false
86
94
  end
87
95
  end
88
96
 
@@ -93,8 +101,6 @@ module Whois
93
101
  lines << @input[1].strip
94
102
  end
95
103
  @ast["Disclaimer"] = lines.join(" ")
96
- else
97
- false
98
104
  end
99
105
  end
100
106
 
@@ -107,18 +113,12 @@ module Whois
107
113
  @ast[key].is_a?(Array) || @ast[key] = [@ast[key]]
108
114
  @ast[key] << value
109
115
  end
110
- else
111
- false
112
116
  end
113
117
  end
114
118
 
115
- def error(message)
116
- raise "#{message}: #{@input.peek(@input.string.length)}"
117
- end
118
-
119
119
  end
120
120
 
121
121
  end
122
122
  end
123
123
  end
124
- end
124
+ end
@@ -100,10 +100,10 @@ module Whois
100
100
  protected
101
101
 
102
102
  def parse
103
- Scanners::VerisignScanner.new(content_for_scanner).parse
103
+ Scanners::Verisign.new(content_for_scanner).parse
104
104
  end
105
105
 
106
- # In case of "Response SPAM", the responde include more than one item
106
+ # In case of "SPAM Response", the response contains more than one item
107
107
  # for the same value and the value becomes an Array.
108
108
  def last_useful_item(values)
109
109
  values.is_a?(Array) ? values.last : values