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,33 @@
1
+ require_relative 'base'
2
+ require_relative 'registry_response_safety'
3
+
4
+ module Whois
5
+ class Parsers
6
+ # Parser for the Aruba registry's compact port-43 response.
7
+ class WhoisNicAw < Base
8
+ include RegistryResponseSafety
9
+
10
+ property_supported :domain do
11
+ content_for_scanner[/^Domain name:\s*(\S+)/i, 1]&.downcase
12
+ end
13
+
14
+ property_supported :status do
15
+ if available?
16
+ :available
17
+ elsif content_for_scanner.match?(/^Status:\s*active\s*$/i)
18
+ :registered
19
+ else
20
+ :unknown
21
+ end
22
+ end
23
+
24
+ property_supported :available? do
25
+ !!(content_for_scanner =~ /^\S+\s+is free\s*$/i)
26
+ end
27
+
28
+ property_supported :registered? do
29
+ status == :registered
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.centralnic.com'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicBaby < WhoisCentralnicCom
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicBank < BaseIcannCompliant
6
+ property_supported :status do
7
+ if no_data_found?
8
+ :available
9
+ else
10
+ super()
11
+ end
12
+ end
13
+
14
+ property_supported :available? do
15
+ status == :available
16
+ end
17
+
18
+ property_supported :registered? do
19
+ status == :registered
20
+ end
21
+
22
+ private
23
+
24
+ def no_data_found?
25
+ content_for_scanner.lines.first.to_s.strip.casecmp?('No Data Found')
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_top1000_icann'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicBar < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.nic.cat'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicBarcelona < WhoisNicCat
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicBarclays < 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_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicBargains < 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 WhoisNicBasketball < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'whois.nic.cat'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicBayern < WhoisNicCat
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicBeauty < 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 WhoisNicBeer < 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 WhoisNicBerlin < BaseTop1000Icann
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 WhoisNicBible < BaseReservedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicBid < 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 WhoisNicBike < 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 WhoisNicBingo < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'whois.cira.ca'
2
+ require_relative 'registry_response_safety'
3
+
4
+ module Whois
5
+ class Parsers
6
+ # The .blog registry uses the CIRA response layout and an exact
7
+ # `Not found:` absence marker.
8
+ class WhoisNicBlog < WhoisCiraCa
9
+ include RegistryResponseSafety
10
+
11
+ property_supported :status do
12
+ if content_for_scanner.match?(/^Not found:\s+/i)
13
+ :available
14
+ elsif content_for_scanner.match?(/^Domain Status:\s+\S+/i)
15
+ :registered
16
+ else
17
+ :unknown
18
+ end
19
+ end
20
+
21
+ property_supported :available? do
22
+ status == :available
23
+ end
24
+
25
+ property_supported :registered? do
26
+ status == :registered
27
+ end
28
+
29
+ def response_unavailable?
30
+ super || content_for_scanner.match?(/^Error code:\s*\S+/i)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_identity_digital'
2
+ module Whois
3
+ class Parsers
4
+ class WhoisNicBmw < 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 WhoisNicBond < 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 WhoisNicBoston < 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 WhoisNicBroker < 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 WhoisNicBuild < 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 WhoisNicBuilders < 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 WhoisNicBuzz < BaseTop1000Icann
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'base_icann_compliant'
2
+
3
+ module Whois
4
+ class Parsers
5
+ # The .bzh registry uses the ICANN key/value record layout and AFNIC's
6
+ # compact `%% NOT FOUND` absence marker.
7
+ class WhoisNicBzh < BaseIcannCompliant
8
+ self.scanner = Scanners::BaseIcannCompliant, {
9
+ pattern_available: /^%% NOT FOUND\s*$/i,
10
+ }
11
+
12
+ property_supported :status do
13
+ if content_for_scanner.match?(/^%% NOT FOUND\s*$/i)
14
+ :available
15
+ elsif content_for_scanner.match?(/^Domain Name:\s+\S+/i) &&
16
+ content_for_scanner.match?(/^Domain Status:\s+\S+/i)
17
+ :registered
18
+ else
19
+ :unknown
20
+ end
21
+ end
22
+
23
+ property_supported :available? do
24
+ status == :available
25
+ end
26
+
27
+ property_supported :registered? do
28
+ status == :registered
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicCafe < 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 WhoisNicCam < 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 WhoisNicCamera < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicCanon < BaseUnsupportedRegistry
6
+ def response_unavailable?
7
+ super || content_for_scanner.match?(/\ANotice: .*WHOIS service has been retired/i)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicCapital < 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 WhoisNicCards < 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 WhoisNicCareers < 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 WhoisNicCasa < 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 WhoisNicCash < 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 WhoisNicCenter < 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 WhoisNicCeo < BaseTop1000Icann
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 WhoisNicCharity < BaseReservedRegistry
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 WhoisNicCity < 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 WhoisNicClaims < 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 WhoisNicCleaning < 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 WhoisNicCoach < 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 WhoisNicCodes < 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 WhoisNicCoffee < 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 WhoisNicComputer < 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 WhoisNicCondos < 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 WhoisNicConstruction < 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 WhoisNicContractors < 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 WhoisNicCooking < 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 WhoisNicCool < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end
@@ -8,6 +8,7 @@
8
8
 
9
9
 
10
10
  require_relative 'base'
11
+ require_relative 'registry_response_safety'
11
12
 
12
13
 
13
14
  module Whois
@@ -25,17 +26,24 @@ module Whois
25
26
  # and examples.
26
27
  #
27
28
  class WhoisNicCoop < Base
29
+ include RegistryResponseSafety
28
30
 
29
31
  property_supported :status do
30
- content_for_scanner.scan(/Status:\s+(.+?)\n/).flatten
32
+ statuses = content_for_scanner.scan(/Status:\s+(.+?)\n/).flatten
33
+ if statuses.empty? && !available?
34
+ :unknown
35
+ else
36
+ statuses
37
+ end
31
38
  end
32
39
 
33
40
  property_supported :available? do
34
- !!(content_for_scanner =~ /No domain records were found to match/)
41
+ !!(content_for_scanner =~ /^No domain records were found to match\s+"[^"]+"\s*$/i ||
42
+ content_for_scanner =~ /^>>> Domain \S+ is available for registration\s*$/i)
35
43
  end
36
44
 
37
45
  property_supported :registered? do
38
- !available?
46
+ !available? && registered_evidence?
39
47
  end
40
48
 
41
49
 
@@ -64,6 +72,13 @@ module Whois
64
72
  end
65
73
  end
66
74
 
75
+ private
76
+
77
+ def registered_evidence?
78
+ content_for_scanner.match?(/^Domain Name:\s+\S+/i) &&
79
+ content_for_scanner.match?(/^(?:Domain ID|Created):\s+\S+/i)
80
+ end
81
+
67
82
  end
68
83
 
69
84
  end
@@ -0,0 +1,8 @@
1
+ require_relative 'base_unsupported_registry'
2
+
3
+ module Whois
4
+ class Parsers
5
+ class WhoisNicCreditcard < 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 WhoisNicCruises < BaseUnsupportedRegistry
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 WhoisNicCyou < BaseCentralnicIcann
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 WhoisNicDance < BaseUnsupportedRegistry
6
+ end
7
+ end
8
+ end