whois-parser-next 0.1.0 → 0.2.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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -1
  3. data/README.md +16 -8
  4. data/RELEASING.md +2 -2
  5. data/lib/whois/parser/version.rb +1 -1
  6. data/lib/whois/parsers/base_centralnic_icann.rb +12 -0
  7. data/lib/whois/parsers/base_cira_registry.rb +19 -0
  8. data/lib/whois/parsers/base_icann_compliant.rb +1 -1
  9. data/lib/whois/parsers/base_identity_digital.rb +12 -0
  10. data/lib/whois/parsers/base_jwhois.rb +48 -0
  11. data/lib/whois/parsers/base_nic_reserved_available.rb +17 -0
  12. data/lib/whois/parsers/base_reserved_registry.rb +27 -0
  13. data/lib/whois/parsers/base_top1000_icann.rb +39 -0
  14. data/lib/whois/parsers/base_top1000_retired.rb +26 -0
  15. data/lib/whois/parsers/base_unsupported_registry.rb +1 -1
  16. data/lib/whois/parsers/cwhois.cnnic.cn.rb +10 -0
  17. data/lib/whois/parsers/registry_response_safety.rb +2 -0
  18. data/lib/whois/parsers/whois.ax.rb +15 -3
  19. data/lib/whois/parsers/whois.cnnic.cn.rb +31 -3
  20. data/lib/whois/parsers/whois.dominio.gq.rb +11 -0
  21. data/lib/whois/parsers/whois.dotukr.com.rb +23 -0
  22. data/lib/whois/parsers/whois.gtld.knet.cn.rb +10 -0
  23. data/lib/whois/parsers/whois.kyregistry.ky.rb +10 -0
  24. data/lib/whois/parsers/whois.madrid.rs.corenic.net.rb +8 -0
  25. data/lib/whois/parsers/whois.mediaserv.net.rb +9 -0
  26. data/lib/whois/parsers/whois.ngtld.cn.rb +8 -0
  27. data/lib/whois/parsers/whois.nic.academy.rb +8 -0
  28. data/lib/whois/parsers/whois.nic.accountant.rb +8 -0
  29. data/lib/whois/parsers/whois.nic.actor.rb +8 -0
  30. data/lib/whois/parsers/whois.nic.agency.rb +8 -0
  31. data/lib/whois/parsers/whois.nic.airforce.rb +8 -0
  32. data/lib/whois/parsers/whois.nic.amsterdam.rb +8 -0
  33. data/lib/whois/parsers/whois.nic.apartments.rb +8 -0
  34. data/lib/whois/parsers/whois.nic.army.rb +8 -0
  35. data/lib/whois/parsers/whois.nic.associates.rb +8 -0
  36. data/lib/whois/parsers/whois.nic.auction.rb +8 -0
  37. data/lib/whois/parsers/whois.nic.aw.rb +33 -0
  38. data/lib/whois/parsers/whois.nic.baby.rb +8 -0
  39. data/lib/whois/parsers/whois.nic.bank.rb +29 -0
  40. data/lib/whois/parsers/whois.nic.bar.rb +8 -0
  41. data/lib/whois/parsers/whois.nic.barcelona.rb +8 -0
  42. data/lib/whois/parsers/whois.nic.barclays.rb +8 -0
  43. data/lib/whois/parsers/whois.nic.bargains.rb +8 -0
  44. data/lib/whois/parsers/whois.nic.basketball.rb +8 -0
  45. data/lib/whois/parsers/whois.nic.bayern.rb +8 -0
  46. data/lib/whois/parsers/whois.nic.beauty.rb +8 -0
  47. data/lib/whois/parsers/whois.nic.beer.rb +8 -0
  48. data/lib/whois/parsers/whois.nic.berlin.rb +8 -0
  49. data/lib/whois/parsers/whois.nic.bible.rb +8 -0
  50. data/lib/whois/parsers/whois.nic.bid.rb +8 -0
  51. data/lib/whois/parsers/whois.nic.bike.rb +8 -0
  52. data/lib/whois/parsers/whois.nic.bingo.rb +8 -0
  53. data/lib/whois/parsers/whois.nic.blog.rb +34 -0
  54. data/lib/whois/parsers/whois.nic.bmw.rb +8 -0
  55. data/lib/whois/parsers/whois.nic.bond.rb +8 -0
  56. data/lib/whois/parsers/whois.nic.boston.rb +8 -0
  57. data/lib/whois/parsers/whois.nic.broker.rb +8 -0
  58. data/lib/whois/parsers/whois.nic.build.rb +8 -0
  59. data/lib/whois/parsers/whois.nic.builders.rb +8 -0
  60. data/lib/whois/parsers/whois.nic.buzz.rb +8 -0
  61. data/lib/whois/parsers/whois.nic.bzh.rb +32 -0
  62. data/lib/whois/parsers/whois.nic.cafe.rb +8 -0
  63. data/lib/whois/parsers/whois.nic.cam.rb +8 -0
  64. data/lib/whois/parsers/whois.nic.camera.rb +8 -0
  65. data/lib/whois/parsers/whois.nic.canon.rb +11 -0
  66. data/lib/whois/parsers/whois.nic.capital.rb +8 -0
  67. data/lib/whois/parsers/whois.nic.cards.rb +8 -0
  68. data/lib/whois/parsers/whois.nic.careers.rb +8 -0
  69. data/lib/whois/parsers/whois.nic.casa.rb +8 -0
  70. data/lib/whois/parsers/whois.nic.cash.rb +8 -0
  71. data/lib/whois/parsers/whois.nic.center.rb +8 -0
  72. data/lib/whois/parsers/whois.nic.ceo.rb +8 -0
  73. data/lib/whois/parsers/whois.nic.charity.rb +8 -0
  74. data/lib/whois/parsers/whois.nic.city.rb +8 -0
  75. data/lib/whois/parsers/whois.nic.claims.rb +8 -0
  76. data/lib/whois/parsers/whois.nic.cleaning.rb +8 -0
  77. data/lib/whois/parsers/whois.nic.coach.rb +8 -0
  78. data/lib/whois/parsers/whois.nic.codes.rb +8 -0
  79. data/lib/whois/parsers/whois.nic.coffee.rb +8 -0
  80. data/lib/whois/parsers/whois.nic.computer.rb +8 -0
  81. data/lib/whois/parsers/whois.nic.condos.rb +8 -0
  82. data/lib/whois/parsers/whois.nic.construction.rb +8 -0
  83. data/lib/whois/parsers/whois.nic.contractors.rb +8 -0
  84. data/lib/whois/parsers/whois.nic.cooking.rb +8 -0
  85. data/lib/whois/parsers/whois.nic.cool.rb +8 -0
  86. data/lib/whois/parsers/whois.nic.coop.rb +18 -3
  87. data/lib/whois/parsers/whois.nic.creditcard.rb +8 -0
  88. data/lib/whois/parsers/whois.nic.cruises.rb +8 -0
  89. data/lib/whois/parsers/whois.nic.cyou.rb +8 -0
  90. data/lib/whois/parsers/whois.nic.dance.rb +8 -0
  91. data/lib/whois/parsers/whois.nic.data.rb +8 -0
  92. data/lib/whois/parsers/whois.nic.deals.rb +8 -0
  93. data/lib/whois/parsers/whois.nic.degree.rb +8 -0
  94. data/lib/whois/parsers/whois.nic.democrat.rb +8 -0
  95. data/lib/whois/parsers/whois.nic.diamonds.rb +8 -0
  96. data/lib/whois/parsers/whois.nic.directory.rb +8 -0
  97. data/lib/whois/parsers/whois.nic.doctor.rb +8 -0
  98. data/lib/whois/parsers/whois.nic.dog.rb +8 -0
  99. data/lib/whois/parsers/whois.nic.dvag.rb +8 -0
  100. data/lib/whois/parsers/whois.nic.eco.rb +8 -0
  101. data/lib/whois/parsers/whois.nic.education.rb +8 -0
  102. data/lib/whois/parsers/whois.nic.energy.rb +8 -0
  103. data/lib/whois/parsers/whois.nic.engineer.rb +8 -0
  104. data/lib/whois/parsers/whois.nic.equipment.rb +8 -0
  105. data/lib/whois/parsers/whois.nic.estate.rb +8 -0
  106. data/lib/whois/parsers/whois.nic.eus.rb +8 -0
  107. data/lib/whois/parsers/whois.nic.expert.rb +8 -0
  108. data/lib/whois/parsers/whois.nic.exposed.rb +8 -0
  109. data/lib/whois/parsers/whois.nic.express.rb +8 -0
  110. data/lib/whois/parsers/whois.nic.family.rb +8 -0
  111. data/lib/whois/parsers/whois.nic.fan.rb +8 -0
  112. data/lib/whois/parsers/whois.nic.fans.rb +8 -0
  113. data/lib/whois/parsers/whois.nic.feedback.rb +8 -0
  114. data/lib/whois/parsers/whois.nic.film.rb +8 -0
  115. data/lib/whois/parsers/whois.nic.fish.rb +8 -0
  116. data/lib/whois/parsers/whois.nic.fishing.rb +8 -0
  117. data/lib/whois/parsers/whois.nic.florist.rb +8 -0
  118. data/lib/whois/parsers/whois.nic.football.rb +8 -0
  119. data/lib/whois/parsers/whois.nic.forex.rb +8 -0
  120. data/lib/whois/parsers/whois.nic.foundation.rb +8 -0
  121. data/lib/whois/parsers/whois.nic.fox.rb +8 -0
  122. data/lib/whois/parsers/whois.nic.fr.rb +3 -0
  123. data/lib/whois/parsers/whois.nic.frl.rb +8 -0
  124. data/lib/whois/parsers/whois.nic.furniture.rb +8 -0
  125. data/lib/whois/parsers/whois.nic.futbol.rb +8 -0
  126. data/lib/whois/parsers/whois.nic.fyi.rb +8 -0
  127. data/lib/whois/parsers/whois.nic.gal.rb +8 -0
  128. data/lib/whois/parsers/whois.nic.gd.rb +4 -0
  129. data/lib/whois/parsers/whois.nic.gent.rb +8 -0
  130. data/lib/whois/parsers/whois.nic.giving.rb +8 -0
  131. data/lib/whois/parsers/whois.nic.glass.rb +8 -0
  132. data/lib/whois/parsers/whois.nic.gmbh.rb +8 -0
  133. data/lib/whois/parsers/whois.nic.graphics.rb +8 -0
  134. data/lib/whois/parsers/whois.nic.gratis.rb +8 -0
  135. data/lib/whois/parsers/whois.nic.guru.rb +8 -0
  136. data/lib/whois/parsers/whois.nic.hamburg.rb +8 -0
  137. data/lib/whois/parsers/whois.nic.haus.rb +8 -0
  138. data/lib/whois/parsers/whois.nic.holdings.rb +8 -0
  139. data/lib/whois/parsers/whois.nic.holiday.rb +8 -0
  140. data/lib/whois/parsers/whois.nic.house.rb +8 -0
  141. data/lib/whois/parsers/whois.nic.immo.rb +8 -0
  142. data/lib/whois/parsers/whois.nic.immobilien.rb +8 -0
  143. data/lib/whois/parsers/whois.nic.inc.rb +8 -0
  144. data/lib/whois/parsers/whois.nic.institute.rb +8 -0
  145. data/lib/whois/parsers/whois.nic.insure.rb +8 -0
  146. data/lib/whois/parsers/whois.nic.international.rb +8 -0
  147. data/lib/whois/parsers/whois.nic.jewelry.rb +8 -0
  148. data/lib/whois/parsers/whois.nic.kaufen.rb +8 -0
  149. data/lib/whois/parsers/whois.nic.kiwi.rb +8 -0
  150. data/lib/whois/parsers/whois.nic.kn.rb +8 -0
  151. data/lib/whois/parsers/whois.nic.kyoto.rb +8 -0
  152. data/lib/whois/parsers/whois.nic.land.rb +8 -0
  153. data/lib/whois/parsers/whois.nic.lat.rb +8 -0
  154. data/lib/whois/parsers/whois.nic.lawyer.rb +8 -0
  155. data/lib/whois/parsers/whois.nic.lease.rb +8 -0
  156. data/lib/whois/parsers/whois.nic.legal.rb +8 -0
  157. data/lib/whois/parsers/whois.nic.limited.rb +8 -0
  158. data/lib/whois/parsers/whois.nic.limo.rb +8 -0
  159. data/lib/whois/parsers/whois.nic.london.rb +8 -0
  160. data/lib/whois/parsers/whois.nic.love.rb +8 -0
  161. data/lib/whois/parsers/whois.nic.luxury.rb +8 -0
  162. data/lib/whois/parsers/whois.nic.maison.rb +8 -0
  163. data/lib/whois/parsers/whois.nic.makeup.rb +8 -0
  164. data/lib/whois/parsers/whois.nic.man.rb +8 -0
  165. data/lib/whois/parsers/whois.nic.management.rb +8 -0
  166. data/lib/whois/parsers/whois.nic.mba.rb +8 -0
  167. data/lib/whois/parsers/whois.nic.memorial.rb +8 -0
  168. data/lib/whois/parsers/whois.nic.men.rb +8 -0
  169. data/lib/whois/parsers/whois.nic.miami.rb +8 -0
  170. data/lib/whois/parsers/whois.nic.mobile.rb +8 -0
  171. data/lib/whois/parsers/whois.nic.moda.rb +8 -0
  172. data/lib/whois/parsers/whois.nic.moe.rb +8 -0
  173. data/lib/whois/parsers/whois.nic.money.rb +8 -0
  174. data/lib/whois/parsers/whois.nic.monster.rb +8 -0
  175. data/lib/whois/parsers/whois.nic.mortgage.rb +8 -0
  176. data/lib/whois/parsers/whois.nic.moscow.rb +8 -0
  177. data/lib/whois/parsers/whois.nic.museum.rb +8 -0
  178. data/lib/whois/parsers/whois.nic.nrw.rb +8 -0
  179. data/lib/whois/parsers/whois.nic.observer.rb +8 -0
  180. data/lib/whois/parsers/whois.nic.okinawa.rb +17 -0
  181. data/lib/whois/parsers/whois.nic.ooo.rb +8 -0
  182. data/lib/whois/parsers/whois.nic.partners.rb +8 -0
  183. data/lib/whois/parsers/whois.nic.photography.rb +8 -0
  184. data/lib/whois/parsers/whois.nic.photos.rb +8 -0
  185. data/lib/whois/parsers/whois.nic.pizza.rb +8 -0
  186. data/lib/whois/parsers/whois.nic.place.rb +8 -0
  187. data/lib/whois/parsers/whois.nic.plumbing.rb +8 -0
  188. data/lib/whois/parsers/whois.nic.pm.rb +3 -0
  189. data/lib/whois/parsers/whois.nic.press.rb +8 -0
  190. data/lib/whois/parsers/whois.nic.properties.rb +8 -0
  191. data/lib/whois/parsers/whois.nic.quebec.rb +8 -0
  192. data/lib/whois/parsers/whois.nic.quest.rb +8 -0
  193. data/lib/whois/parsers/whois.nic.racing.rb +8 -0
  194. data/lib/whois/parsers/whois.nic.radio.rb +8 -0
  195. data/lib/whois/parsers/whois.nic.realty.rb +8 -0
  196. data/lib/whois/parsers/whois.nic.recipes.rb +8 -0
  197. data/lib/whois/parsers/whois.nic.reisen.rb +8 -0
  198. data/lib/whois/parsers/whois.nic.rent.rb +8 -0
  199. data/lib/whois/parsers/whois.nic.rentals.rb +8 -0
  200. data/lib/whois/parsers/whois.nic.republican.rb +8 -0
  201. data/lib/whois/parsers/whois.nic.rest.rb +8 -0
  202. data/lib/whois/parsers/whois.nic.restaurant.rb +8 -0
  203. data/lib/whois/parsers/whois.nic.review.rb +8 -0
  204. data/lib/whois/parsers/whois.nic.rip.rb +8 -0
  205. data/lib/whois/parsers/whois.nic.rodeo.rb +8 -0
  206. data/lib/whois/parsers/whois.nic.ruhr.rb +8 -0
  207. data/lib/whois/parsers/whois.nic.saarland.rb +8 -0
  208. data/lib/whois/parsers/whois.nic.salon.rb +8 -0
  209. data/lib/whois/parsers/whois.nic.sap.rb +8 -0
  210. data/lib/whois/parsers/whois.nic.sarl.rb +8 -0
  211. data/lib/whois/parsers/whois.nic.sbs.rb +8 -0
  212. data/lib/whois/parsers/whois.nic.schule.rb +8 -0
  213. data/lib/whois/parsers/whois.nic.schwarz.rb +8 -0
  214. data/lib/whois/parsers/whois.nic.scot.rb +8 -0
  215. data/lib/whois/parsers/whois.nic.security.rb +8 -0
  216. data/lib/whois/parsers/whois.nic.select.rb +8 -0
  217. data/lib/whois/parsers/whois.nic.shoes.rb +8 -0
  218. data/lib/whois/parsers/whois.nic.shopping.rb +8 -0
  219. data/lib/whois/parsers/whois.nic.skin.rb +8 -0
  220. data/lib/whois/parsers/whois.nic.soccer.rb +8 -0
  221. data/lib/whois/parsers/whois.nic.solar.rb +8 -0
  222. data/lib/whois/parsers/whois.nic.sport.rb +8 -0
  223. data/lib/whois/parsers/whois.nic.ss.rb +36 -0
  224. data/lib/whois/parsers/whois.nic.storage.rb +8 -0
  225. data/lib/whois/parsers/whois.nic.study.rb +8 -0
  226. data/lib/whois/parsers/whois.nic.style.rb +8 -0
  227. data/lib/whois/parsers/whois.nic.support.rb +8 -0
  228. data/lib/whois/parsers/whois.nic.surf.rb +8 -0
  229. data/lib/whois/parsers/whois.nic.surgery.rb +8 -0
  230. data/lib/whois/parsers/whois.nic.swiss.rb +8 -0
  231. data/lib/whois/parsers/whois.nic.taipei.rb +8 -0
  232. data/lib/whois/parsers/whois.nic.tatar.rb +19 -0
  233. data/lib/whois/parsers/whois.nic.team.rb +8 -0
  234. data/lib/whois/parsers/whois.nic.tennis.rb +8 -0
  235. data/lib/whois/parsers/whois.nic.theater.rb +8 -0
  236. data/lib/whois/parsers/whois.nic.tickets.rb +8 -0
  237. data/lib/whois/parsers/whois.nic.tienda.rb +8 -0
  238. data/lib/whois/parsers/whois.nic.tips.rb +8 -0
  239. data/lib/whois/parsers/whois.nic.tires.rb +8 -0
  240. data/lib/whois/parsers/whois.nic.tirol.rb +8 -0
  241. data/lib/whois/parsers/whois.nic.town.rb +8 -0
  242. data/lib/whois/parsers/whois.nic.toyota.rb +8 -0
  243. data/lib/whois/parsers/whois.nic.toys.rb +8 -0
  244. data/lib/whois/parsers/whois.nic.trade.rb +8 -0
  245. data/lib/whois/parsers/whois.nic.training.rb +8 -0
  246. data/lib/whois/parsers/whois.nic.university.rb +8 -0
  247. data/lib/whois/parsers/whois.nic.uno.rb +8 -0
  248. data/lib/whois/parsers/whois.nic.vet.rb +8 -0
  249. data/lib/whois/parsers/whois.nic.viajes.rb +8 -0
  250. data/lib/whois/parsers/whois.nic.villas.rb +8 -0
  251. data/lib/whois/parsers/whois.nic.voyage.rb +8 -0
  252. data/lib/whois/parsers/whois.nic.webcam.rb +8 -0
  253. data/lib/whois/parsers/whois.nic.wedding.rb +8 -0
  254. data/lib/whois/parsers/whois.nic.wien.rb +8 -0
  255. data/lib/whois/parsers/whois.nic.wiki.rb +8 -0
  256. data/lib/whois/parsers/whois.nic.wtf.rb +8 -0
  257. data/lib/whois/parsers/whois.nic.xin.rb +8 -0
  258. data/lib/whois/parsers/whois.nic.xn--80adxhks.rb +8 -0
  259. data/lib/whois/parsers/whois.nic.xn--d1acj3b.rb +15 -0
  260. data/lib/whois/parsers/whois.nic.xn--mk1bu44c.rb +13 -0
  261. data/lib/whois/parsers/whois.nic.xn--t60b56a.rb +8 -0
  262. data/lib/whois/parsers/whois.nic.xn--tckwe.rb +39 -0
  263. data/lib/whois/parsers/whois.nic.yoga.rb +8 -0
  264. data/lib/whois/parsers/whois.nic.yokohama.rb +8 -0
  265. data/lib/whois/parsers/whois.nic.yt.rb +24 -0
  266. data/lib/whois/parsers/whois.online.rs.corenic.net.rb +8 -0
  267. data/lib/whois/parsers/whois.publicinterestregistry.net.rb +8 -0
  268. data/lib/whois/parsers/whois.ryce-rsp.com.rb +13 -0
  269. data/lib/whois/parsers/whois.teleinfo.cn.rb +16 -0
  270. metadata +276 -1
