whois-parser-next 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -1
  3. data/README.md +31 -12
  4. data/RELEASING.md +2 -2
  5. data/ROADMAP.md +20 -15
  6. data/SECURITY.md +2 -2
  7. data/lib/whois/parser/version.rb +1 -1
  8. data/lib/whois/parsers/base_centralnic_icann.rb +12 -0
  9. data/lib/whois/parsers/base_cira_registry.rb +19 -0
  10. data/lib/whois/parsers/base_icann_compliant.rb +1 -1
  11. data/lib/whois/parsers/base_identity_digital.rb +12 -0
  12. data/lib/whois/parsers/base_jwhois.rb +48 -0
  13. data/lib/whois/parsers/base_nic_reserved_available.rb +17 -0
  14. data/lib/whois/parsers/base_reserved_registry.rb +27 -0
  15. data/lib/whois/parsers/base_top1000_icann.rb +39 -0
  16. data/lib/whois/parsers/base_top1000_retired.rb +26 -0
  17. data/lib/whois/parsers/base_unsupported_registry.rb +1 -1
  18. data/lib/whois/parsers/cwhois.cnnic.cn.rb +10 -0
  19. data/lib/whois/parsers/registry_response_safety.rb +2 -0
  20. data/lib/whois/parsers/whois.ax.rb +15 -3
  21. data/lib/whois/parsers/whois.cctld.uz.rb +50 -14
  22. data/lib/whois/parsers/whois.cnnic.cn.rb +31 -3
  23. data/lib/whois/parsers/whois.dominio.gq.rb +11 -0
  24. data/lib/whois/parsers/whois.dotukr.com.rb +23 -0
  25. data/lib/whois/parsers/whois.gtld.knet.cn.rb +10 -0
  26. data/lib/whois/parsers/whois.kyregistry.ky.rb +10 -0
  27. data/lib/whois/parsers/whois.madrid.rs.corenic.net.rb +8 -0
  28. data/lib/whois/parsers/whois.mediaserv.net.rb +9 -0
  29. data/lib/whois/parsers/whois.ngtld.cn.rb +8 -0
  30. data/lib/whois/parsers/whois.nic.academy.rb +8 -0
  31. data/lib/whois/parsers/whois.nic.accountant.rb +8 -0
  32. data/lib/whois/parsers/whois.nic.actor.rb +8 -0
  33. data/lib/whois/parsers/whois.nic.agency.rb +8 -0
  34. data/lib/whois/parsers/whois.nic.airforce.rb +8 -0
  35. data/lib/whois/parsers/whois.nic.amsterdam.rb +8 -0
  36. data/lib/whois/parsers/whois.nic.apartments.rb +8 -0
  37. data/lib/whois/parsers/whois.nic.army.rb +8 -0
  38. data/lib/whois/parsers/whois.nic.associates.rb +8 -0
  39. data/lib/whois/parsers/whois.nic.auction.rb +8 -0
  40. data/lib/whois/parsers/whois.nic.aw.rb +33 -0
  41. data/lib/whois/parsers/whois.nic.baby.rb +8 -0
  42. data/lib/whois/parsers/whois.nic.bank.rb +29 -0
  43. data/lib/whois/parsers/whois.nic.bar.rb +8 -0
  44. data/lib/whois/parsers/whois.nic.barcelona.rb +8 -0
  45. data/lib/whois/parsers/whois.nic.barclays.rb +8 -0
  46. data/lib/whois/parsers/whois.nic.bargains.rb +8 -0
  47. data/lib/whois/parsers/whois.nic.basketball.rb +8 -0
  48. data/lib/whois/parsers/whois.nic.bayern.rb +8 -0
  49. data/lib/whois/parsers/whois.nic.beauty.rb +8 -0
  50. data/lib/whois/parsers/whois.nic.beer.rb +8 -0
  51. data/lib/whois/parsers/whois.nic.berlin.rb +8 -0
  52. data/lib/whois/parsers/whois.nic.bible.rb +8 -0
  53. data/lib/whois/parsers/whois.nic.bid.rb +8 -0
  54. data/lib/whois/parsers/whois.nic.bike.rb +8 -0
  55. data/lib/whois/parsers/whois.nic.bingo.rb +8 -0
  56. data/lib/whois/parsers/whois.nic.blog.rb +34 -0
  57. data/lib/whois/parsers/whois.nic.bmw.rb +8 -0
  58. data/lib/whois/parsers/whois.nic.bond.rb +8 -0
  59. data/lib/whois/parsers/whois.nic.boston.rb +8 -0
  60. data/lib/whois/parsers/whois.nic.broker.rb +8 -0
  61. data/lib/whois/parsers/whois.nic.build.rb +8 -0
  62. data/lib/whois/parsers/whois.nic.builders.rb +8 -0
  63. data/lib/whois/parsers/whois.nic.buzz.rb +8 -0
  64. data/lib/whois/parsers/whois.nic.bzh.rb +32 -0
  65. data/lib/whois/parsers/whois.nic.cafe.rb +8 -0
  66. data/lib/whois/parsers/whois.nic.cam.rb +8 -0
  67. data/lib/whois/parsers/whois.nic.camera.rb +8 -0
  68. data/lib/whois/parsers/whois.nic.canon.rb +11 -0
  69. data/lib/whois/parsers/whois.nic.capital.rb +8 -0
  70. data/lib/whois/parsers/whois.nic.cards.rb +8 -0
  71. data/lib/whois/parsers/whois.nic.careers.rb +8 -0
  72. data/lib/whois/parsers/whois.nic.casa.rb +8 -0
  73. data/lib/whois/parsers/whois.nic.cash.rb +8 -0
  74. data/lib/whois/parsers/whois.nic.center.rb +8 -0
  75. data/lib/whois/parsers/whois.nic.ceo.rb +8 -0
  76. data/lib/whois/parsers/whois.nic.ch.rb +6 -2
  77. data/lib/whois/parsers/whois.nic.charity.rb +8 -0
  78. data/lib/whois/parsers/whois.nic.city.rb +8 -0
  79. data/lib/whois/parsers/whois.nic.claims.rb +8 -0
  80. data/lib/whois/parsers/whois.nic.cleaning.rb +8 -0
  81. data/lib/whois/parsers/whois.nic.coach.rb +8 -0
  82. data/lib/whois/parsers/whois.nic.codes.rb +8 -0
  83. data/lib/whois/parsers/whois.nic.coffee.rb +8 -0
  84. data/lib/whois/parsers/whois.nic.computer.rb +8 -0
  85. data/lib/whois/parsers/whois.nic.condos.rb +8 -0
  86. data/lib/whois/parsers/whois.nic.construction.rb +8 -0
  87. data/lib/whois/parsers/whois.nic.contractors.rb +8 -0
  88. data/lib/whois/parsers/whois.nic.cooking.rb +8 -0
  89. data/lib/whois/parsers/whois.nic.cool.rb +8 -0
  90. data/lib/whois/parsers/whois.nic.coop.rb +18 -3
  91. data/lib/whois/parsers/whois.nic.creditcard.rb +8 -0
  92. data/lib/whois/parsers/whois.nic.cruises.rb +8 -0
  93. data/lib/whois/parsers/whois.nic.cyou.rb +8 -0
  94. data/lib/whois/parsers/whois.nic.dance.rb +8 -0
  95. data/lib/whois/parsers/whois.nic.data.rb +8 -0
  96. data/lib/whois/parsers/whois.nic.deals.rb +8 -0
  97. data/lib/whois/parsers/whois.nic.degree.rb +8 -0
  98. data/lib/whois/parsers/whois.nic.democrat.rb +8 -0
  99. data/lib/whois/parsers/whois.nic.diamonds.rb +8 -0
  100. data/lib/whois/parsers/whois.nic.digital.rb +8 -0
  101. data/lib/whois/parsers/whois.nic.directory.rb +8 -0
  102. data/lib/whois/parsers/whois.nic.doctor.rb +8 -0
  103. data/lib/whois/parsers/whois.nic.dog.rb +8 -0
  104. data/lib/whois/parsers/whois.nic.dvag.rb +8 -0
  105. data/lib/whois/parsers/whois.nic.eco.rb +8 -0
  106. data/lib/whois/parsers/whois.nic.education.rb +8 -0
  107. data/lib/whois/parsers/whois.nic.email.rb +8 -0
  108. data/lib/whois/parsers/whois.nic.energy.rb +8 -0
  109. data/lib/whois/parsers/whois.nic.engineer.rb +8 -0
  110. data/lib/whois/parsers/whois.nic.equipment.rb +8 -0
  111. data/lib/whois/parsers/whois.nic.estate.rb +8 -0
  112. data/lib/whois/parsers/whois.nic.eus.rb +8 -0
  113. data/lib/whois/parsers/whois.nic.expert.rb +8 -0
  114. data/lib/whois/parsers/whois.nic.exposed.rb +8 -0
  115. data/lib/whois/parsers/whois.nic.express.rb +8 -0
  116. data/lib/whois/parsers/whois.nic.family.rb +8 -0
  117. data/lib/whois/parsers/whois.nic.fan.rb +8 -0
  118. data/lib/whois/parsers/whois.nic.fans.rb +8 -0
  119. data/lib/whois/parsers/whois.nic.feedback.rb +8 -0
  120. data/lib/whois/parsers/whois.nic.film.rb +8 -0
  121. data/lib/whois/parsers/whois.nic.fish.rb +8 -0
  122. data/lib/whois/parsers/whois.nic.fishing.rb +8 -0
  123. data/lib/whois/parsers/whois.nic.florist.rb +8 -0
  124. data/lib/whois/parsers/whois.nic.football.rb +8 -0
  125. data/lib/whois/parsers/whois.nic.forex.rb +8 -0
  126. data/lib/whois/parsers/whois.nic.foundation.rb +8 -0
  127. data/lib/whois/parsers/whois.nic.fox.rb +8 -0
  128. data/lib/whois/parsers/whois.nic.fr.rb +3 -0
  129. data/lib/whois/parsers/whois.nic.frl.rb +8 -0
  130. data/lib/whois/parsers/whois.nic.furniture.rb +8 -0
  131. data/lib/whois/parsers/whois.nic.futbol.rb +8 -0
  132. data/lib/whois/parsers/whois.nic.fyi.rb +8 -0
  133. data/lib/whois/parsers/whois.nic.gal.rb +8 -0
  134. data/lib/whois/parsers/whois.nic.gd.rb +4 -0
  135. data/lib/whois/parsers/whois.nic.ge.rb +74 -0
  136. data/lib/whois/parsers/whois.nic.gent.rb +8 -0
  137. data/lib/whois/parsers/whois.nic.giving.rb +8 -0
  138. data/lib/whois/parsers/whois.nic.glass.rb +8 -0
  139. data/lib/whois/parsers/whois.nic.gmbh.rb +8 -0
  140. data/lib/whois/parsers/whois.nic.graphics.rb +8 -0
  141. data/lib/whois/parsers/whois.nic.gratis.rb +8 -0
  142. data/lib/whois/parsers/whois.nic.guru.rb +8 -0
  143. data/lib/whois/parsers/whois.nic.hamburg.rb +8 -0
  144. data/lib/whois/parsers/whois.nic.haus.rb +8 -0
  145. data/lib/whois/parsers/whois.nic.holdings.rb +8 -0
  146. data/lib/whois/parsers/whois.nic.holiday.rb +8 -0
  147. data/lib/whois/parsers/whois.nic.house.rb +8 -0
  148. data/lib/whois/parsers/whois.nic.immo.rb +8 -0
  149. data/lib/whois/parsers/whois.nic.immobilien.rb +8 -0
  150. data/lib/whois/parsers/whois.nic.inc.rb +8 -0
  151. data/lib/whois/parsers/whois.nic.institute.rb +8 -0
  152. data/lib/whois/parsers/whois.nic.insure.rb +8 -0
  153. data/lib/whois/parsers/whois.nic.international.rb +8 -0
  154. data/lib/whois/parsers/whois.nic.jewelry.rb +8 -0
  155. data/lib/whois/parsers/whois.nic.kaufen.rb +8 -0
  156. data/lib/whois/parsers/whois.nic.kiwi.rb +8 -0
  157. data/lib/whois/parsers/whois.nic.kn.rb +8 -0
  158. data/lib/whois/parsers/whois.nic.kyoto.rb +8 -0
  159. data/lib/whois/parsers/whois.nic.land.rb +8 -0
  160. data/lib/whois/parsers/whois.nic.lat.rb +8 -0
  161. data/lib/whois/parsers/whois.nic.lawyer.rb +8 -0
  162. data/lib/whois/parsers/whois.nic.lease.rb +8 -0
  163. data/lib/whois/parsers/whois.nic.legal.rb +8 -0
  164. data/lib/whois/parsers/whois.nic.limited.rb +8 -0
  165. data/lib/whois/parsers/whois.nic.limo.rb +8 -0
  166. data/lib/whois/parsers/whois.nic.live.rb +8 -0
  167. data/lib/whois/parsers/whois.nic.london.rb +8 -0
  168. data/lib/whois/parsers/whois.nic.love.rb +8 -0
  169. data/lib/whois/parsers/whois.nic.luxury.rb +8 -0
  170. data/lib/whois/parsers/whois.nic.maison.rb +8 -0
  171. data/lib/whois/parsers/whois.nic.makeup.rb +8 -0
  172. data/lib/whois/parsers/whois.nic.man.rb +8 -0
  173. data/lib/whois/parsers/whois.nic.management.rb +8 -0
  174. data/lib/whois/parsers/whois.nic.mba.rb +8 -0
  175. data/lib/whois/parsers/whois.nic.media.rb +8 -0
  176. data/lib/whois/parsers/whois.nic.memorial.rb +8 -0
  177. data/lib/whois/parsers/whois.nic.men.rb +8 -0
  178. data/lib/whois/parsers/whois.nic.miami.rb +8 -0
  179. data/lib/whois/parsers/whois.nic.mobile.rb +8 -0
  180. data/lib/whois/parsers/whois.nic.moda.rb +8 -0
  181. data/lib/whois/parsers/whois.nic.moe.rb +8 -0
  182. data/lib/whois/parsers/whois.nic.money.rb +8 -0
  183. data/lib/whois/parsers/whois.nic.monster.rb +8 -0
  184. data/lib/whois/parsers/whois.nic.mortgage.rb +8 -0
  185. data/lib/whois/parsers/whois.nic.moscow.rb +8 -0
  186. data/lib/whois/parsers/whois.nic.museum.rb +8 -0
  187. data/lib/whois/parsers/whois.nic.net.sa.rb +28 -9
  188. data/lib/whois/parsers/whois.nic.network.rb +8 -0
  189. data/lib/whois/parsers/whois.nic.nrw.rb +8 -0
  190. data/lib/whois/parsers/whois.nic.observer.rb +8 -0
  191. data/lib/whois/parsers/whois.nic.okinawa.rb +17 -0
  192. data/lib/whois/parsers/whois.nic.ooo.rb +8 -0
  193. data/lib/whois/parsers/whois.nic.partners.rb +8 -0
  194. data/lib/whois/parsers/whois.nic.photography.rb +8 -0
  195. data/lib/whois/parsers/whois.nic.photos.rb +8 -0
  196. data/lib/whois/parsers/whois.nic.pizza.rb +8 -0
  197. data/lib/whois/parsers/whois.nic.place.rb +8 -0
  198. data/lib/whois/parsers/whois.nic.plumbing.rb +8 -0
  199. data/lib/whois/parsers/whois.nic.pm.rb +3 -0
  200. data/lib/whois/parsers/whois.nic.press.rb +8 -0
  201. data/lib/whois/parsers/whois.nic.properties.rb +8 -0
  202. data/lib/whois/parsers/whois.nic.quebec.rb +8 -0
  203. data/lib/whois/parsers/whois.nic.quest.rb +8 -0
  204. data/lib/whois/parsers/whois.nic.racing.rb +8 -0
  205. data/lib/whois/parsers/whois.nic.radio.rb +8 -0
  206. data/lib/whois/parsers/whois.nic.realty.rb +8 -0
  207. data/lib/whois/parsers/whois.nic.recipes.rb +8 -0
  208. data/lib/whois/parsers/whois.nic.reisen.rb +8 -0
  209. data/lib/whois/parsers/whois.nic.rent.rb +8 -0
  210. data/lib/whois/parsers/whois.nic.rentals.rb +8 -0
  211. data/lib/whois/parsers/whois.nic.republican.rb +8 -0
  212. data/lib/whois/parsers/whois.nic.rest.rb +8 -0
  213. data/lib/whois/parsers/whois.nic.restaurant.rb +8 -0
  214. data/lib/whois/parsers/whois.nic.review.rb +8 -0
  215. data/lib/whois/parsers/whois.nic.rip.rb +8 -0
  216. data/lib/whois/parsers/whois.nic.rodeo.rb +8 -0
  217. data/lib/whois/parsers/whois.nic.ruhr.rb +8 -0
  218. data/lib/whois/parsers/whois.nic.saarland.rb +8 -0
  219. data/lib/whois/parsers/whois.nic.salon.rb +8 -0
  220. data/lib/whois/parsers/whois.nic.sap.rb +8 -0
  221. data/lib/whois/parsers/whois.nic.sarl.rb +8 -0
  222. data/lib/whois/parsers/whois.nic.sbs.rb +8 -0
  223. data/lib/whois/parsers/whois.nic.schule.rb +8 -0
  224. data/lib/whois/parsers/whois.nic.schwarz.rb +8 -0
  225. data/lib/whois/parsers/whois.nic.scot.rb +8 -0
  226. data/lib/whois/parsers/whois.nic.security.rb +8 -0
  227. data/lib/whois/parsers/whois.nic.select.rb +8 -0
  228. data/lib/whois/parsers/whois.nic.services.rb +8 -0
  229. data/lib/whois/parsers/whois.nic.shoes.rb +8 -0
  230. data/lib/whois/parsers/whois.nic.shopping.rb +8 -0
  231. data/lib/whois/parsers/whois.nic.skin.rb +8 -0
  232. data/lib/whois/parsers/whois.nic.soccer.rb +8 -0
  233. data/lib/whois/parsers/whois.nic.solar.rb +8 -0
  234. data/lib/whois/parsers/whois.nic.sport.rb +8 -0
  235. data/lib/whois/parsers/whois.nic.ss.rb +36 -0
  236. data/lib/whois/parsers/whois.nic.storage.rb +8 -0
  237. data/lib/whois/parsers/whois.nic.study.rb +8 -0
  238. data/lib/whois/parsers/whois.nic.style.rb +8 -0
  239. data/lib/whois/parsers/whois.nic.support.rb +8 -0
  240. data/lib/whois/parsers/whois.nic.surf.rb +8 -0
  241. data/lib/whois/parsers/whois.nic.surgery.rb +8 -0
  242. data/lib/whois/parsers/whois.nic.swiss.rb +8 -0
  243. data/lib/whois/parsers/whois.nic.taipei.rb +8 -0
  244. data/lib/whois/parsers/whois.nic.tatar.rb +19 -0
  245. data/lib/whois/parsers/whois.nic.team.rb +8 -0
  246. data/lib/whois/parsers/whois.nic.tennis.rb +8 -0
  247. data/lib/whois/parsers/whois.nic.theater.rb +8 -0
  248. data/lib/whois/parsers/whois.nic.tickets.rb +8 -0
  249. data/lib/whois/parsers/whois.nic.tienda.rb +8 -0
  250. data/lib/whois/parsers/whois.nic.tips.rb +8 -0
  251. data/lib/whois/parsers/whois.nic.tires.rb +8 -0
  252. data/lib/whois/parsers/whois.nic.tirol.rb +8 -0
  253. data/lib/whois/parsers/whois.nic.top.rb +15 -0
  254. data/lib/whois/parsers/whois.nic.town.rb +8 -0
  255. data/lib/whois/parsers/whois.nic.toyota.rb +8 -0
  256. data/lib/whois/parsers/whois.nic.toys.rb +8 -0
  257. data/lib/whois/parsers/whois.nic.trade.rb +8 -0
  258. data/lib/whois/parsers/whois.nic.training.rb +8 -0
  259. data/lib/whois/parsers/whois.nic.university.rb +8 -0
  260. data/lib/whois/parsers/whois.nic.uno.rb +8 -0
  261. data/lib/whois/parsers/whois.nic.us.rb +30 -0
  262. data/lib/whois/parsers/whois.nic.vet.rb +8 -0
  263. data/lib/whois/parsers/whois.nic.viajes.rb +8 -0
  264. data/lib/whois/parsers/whois.nic.villas.rb +8 -0
  265. data/lib/whois/parsers/whois.nic.voyage.rb +8 -0
  266. data/lib/whois/parsers/whois.nic.webcam.rb +8 -0
  267. data/lib/whois/parsers/whois.nic.wedding.rb +8 -0
  268. data/lib/whois/parsers/whois.nic.wien.rb +8 -0
  269. data/lib/whois/parsers/whois.nic.wiki.rb +8 -0
  270. data/lib/whois/parsers/whois.nic.wtf.rb +8 -0
  271. data/lib/whois/parsers/whois.nic.xin.rb +8 -0
  272. data/lib/whois/parsers/whois.nic.xn--80adxhks.rb +8 -0
  273. data/lib/whois/parsers/whois.nic.xn--d1acj3b.rb +15 -0
  274. data/lib/whois/parsers/whois.nic.xn--mk1bu44c.rb +13 -0
  275. data/lib/whois/parsers/whois.nic.xn--t60b56a.rb +8 -0
  276. data/lib/whois/parsers/whois.nic.xn--tckwe.rb +39 -0
  277. data/lib/whois/parsers/whois.nic.yoga.rb +8 -0
  278. data/lib/whois/parsers/whois.nic.yokohama.rb +8 -0
  279. data/lib/whois/parsers/whois.nic.yt.rb +24 -0
  280. data/lib/whois/parsers/whois.online.rs.corenic.net.rb +8 -0
  281. data/lib/whois/parsers/whois.pknic.net.pk.rb +70 -0
  282. data/lib/whois/parsers/whois.publicinterestregistry.net.rb +8 -0
  283. data/lib/whois/parsers/whois.ryce-rsp.com.rb +13 -0
  284. data/lib/whois/parsers/whois.teleinfo.cn.rb +16 -0
  285. metadata +285 -1
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicFutbol < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicFyi < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicGal < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^The queried object does not exist: no matching objects found\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -20,6 +20,10 @@ module Whois
20
20
  #
