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
@@ -27,21 +27,15 @@ module Whois
27
27
  include RegistryResponseSafety
28
28
 
29
29
  property_supported :status do
30
- if available?
31
- :available
32
- elsif content_for_scanner.match?(/^Domain Name:\s*\S+/i)
33
- :registered
34
- else
35
- :unknown
36
- end
30
+ classify_status
37
31
  end
38
32
 
39
33
  property_supported :available? do
40
- !!(content_for_scanner =~ /^No Match for/)
34
+ classify_status == :available
41
35
  end
42
36
 
43
37
  property_supported :registered? do
44
- status == :registered
38
+ classify_status == :registered
45
39
  end
46
40
 
47
41
 
@@ -68,6 +62,31 @@ module Whois
68
62
  end
69
63
  end
70
64
 
65
+ private
66
+
67
+ def classify_status
68
+ registered = registered_domain_names
69
+ absent = absence_domain_names
70
+
71
+ if registered.one? && absent.empty?
72
+ :registered
73
+ elsif absent.one? && registered.empty?
74
+ :available
75
+ else
76
+ :unknown
77
+ end
78
+ end
79
+
80
+ def registered_domain_names
81
+ content_for_scanner.scan(/^[ \t]*Domain Name:[ \t]*([^\s]+\.sa)[ \t]*$/i).flatten.map(&:downcase).uniq
82
+ end
83
+
84
+ def absence_domain_names
85
+ content_for_scanner.scan(
86
+ /^[ \t]*No Match for (?:domain:[ \t]*)?([^\s]+\.sa)[ \t]*$/i
87
+ ).flatten.map(&:downcase).uniq
88
+ end
89
+
71
90
  end
72
91
 
73
92
  end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicNetwork < 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 WhoisNicNrw < 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 WhoisNicObserver < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^>>> Domain \S+ is available for registration\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'base_unsupported_registry'
2
+ require_relative 'registry_response_safety'
3
+
4
+ module Whois
5
+ class Parsers
6
+ # The registry retired port 43 WHOIS in favour of RDAP.
7
+ class WhoisNicOkinawa < BaseUnsupportedRegistry
8
+ include RegistryResponseSafety
9
+
10
+ def response_unavailable?
11
+ super || response_incomplete? || content_for_scanner.match?(
12
+ /^Notice: Effective .* WHOIS service has been retired\b/i
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicOoo < 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 WhoisNicPartners < 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 WhoisNicPhotography < 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 WhoisNicPhotos < 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 WhoisNicPizza < 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 WhoisNicPlace < 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 WhoisNicPlumbing < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -19,6 +19,9 @@ module Whois
19
19
  # The Example parser for the list of all available methods.
20
20
  #
21
21
  class WhoisNicPm < BaseNicFr
22
+ property_supported :available? do
23
+ !!(content_for_scanner =~ /^(?:%% NOT FOUND|%% No entries found in the AFNIC Database\.)\s*$/i)
24
+ end
22
25
  end
23
26
 
24
27
  end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicPress < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^>>> Domain \S+ is available for registration\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 WhoisNicProperties < 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 WhoisNicQuebec < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.centralnic.com'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicQuest < WhoisCentralnicCom
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicRacing < 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_centralnic_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicRadio < BaseCentralnicIcann
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 WhoisNicRealty < 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 WhoisNicRecipes < 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 WhoisNicReisen < 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 WhoisNicRent < 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 WhoisNicRentals < 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 WhoisNicRepublican < 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 WhoisNicRest < 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 WhoisNicRestaurant < 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 WhoisNicReview < 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 WhoisNicRip < 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 WhoisNicRodeo < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.centralnic.com'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicRuhr < WhoisCentralnicCom
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicSaarland < 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 WhoisNicSalon < 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 WhoisNicSap < 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 WhoisNicSarl < 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 WhoisNicSbs < 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 WhoisNicSchule < 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 WhoisNicSchwarz < 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 WhoisNicScot < 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
@@ -0,0 +1,8 @@
1
+ require_relative 'base_centralnic_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicSecurity < BaseCentralnicIcann
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 WhoisNicSelect < 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 WhoisNicServices < 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 WhoisNicShoes < 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 WhoisNicShopping < 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 WhoisNicSkin < 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 WhoisNicSoccer < 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 WhoisNicSolar < 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 WhoisNicSport < BaseIcannCompliant
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'base'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # SSNIC returns an explicit no-object marker for an absent name. A
6
+ # prohibited string is kept unknown, not registered.
7
+ class WhoisNicSs < Base
8
+ property_supported :status do
9
+ if available?
10
+ :available
11
+ elsif content_for_scanner.match?(/^Domain Status:\s+Prohibited String\b/i)
12
+ :unknown
13
+ elsif registered_evidence?
14
+ :registered
15
+ else
16
+ :unknown
17
+ end
18
+ end
19
+
20
+ property_supported :available? do
21
+ !!content_for_scanner.match?(/^The queried object does not exist:\s*No Object Found\s*$/i)
22
+ end
23
+
24
+ property_supported :registered? do
25
+ status == :registered
26
+ end
27
+
28
+ private
29
+
30
+ def registered_evidence?
31
+ content_for_scanner.match?(/^Domain Name:\s+\S+/i) &&
32
+ content_for_scanner.match?(/^Domain Status:\s+(?!Prohibited String\b)\S+/i)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicStorage < 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_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicStudy < 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 WhoisNicStyle < 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 WhoisNicSupport < 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 WhoisNicSurf < 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 WhoisNicSurgery < 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 WhoisNicSwiss < 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
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicTaipei < BaseIcannCompliant
6
+ end
7
+ end
8
+ end