@@ -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
@@ -0,0 +1,19 @@
1
+ require_relative 'whois.nic.as'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # The .tatar registry uses the ICANN key/value record layout and an
6
+ # object-specific no-entry sentence.
7
+ class WhoisNicTatar < WhoisNicAs
8
+ property_supported :available? do
9
+ super() || content_for_scanner.match?(/^The queried object does not exist:\s+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.tatar\s*$/i)
10
+ end
11
+
12
+ private
13
+
14
+ def registered_evidence?
15
+ super && content_for_scanner.match?(/^(?:Registry Domain ID|Creation Date|Registrar):\s+\S+/i)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicTeam < 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 WhoisNicTennis < 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 WhoisNicTheater < 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 WhoisNicTickets < 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 WhoisNicTienda < 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 WhoisNicTips < 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 WhoisNicTires < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_nic_reserved_available'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicTirol < BaseNicReservedAvailable
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 WhoisNicTown < BaseUnsupportedRegistry
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 WhoisNicToyota < 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 WhoisNicToys < 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 WhoisNicTrade < 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 WhoisNicTraining < 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 WhoisNicUniversity < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.nic.store'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicUno < WhoisNicStore
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 WhoisNicVet < 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 WhoisNicViajes < 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 WhoisNicVillas < 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 WhoisNicVoyage < 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 WhoisNicWebcam < 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 WhoisNicWedding < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_nic_reserved_available'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicWien < BaseNicReservedAvailable
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicWiki < 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 WhoisNicWtf < 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 WhoisNicXin < 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 WhoisNicXn_80adxhks < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^[ \t]*Domain not found\.[ \t]*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'base_centralnic_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # The .дети registry uses the same CentralNic ICANN record shape, with
6
+ # `DOMAIN NOT FOUND` as its authoritative absence marker.
7
+ class WhoisNicXnD1acj3b < BaseCentralnicIcann
8
+ self.scanner = Scanners::BaseIcannCompliant, {
9
+ pattern_available: /^The queried object does not exist:\s+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.xn--d1acj3b\s*$/i,
10
+ }
11
+ end
12
+
13
+ const_set('WhoisNicXn_d1acj3b', WhoisNicXnD1acj3b)
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # Host-to-parser conversion preserves the punycode separator.
6
+ # rubocop:disable-next Naming/ClassAndModuleCamelCase
7
+ class WhoisNicXn_mk1bu44c < BaseTop1000Icann
8
+ property_supported :available? do
9
+ super() || !!(content_for_scanner =~ /^No match for "[^"]+"\.\s*$/i)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicXn_t60b56a < BaseIdentityDigital
5
+ self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^No match for\s+"[^"]+"\.\s*$/i }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'whois.verisign-grs.com'
2
+ require_relative 'registry_response_safety'
3
+
4
+ module Whois
5
+ class Parsers
6
+ # The .コム endpoint exposes the VeriSign response shape, but this
7
+ # adapter keeps unknown bodies out of the registered result.
8
+ class WhoisNicXnTckwe < WhoisVerisignGrsCom
9
+ include RegistryResponseSafety
10
+
11
+ property_supported :status do
12
+ if available?
13
+ :available
14
+ elsif registered_evidence?
15
+ :registered
16
+ else
17
+ :unknown
18
+ end
19
+ end
20
+
21
+ property_supported :registered? do
22
+ status == :registered
23
+ end
24
+
25
+ def response_unavailable?
26
+ super || response_incomplete?
27
+ end
28
+
29
+ private
30
+
31
+ def registered_evidence?
32
+ content_for_scanner.match?(/^\s*Domain Name:\s*\S+/i) &&
33
+ content_for_scanner.match?(/^\s*(?:Registry Domain ID|Creation Date|Registrar):\s*\S+/i)
34
+ end
35
+ end
36
+
37
+ const_set('WhoisNicXn_tckwe', WhoisNicXnTckwe)
38
+ end
39
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicYoga < 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 WhoisNicYokohama < BaseTop1000Retired
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'base_nic_fr'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # AFNIC-format parser for the .yt registry.
6
+ class WhoisNicYt < BaseNicFr
7
+ property_supported :available? do
8
+ content_for_scanner.match?(/^%% NOT FOUND\s*$/i)
9
+ end
10
+
11
+ property_supported :created_on do
12
+ parse_time(content_for_scanner[/^created:\s+(.+)\s*$/i, 1])
13
+ end
14
+
15
+ property_supported :updated_on do
16
+ parse_time(content_for_scanner[/^last-update:\s+(.+)\s*$/i, 1])
17
+ end
18
+
19
+ property_supported :expires_on do
20
+ parse_time(content_for_scanner[/^Expiry Date:\s+(.+)\s*$/i, 1])
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisOnlineRsCorenicNet < 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_reserved_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisPublicinterestregistryNet < BaseReservedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'base_identity_digital'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # Identity Digital key/value records with the Ryce registry's short
6
+ # `Available` absence response.
7
+ class WhoisRyceRspCom < BaseIdentityDigital
8
+ self.scanner = Scanners::BaseIcannCompliant, {
9
+ pattern_available: /^Available\s*$/i,
10
+ }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # Beijing Tele-info serves both .在线 and .yun with ICANN-style records.
6
+ class WhoisTeleinfoCn < BaseTop1000Icann
7
+ property_supported :domain do
8
+ content_for_scanner[/^Domain Name:\s*(\S+)/i, 1]&.downcase
9
+ end
10
+
11
+ property_supported :available? do
12
+ super() || !!(content_for_scanner =~ /^No matching record\.\s*$/i)
13
+ end
14
+ end
15
+ end
16
+ end