21
21
  class WhoisNicGd < BaseShared3
22
22
 
23
+ property_supported :available? do
24
+ super() || content_for_scanner.match?(/^The queried object does not exist:\s*DOMAIN NOT FOUND\s*$/i)
25
+ end
26
+
23
27
  # NEWPROPERTY
24
28
  def reserved?
25
29
  !!content_for_scanner.match(/RESTRICTED/)
@@ -0,0 +1,74 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require_relative 'base'
11
+ require_relative 'registry_response_safety'
12
+
13
+
14
+ module Whois
15
+ class Parsers
16
+
17
+ # Parser for the whois.nic.ge server.
18
+ #
19
+ class WhoisNicGe < Base
20
+ include RegistryResponseSafety
21
+
22
+ property_supported :status do
23
+ classify_status
24
+ end
25
+
26
+ property_supported :available? do
27
+ classify_status == :available
28
+ end
29
+
30
+ property_supported :registered? do
31
+ classify_status == :registered
32
+ end
33
+
34
+ private
35
+
36
+ def classify_status
37
+ if registered_evidence?
38
+ :registered
39
+ elsif available_evidence?
40
+ :available
41
+ else
42
+ :unknown
43
+ end
44
+ end
45
+
46
+ def registered_evidence?
47
+ registered_domain_names.one? && absence_domain_names.empty? && status_values == ['ok']
48
+ end
49
+
50
+ def available_evidence?
51
+ absence_domain_names.one? && registered_domain_names.empty? && status_values.empty? &&
52
+ !content_for_scanner.match?(/^[ \t]*Domain Name:/i)
53
+ end
54
+
55
+ def registered_domain_names
56
+ content_for_scanner.scan(
57
+ /^[ \t]*Domain Name:[ \t]*((?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+ge)[ \t]*$/i
58
+ ).flatten.map(&:downcase).uniq
59
+ end
60
+
61
+ def status_values
62
+ content_for_scanner.scan(/^[ \t]*Domain Status:[ \t]*(.+?)[ \t]*$/i).flatten.map(&:downcase).uniq
63
+ end
64
+
65
+ def absence_domain_names
66
+ content_for_scanner.scan(
67
+ /^[ \t]*No match for "((?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+ge)"\.[ \t]*$/i
68
+ ).flatten.map(&:downcase).uniq
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.centralnic.com'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGent < WhoisCentralnicCom
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGiving < BaseIcannCompliant
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGlass < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGmbh < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGraphics < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGratis < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicGuru < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicHamburg < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicHaus < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicHoldings < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicHoliday < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicHouse < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicImmo < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicImmobilien < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicInc < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^The queried object does not exist: DOMAIN NOT FOUND\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicInstitute < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicInsure < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicInternational < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicJewelry < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicKaufen < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_cira_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicKiwi < BaseCiraRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicKn < BaseIcannCompliant
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_retired'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicKyoto < BaseTop1000Retired
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLand < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicLat < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^The queried object does not exist: DOMAIN NOT FOUND\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLawyer < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLease < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLegal < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLimited < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLimo < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLive < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLondon < BaseIcannCompliant
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicLove < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicLuxury < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^The queried object does not exist: DOMAIN NOT FOUND\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMaison < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMakeup < BaseIcannCompliant
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMan < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicManagement < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMba < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMedia < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMemorial < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicMen < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^No Data Found\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMiami < BaseIcannCompliant
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMobile < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicModa < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicMoe < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^No Data Found\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMoney < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMonster < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMortgage < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicMoscow < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^Domain not found\.\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicMuseum < BaseTop1000Icann
6
+ end
7
+ end
8
+ end