fluid_cli 0.1.2

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 (329) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/dev.yml +5 -0
  4. data/exe/fluid +24 -0
  5. data/lib/fluid_cli/api.rb +135 -0
  6. data/lib/fluid_cli/assets/post_auth_page/index.html.erb +34 -0
  7. data/lib/fluid_cli/assets/post_auth_page/style.css +58 -0
  8. data/lib/fluid_cli/command.rb +55 -0
  9. data/lib/fluid_cli/commands/help.rb +21 -0
  10. data/lib/fluid_cli/commands/login.rb +30 -0
  11. data/lib/fluid_cli/commands/logout.rb +38 -0
  12. data/lib/fluid_cli/commands/switch.rb +23 -0
  13. data/lib/fluid_cli/commands/theme/common/company_helper.rb +15 -0
  14. data/lib/fluid_cli/commands/theme/common/root_helper.rb +95 -0
  15. data/lib/fluid_cli/commands/theme/dev.rb +61 -0
  16. data/lib/fluid_cli/commands/theme/help.rb +21 -0
  17. data/lib/fluid_cli/commands/theme/init.rb +46 -0
  18. data/lib/fluid_cli/commands/theme/pull.rb +68 -0
  19. data/lib/fluid_cli/commands/theme/push.rb +132 -0
  20. data/lib/fluid_cli/commands/theme.rb +23 -0
  21. data/lib/fluid_cli/commands/whoami.rb +23 -0
  22. data/lib/fluid_cli/commands.rb +19 -0
  23. data/lib/fluid_cli/company_switcher.rb +69 -0
  24. data/lib/fluid_cli/context.rb +691 -0
  25. data/lib/fluid_cli/db.rb +114 -0
  26. data/lib/fluid_cli/entry_point.rb +10 -0
  27. data/lib/fluid_cli/environment.rb +32 -0
  28. data/lib/fluid_cli/file_system_listener.rb +29 -0
  29. data/lib/fluid_cli/form.rb +42 -0
  30. data/lib/fluid_cli/git.rb +319 -0
  31. data/lib/fluid_cli/http_request.rb +54 -0
  32. data/lib/fluid_cli/identity_auth/servlet.rb +39 -0
  33. data/lib/fluid_cli/identity_auth.rb +126 -0
  34. data/lib/fluid_cli/options.rb +38 -0
  35. data/lib/fluid_cli/theme/dev_server/certificate_manager.rb +79 -0
  36. data/lib/fluid_cli/theme/dev_server/errors.rb +9 -0
  37. data/lib/fluid_cli/theme/dev_server/header_hash.rb +98 -0
  38. data/lib/fluid_cli/theme/dev_server/hooks/file_change_hook.rb +39 -0
  39. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +27 -0
  40. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot_reload.js +28 -0
  41. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
  42. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/theme.js +16 -0
  43. data/lib/fluid_cli/theme/dev_server/hot_reload/script_injector.rb +54 -0
  44. data/lib/fluid_cli/theme/dev_server/hot_reload.rb +75 -0
  45. data/lib/fluid_cli/theme/dev_server/local_assets.rb +92 -0
  46. data/lib/fluid_cli/theme/dev_server/proxy.rb +235 -0
  47. data/lib/fluid_cli/theme/dev_server/proxy_param_builder.rb +82 -0
  48. data/lib/fluid_cli/theme/dev_server/reload_mode.rb +34 -0
  49. data/lib/fluid_cli/theme/dev_server/sse.rb +75 -0
  50. data/lib/fluid_cli/theme/dev_server/watcher.rb +57 -0
  51. data/lib/fluid_cli/theme/dev_server/web_server.rb +140 -0
  52. data/lib/fluid_cli/theme/dev_server.rb +289 -0
  53. data/lib/fluid_cli/theme/development_theme.rb +101 -0
  54. data/lib/fluid_cli/theme/file.rb +105 -0
  55. data/lib/fluid_cli/theme/forms/select.rb +33 -0
  56. data/lib/fluid_cli/theme/mime_type.rb +34 -0
  57. data/lib/fluid_cli/theme/presenters/theme_presenter.rb +49 -0
  58. data/lib/fluid_cli/theme/presenters/themes_presenter.rb +31 -0
  59. data/lib/fluid_cli/theme/root.rb +62 -0
  60. data/lib/fluid_cli/theme/syncer/checksums.rb +66 -0
  61. data/lib/fluid_cli/theme/syncer/downloader.rb +54 -0
  62. data/lib/fluid_cli/theme/syncer/error_reporter.rb +45 -0
  63. data/lib/fluid_cli/theme/syncer/merger.rb +53 -0
  64. data/lib/fluid_cli/theme/syncer/operation.rb +58 -0
  65. data/lib/fluid_cli/theme/syncer/standard_reporter.rb +32 -0
  66. data/lib/fluid_cli/theme/syncer/unsupported_script_warning.rb +90 -0
  67. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all.rb +41 -0
  68. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +37 -0
  69. data/lib/fluid_cli/theme/syncer/uploader/forms/base_strategy_form.rb +64 -0
  70. data/lib/fluid_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +29 -0
  71. data/lib/fluid_cli/theme/syncer/uploader/forms/select_update_strategy.rb +30 -0
  72. data/lib/fluid_cli/theme/syncer/uploader/json_delete_handler.rb +49 -0
  73. data/lib/fluid_cli/theme/syncer/uploader/json_update_handler.rb +71 -0
  74. data/lib/fluid_cli/theme/syncer/uploader.rb +105 -0
  75. data/lib/fluid_cli/theme/syncer.rb +412 -0
  76. data/lib/fluid_cli/theme/theme.rb +186 -0
  77. data/lib/fluid_cli/theme/ui/sync_progress_bar.rb +22 -0
  78. data/lib/fluid_cli/thread_pool/job.rb +35 -0
  79. data/lib/fluid_cli/thread_pool.rb +49 -0
  80. data/lib/fluid_cli/version.rb +3 -0
  81. data/lib/fluid_cli.rb +59 -0
  82. data/vendor/deps/base64/.document +5 -0
  83. data/vendor/deps/base64/.gitignore +9 -0
  84. data/vendor/deps/base64/BSDL +22 -0
  85. data/vendor/deps/base64/COPYING +56 -0
  86. data/vendor/deps/base64/Gemfile +9 -0
  87. data/vendor/deps/base64/LEGAL +60 -0
  88. data/vendor/deps/base64/README.md +48 -0
  89. data/vendor/deps/base64/Rakefile +31 -0
  90. data/vendor/deps/base64/base64.gemspec +28 -0
  91. data/vendor/deps/base64/bin/console +14 -0
  92. data/vendor/deps/base64/bin/setup +8 -0
  93. data/vendor/deps/base64/lib/base64.rb +382 -0
  94. data/vendor/deps/base64/sig/base64.rbs +358 -0
  95. data/vendor/deps/base64/test/base64/test_base64.rb +115 -0
  96. data/vendor/deps/base64/test_sig/test_base64.rb +44 -0
  97. data/vendor/deps/cli-kit/REVISION +1 -0
  98. data/vendor/deps/cli-kit/lib/cli/kit/args/definition.rb +286 -0
  99. data/vendor/deps/cli-kit/lib/cli/kit/args/evaluation.rb +215 -0
  100. data/vendor/deps/cli-kit/lib/cli/kit/args/parser/node.rb +128 -0
  101. data/vendor/deps/cli-kit/lib/cli/kit/args/parser.rb +125 -0
  102. data/vendor/deps/cli-kit/lib/cli/kit/args/tokenizer.rb +130 -0
  103. data/vendor/deps/cli-kit/lib/cli/kit/args.rb +16 -0
  104. data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +30 -0
  105. data/vendor/deps/cli-kit/lib/cli/kit/command_help.rb +268 -0
  106. data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +150 -0
  107. data/vendor/deps/cli-kit/lib/cli/kit/config.rb +137 -0
  108. data/vendor/deps/cli-kit/lib/cli/kit/core_ext.rb +28 -0
  109. data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +166 -0
  110. data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +92 -0
  111. data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +91 -0
  112. data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +92 -0
  113. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +94 -0
  114. data/vendor/deps/cli-kit/lib/cli/kit/opts.rb +248 -0
  115. data/vendor/deps/cli-kit/lib/cli/kit/parse_args.rb +55 -0
  116. data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +66 -0
  117. data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +260 -0
  118. data/vendor/deps/cli-kit/lib/cli/kit/support.rb +11 -0
  119. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +290 -0
  120. data/vendor/deps/cli-kit/lib/cli/kit/util.rb +118 -0
  121. data/vendor/deps/cli-kit/lib/cli/kit/version.rb +7 -0
  122. data/vendor/deps/cli-kit/lib/cli/kit.rb +139 -0
  123. data/vendor/deps/cli-ui/REVISION +1 -0
  124. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +218 -0
  125. data/vendor/deps/cli-ui/lib/cli/ui/color.rb +101 -0
  126. data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +219 -0
  127. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +67 -0
  128. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +179 -0
  129. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +152 -0
  130. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +127 -0
  131. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +286 -0
  132. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +92 -0
  133. data/vendor/deps/cli-ui/lib/cli/ui/os.rb +63 -0
  134. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +64 -0
  135. data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +132 -0
  136. data/vendor/deps/cli-ui/lib/cli/ui/progress_reporter.rb +209 -0
  137. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +583 -0
  138. data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +36 -0
  139. data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +381 -0
  140. data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +48 -0
  141. data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +602 -0
  142. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +79 -0
  143. data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +399 -0
  144. data/vendor/deps/cli-ui/lib/cli/ui/table.rb +83 -0
  145. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +55 -0
  146. data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +106 -0
  147. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +8 -0
  148. data/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +46 -0
  149. data/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +79 -0
  150. data/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +89 -0
  151. data/vendor/deps/cli-ui/lib/cli/ui/work_queue.rb +142 -0
  152. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +61 -0
  153. data/vendor/deps/cli-ui/lib/cli/ui.rb +359 -0
  154. data/vendor/deps/cli-ui/vendor/reentrant_mutex.rb +78 -0
  155. data/vendor/deps/debug/CONTRIBUTING.md +573 -0
  156. data/vendor/deps/debug/Gemfile +10 -0
  157. data/vendor/deps/debug/LICENSE.txt +22 -0
  158. data/vendor/deps/debug/README.md +996 -0
  159. data/vendor/deps/debug/Rakefile +57 -0
  160. data/vendor/deps/debug/TODO.md +23 -0
  161. data/vendor/deps/debug/debug.gemspec +33 -0
  162. data/vendor/deps/debug/exe/rdbg +53 -0
  163. data/vendor/deps/debug/ext/debug/Makefile +273 -0
  164. data/vendor/deps/debug/ext/debug/debug.c +228 -0
  165. data/vendor/deps/debug/ext/debug/debug_version.h +1 -0
  166. data/vendor/deps/debug/ext/debug/extconf.rb +27 -0
  167. data/vendor/deps/debug/ext/debug/iseq_collector.c +93 -0
  168. data/vendor/deps/debug/lib/debug/abbrev_command.rb +77 -0
  169. data/vendor/deps/debug/lib/debug/breakpoint.rb +556 -0
  170. data/vendor/deps/debug/lib/debug/client.rb +263 -0
  171. data/vendor/deps/debug/lib/debug/color.rb +123 -0
  172. data/vendor/deps/debug/lib/debug/config.rb +592 -0
  173. data/vendor/deps/debug/lib/debug/console.rb +224 -0
  174. data/vendor/deps/debug/lib/debug/dap_custom/traceInspector.rb +336 -0
  175. data/vendor/deps/debug/lib/debug/debug.bundle +0 -0
  176. data/vendor/deps/debug/lib/debug/frame_info.rb +190 -0
  177. data/vendor/deps/debug/lib/debug/irb_integration.rb +37 -0
  178. data/vendor/deps/debug/lib/debug/local.rb +115 -0
  179. data/vendor/deps/debug/lib/debug/open.rb +13 -0
  180. data/vendor/deps/debug/lib/debug/open_nonstop.rb +15 -0
  181. data/vendor/deps/debug/lib/debug/prelude.rb +50 -0
  182. data/vendor/deps/debug/lib/debug/server.rb +534 -0
  183. data/vendor/deps/debug/lib/debug/server_cdp.rb +1348 -0
  184. data/vendor/deps/debug/lib/debug/server_dap.rb +1108 -0
  185. data/vendor/deps/debug/lib/debug/session.rb +2667 -0
  186. data/vendor/deps/debug/lib/debug/source_repository.rb +150 -0
  187. data/vendor/deps/debug/lib/debug/start.rb +5 -0
  188. data/vendor/deps/debug/lib/debug/thread_client.rb +1457 -0
  189. data/vendor/deps/debug/lib/debug/tracer.rb +241 -0
  190. data/vendor/deps/debug/lib/debug/version.rb +5 -0
  191. data/vendor/deps/debug/lib/debug.rb +9 -0
  192. data/vendor/deps/debug/misc/README.md.erb +660 -0
  193. data/vendor/deps/listen/.github/release-drafter.yml +17 -0
  194. data/vendor/deps/listen/.github/workflows/development.yml +67 -0
  195. data/vendor/deps/listen/.github/workflows/push.yml +12 -0
  196. data/vendor/deps/listen/.gitignore +28 -0
  197. data/vendor/deps/listen/.rspec +3 -0
  198. data/vendor/deps/listen/.rubocop.yml +283 -0
  199. data/vendor/deps/listen/.yardopts +11 -0
  200. data/vendor/deps/listen/CHANGELOG.md +1 -0
  201. data/vendor/deps/listen/CONTRIBUTING.md +45 -0
  202. data/vendor/deps/listen/Gemfile +33 -0
  203. data/vendor/deps/listen/Guardfile +26 -0
  204. data/vendor/deps/listen/LICENSE.txt +22 -0
  205. data/vendor/deps/listen/README.md +490 -0
  206. data/vendor/deps/listen/Rakefile +154 -0
  207. data/vendor/deps/listen/bin/listen +11 -0
  208. data/vendor/deps/listen/lib/listen/adapter/base.rb +129 -0
  209. data/vendor/deps/listen/lib/listen/adapter/bsd.rb +104 -0
  210. data/vendor/deps/listen/lib/listen/adapter/config.rb +31 -0
  211. data/vendor/deps/listen/lib/listen/adapter/darwin.rb +77 -0
  212. data/vendor/deps/listen/lib/listen/adapter/linux.rb +108 -0
  213. data/vendor/deps/listen/lib/listen/adapter/polling.rb +40 -0
  214. data/vendor/deps/listen/lib/listen/adapter/windows.rb +96 -0
  215. data/vendor/deps/listen/lib/listen/adapter.rb +43 -0
  216. data/vendor/deps/listen/lib/listen/backend.rb +40 -0
  217. data/vendor/deps/listen/lib/listen/change.rb +69 -0
  218. data/vendor/deps/listen/lib/listen/cli.rb +65 -0
  219. data/vendor/deps/listen/lib/listen/directory.rb +93 -0
  220. data/vendor/deps/listen/lib/listen/error.rb +11 -0
  221. data/vendor/deps/listen/lib/listen/event/config.rb +39 -0
  222. data/vendor/deps/listen/lib/listen/event/loop.rb +92 -0
  223. data/vendor/deps/listen/lib/listen/event/processor.rb +128 -0
  224. data/vendor/deps/listen/lib/listen/event/queue.rb +52 -0
  225. data/vendor/deps/listen/lib/listen/file.rb +95 -0
  226. data/vendor/deps/listen/lib/listen/fsm.rb +131 -0
  227. data/vendor/deps/listen/lib/listen/listener/config.rb +41 -0
  228. data/vendor/deps/listen/lib/listen/listener.rb +136 -0
  229. data/vendor/deps/listen/lib/listen/logger.rb +65 -0
  230. data/vendor/deps/listen/lib/listen/monotonic_time.rb +27 -0
  231. data/vendor/deps/listen/lib/listen/options.rb +24 -0
  232. data/vendor/deps/listen/lib/listen/queue_optimizer.rb +129 -0
  233. data/vendor/deps/listen/lib/listen/record/entry.rb +66 -0
  234. data/vendor/deps/listen/lib/listen/record/symlink_detector.rb +47 -0
  235. data/vendor/deps/listen/lib/listen/record.rb +122 -0
  236. data/vendor/deps/listen/lib/listen/silencer/controller.rb +50 -0
  237. data/vendor/deps/listen/lib/listen/silencer.rb +106 -0
  238. data/vendor/deps/listen/lib/listen/thread.rb +54 -0
  239. data/vendor/deps/listen/lib/listen/version.rb +5 -0
  240. data/vendor/deps/listen/lib/listen.rb +47 -0
  241. data/vendor/deps/listen/listen.gemspec +40 -0
  242. data/vendor/deps/listen/spec/acceptance/listen_spec.rb +320 -0
  243. data/vendor/deps/listen/spec/lib/listen/adapter/base_spec.rb +101 -0
  244. data/vendor/deps/listen/spec/lib/listen/adapter/bsd_spec.rb +13 -0
  245. data/vendor/deps/listen/spec/lib/listen/adapter/config_spec.rb +122 -0
  246. data/vendor/deps/listen/spec/lib/listen/adapter/darwin_spec.rb +82 -0
  247. data/vendor/deps/listen/spec/lib/listen/adapter/linux_spec.rb +199 -0
  248. data/vendor/deps/listen/spec/lib/listen/adapter/polling_spec.rb +83 -0
  249. data/vendor/deps/listen/spec/lib/listen/adapter/windows_spec.rb +13 -0
  250. data/vendor/deps/listen/spec/lib/listen/adapter_spec.rb +69 -0
  251. data/vendor/deps/listen/spec/lib/listen/backend_spec.rb +82 -0
  252. data/vendor/deps/listen/spec/lib/listen/change_spec.rb +102 -0
  253. data/vendor/deps/listen/spec/lib/listen/cli_spec.rb +116 -0
  254. data/vendor/deps/listen/spec/lib/listen/directory_spec.rb +284 -0
  255. data/vendor/deps/listen/spec/lib/listen/event/config_spec.rb +33 -0
  256. data/vendor/deps/listen/spec/lib/listen/event/loop_spec.rb +118 -0
  257. data/vendor/deps/listen/spec/lib/listen/event/processor_spec.rb +250 -0
  258. data/vendor/deps/listen/spec/lib/listen/event/queue_spec.rb +118 -0
  259. data/vendor/deps/listen/spec/lib/listen/file_spec.rb +254 -0
  260. data/vendor/deps/listen/spec/lib/listen/fsm_spec.rb +147 -0
  261. data/vendor/deps/listen/spec/lib/listen/listener/config_spec.rb +29 -0
  262. data/vendor/deps/listen/spec/lib/listen/listener_spec.rb +321 -0
  263. data/vendor/deps/listen/spec/lib/listen/logger_spec.rb +212 -0
  264. data/vendor/deps/listen/spec/lib/listen/monotonic_time_spec.rb +58 -0
  265. data/vendor/deps/listen/spec/lib/listen/queue_optimizer_spec.rb +111 -0
  266. data/vendor/deps/listen/spec/lib/listen/record_spec.rb +424 -0
  267. data/vendor/deps/listen/spec/lib/listen/silencer/controller_spec.rb +97 -0
  268. data/vendor/deps/listen/spec/lib/listen/silencer_spec.rb +109 -0
  269. data/vendor/deps/listen/spec/lib/listen/thread_spec.rb +133 -0
  270. data/vendor/deps/listen/spec/lib/listen_spec.rb +25 -0
  271. data/vendor/deps/listen/spec/spec_helper.rb +49 -0
  272. data/vendor/deps/listen/spec/support/acceptance_helper.rb +260 -0
  273. data/vendor/deps/listen/spec/support/fixtures_helper.rb +32 -0
  274. data/vendor/deps/listen/spec/support/platform_helper.rb +17 -0
  275. data/vendor/deps/observer/.github/dependabot.yml +6 -0
  276. data/vendor/deps/observer/.github/workflows/test.yml +33 -0
  277. data/vendor/deps/observer/.gitignore +8 -0
  278. data/vendor/deps/observer/BSDL +22 -0
  279. data/vendor/deps/observer/COPYING +56 -0
  280. data/vendor/deps/observer/Gemfile +9 -0
  281. data/vendor/deps/observer/README.md +139 -0
  282. data/vendor/deps/observer/Rakefile +10 -0
  283. data/vendor/deps/observer/bin/console +14 -0
  284. data/vendor/deps/observer/bin/setup +8 -0
  285. data/vendor/deps/observer/lib/observer.rb +229 -0
  286. data/vendor/deps/observer/observer.gemspec +32 -0
  287. data/vendor/deps/observer/test/test_observer.rb +66 -0
  288. data/vendor/deps/webrick/.gitignore +9 -0
  289. data/vendor/deps/webrick/Gemfile +3 -0
  290. data/vendor/deps/webrick/LICENSE.txt +22 -0
  291. data/vendor/deps/webrick/README.md +61 -0
  292. data/vendor/deps/webrick/Rakefile +10 -0
  293. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  294. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  295. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  296. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  297. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  298. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  299. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  300. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  301. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  302. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  303. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  304. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  305. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  306. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  307. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  308. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  309. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  310. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  311. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  312. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  313. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  314. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  315. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  316. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  317. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  318. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  319. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  320. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  321. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  322. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  323. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  324. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  325. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  326. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  327. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  328. data/vendor/deps/webrick/webrick.gemspec +74 -0
  329. metadata +412 -0
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+ #--
3
+ # HTTPVersion.rb -- presentation of HTTP version
4
+ #
5
+ # Author: IPR -- Internet Programming with Ruby -- writers
6
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: httpversion.rb,v 1.5 2002/09/21 12:23:37 gotoyuzo Exp $
10
+
11
+ module WEBrick
12
+
13
+ ##
14
+ # Represents an HTTP protocol version
15
+
16
+ class HTTPVersion
17
+ include Comparable
18
+
19
+ ##
20
+ # The major protocol version number
21
+
22
+ attr_accessor :major
23
+
24
+ ##
25
+ # The minor protocol version number
26
+
27
+ attr_accessor :minor
28
+
29
+ ##
30
+ # Converts +version+ into an HTTPVersion
31
+
32
+ def self.convert(version)
33
+ version.is_a?(self) ? version : new(version)
34
+ end
35
+
36
+ ##
37
+ # Creates a new HTTPVersion from +version+.
38
+
39
+ def initialize(version)
40
+ case version
41
+ when HTTPVersion
42
+ @major, @minor = version.major, version.minor
43
+ when String
44
+ if /^(\d+)\.(\d+)$/ =~ version
45
+ @major, @minor = $1.to_i, $2.to_i
46
+ end
47
+ end
48
+ if @major.nil? || @minor.nil?
49
+ raise ArgumentError,
50
+ format("cannot convert %s into %s", version.class, self.class)
51
+ end
52
+ end
53
+
54
+ ##
55
+ # Compares this version with +other+ according to the HTTP specification
56
+ # rules.
57
+
58
+ def <=>(other)
59
+ unless other.is_a?(self.class)
60
+ other = self.class.new(other)
61
+ end
62
+ if (ret = @major <=> other.major) == 0
63
+ return @minor <=> other.minor
64
+ end
65
+ return ret
66
+ end
67
+
68
+ ##
69
+ # The HTTP version as show in the HTTP request and response. For example,
70
+ # "1.1"
71
+
72
+ def to_s
73
+ format("%d.%d", @major, @minor)
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,156 @@
1
+ # frozen_string_literal: true
2
+ #--
3
+ # log.rb -- Log Class
4
+ #
5
+ # Author: IPR -- Internet Programming with Ruby -- writers
6
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
7
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
8
+ # reserved.
9
+ #
10
+ # $IPR: log.rb,v 1.26 2002/10/06 17:06:10 gotoyuzo Exp $
11
+
12
+ module WEBrick
13
+
14
+ ##
15
+ # A generic logging class
16
+
17
+ class BasicLog
18
+
19
+ # Fatal log level which indicates a server crash
20
+
21
+ FATAL = 1
22
+
23
+ # Error log level which indicates a recoverable error
24
+
25
+ ERROR = 2
26
+
27
+ # Warning log level which indicates a possible problem
28
+
29
+ WARN = 3
30
+
31
+ # Information log level which indicates possibly useful information
32
+
33
+ INFO = 4
34
+
35
+ # Debugging error level for messages used in server development or
36
+ # debugging
37
+
38
+ DEBUG = 5
39
+
40
+ # log-level, messages above this level will be logged
41
+ attr_accessor :level
42
+
43
+ ##
44
+ # Initializes a new logger for +log_file+ that outputs messages at +level+
45
+ # or higher. +log_file+ can be a filename, an IO-like object that
46
+ # responds to #<< or nil which outputs to $stderr.
47
+ #
48
+ # If no level is given INFO is chosen by default
49
+
50
+ def initialize(log_file=nil, level=nil)
51
+ @level = level || INFO
52
+ case log_file
53
+ when String
54
+ @log = File.open(log_file, "a+")
55
+ @log.sync = true
56
+ @opened = true
57
+ when NilClass
58
+ @log = $stderr
59
+ else
60
+ @log = log_file # requires "<<". (see BasicLog#log)
61
+ end
62
+ end
63
+
64
+ ##
65
+ # Closes the logger (also closes the log device associated to the logger)
66
+ def close
67
+ @log.close if @opened
68
+ @log = nil
69
+ end
70
+
71
+ ##
72
+ # Logs +data+ at +level+ if the given level is above the current log
73
+ # level.
74
+
75
+ def log(level, data)
76
+ if @log && level <= @level
77
+ data += "\n" if /\n\Z/ !~ data
78
+ @log << data
79
+ end
80
+ end
81
+
82
+ ##
83
+ # Synonym for log(INFO, obj.to_s)
84
+ def <<(obj)
85
+ log(INFO, obj.to_s)
86
+ end
87
+
88
+ # Shortcut for logging a FATAL message
89
+ def fatal(msg) log(FATAL, "FATAL " + format(msg)); end
90
+ # Shortcut for logging an ERROR message
91
+ def error(msg) log(ERROR, "ERROR " + format(msg)); end
92
+ # Shortcut for logging a WARN message
93
+ def warn(msg) log(WARN, "WARN " + format(msg)); end
94
+ # Shortcut for logging an INFO message
95
+ def info(msg) log(INFO, "INFO " + format(msg)); end
96
+ # Shortcut for logging a DEBUG message
97
+ def debug(msg) log(DEBUG, "DEBUG " + format(msg)); end
98
+
99
+ # Will the logger output FATAL messages?
100
+ def fatal?; @level >= FATAL; end
101
+ # Will the logger output ERROR messages?
102
+ def error?; @level >= ERROR; end
103
+ # Will the logger output WARN messages?
104
+ def warn?; @level >= WARN; end
105
+ # Will the logger output INFO messages?
106
+ def info?; @level >= INFO; end
107
+ # Will the logger output DEBUG messages?
108
+ def debug?; @level >= DEBUG; end
109
+
110
+ private
111
+
112
+ ##
113
+ # Formats +arg+ for the logger
114
+ #
115
+ # * If +arg+ is an Exception, it will format the error message and
116
+ # the back trace.
117
+ # * If +arg+ responds to #to_str, it will return it.
118
+ # * Otherwise it will return +arg+.inspect.
119
+ def format(arg)
120
+ if arg.is_a?(Exception)
121
+ +"#{arg.class}: #{AccessLog.escape(arg.message)}\n\t" <<
122
+ arg.backtrace.join("\n\t") << "\n"
123
+ elsif arg.respond_to?(:to_str)
124
+ AccessLog.escape(arg.to_str)
125
+ else
126
+ arg.inspect
127
+ end
128
+ end
129
+ end
130
+
131
+ ##
132
+ # A logging class that prepends a timestamp to each message.
133
+
134
+ class Log < BasicLog
135
+ # Format of the timestamp which is applied to each logged line. The
136
+ # default is <tt>"[%Y-%m-%d %H:%M:%S]"</tt>
137
+ attr_accessor :time_format
138
+
139
+ ##
140
+ # Same as BasicLog#initialize
141
+ #
142
+ # You can set the timestamp format through #time_format
143
+ def initialize(log_file=nil, level=nil)
144
+ super(log_file, level)
145
+ @time_format = "[%Y-%m-%d %H:%M:%S]"
146
+ end
147
+
148
+ ##
149
+ # Same as BasicLog#log
150
+ def log(level, data)
151
+ tmp = Time.now.strftime(@time_format)
152
+ tmp << " " << data
153
+ super(level, tmp)
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,381 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # server.rb -- GenericServer Class
4
+ #
5
+ # Author: IPR -- Internet Programming with Ruby -- writers
6
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
7
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
8
+ # reserved.
9
+ #
10
+ # $IPR: server.rb,v 1.62 2003/07/22 19:20:43 gotoyuzo Exp $
11
+
12
+ require 'socket'
13
+ require_relative 'config'
14
+ require_relative 'log'
15
+
16
+ module WEBrick
17
+
18
+ ##
19
+ # Server error exception
20
+
21
+ class ServerError < StandardError; end
22
+
23
+ ##
24
+ # Base server class
25
+
26
+ class SimpleServer
27
+
28
+ ##
29
+ # A SimpleServer only yields when you start it
30
+
31
+ def SimpleServer.start
32
+ yield
33
+ end
34
+ end
35
+
36
+ ##
37
+ # A generic module for daemonizing a process
38
+
39
+ class Daemon
40
+
41
+ ##
42
+ # Performs the standard operations for daemonizing a process. Runs a
43
+ # block, if given.
44
+
45
+ def Daemon.start
46
+ Process.daemon
47
+ File.umask(0)
48
+ yield if block_given?
49
+ end
50
+ end
51
+
52
+ ##
53
+ # Base TCP server class. You must subclass GenericServer and provide a #run
54
+ # method.
55
+
56
+ class GenericServer
57
+
58
+ ##
59
+ # The server status. One of :Stop, :Running or :Shutdown
60
+
61
+ attr_reader :status
62
+
63
+ ##
64
+ # The server configuration
65
+
66
+ attr_reader :config
67
+
68
+ ##
69
+ # The server logger. This is independent from the HTTP access log.
70
+
71
+ attr_reader :logger
72
+
73
+ ##
74
+ # Tokens control the number of outstanding clients. The
75
+ # <code>:MaxClients</code> configuration sets this.
76
+
77
+ attr_reader :tokens
78
+
79
+ ##
80
+ # Sockets listening for connections.
81
+
82
+ attr_reader :listeners
83
+
84
+ ##
85
+ # Creates a new generic server from +config+. The default configuration
86
+ # comes from +default+.
87
+
88
+ def initialize(config={}, default=Config::General)
89
+ @config = default.dup.update(config)
90
+ @status = :Stop
91
+ @config[:Logger] ||= Log::new
92
+ @logger = @config[:Logger]
93
+
94
+ @tokens = Thread::SizedQueue.new(@config[:MaxClients])
95
+ @config[:MaxClients].times{ @tokens.push(nil) }
96
+
97
+ webrickv = WEBrick::VERSION
98
+ rubyv = "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
99
+ @logger.info("WEBrick #{webrickv}")
100
+ @logger.info("ruby #{rubyv}")
101
+
102
+ @listeners = []
103
+ @shutdown_pipe = nil
104
+ unless @config[:DoNotListen]
105
+ raise ArgumentError, "Port must an integer" unless @config[:Port].to_s == @config[:Port].to_i.to_s
106
+
107
+ @config[:Port] = @config[:Port].to_i
108
+ if @config[:Listen]
109
+ warn(":Listen option is deprecated; use GenericServer#listen", uplevel: 1)
110
+ end
111
+ listen(@config[:BindAddress], @config[:Port])
112
+ if @config[:Port] == 0
113
+ @config[:Port] = @listeners[0].addr[1]
114
+ end
115
+ end
116
+ end
117
+
118
+ ##
119
+ # Retrieves +key+ from the configuration
120
+
121
+ def [](key)
122
+ @config[key]
123
+ end
124
+
125
+ ##
126
+ # Adds listeners from +address+ and +port+ to the server. See
127
+ # WEBrick::Utils::create_listeners for details.
128
+
129
+ def listen(address, port)
130
+ @listeners += Utils::create_listeners(address, port)
131
+ end
132
+
133
+ ##
134
+ # Starts the server and runs the +block+ for each connection. This method
135
+ # does not return until the server is stopped from a signal handler or
136
+ # another thread using #stop or #shutdown.
137
+ #
138
+ # If the block raises a subclass of StandardError the exception is logged
139
+ # and ignored. If an IOError or Errno::EBADF exception is raised the
140
+ # exception is ignored. If an Exception subclass is raised the exception
141
+ # is logged and re-raised which stops the server.
142
+ #
143
+ # To completely shut down a server call #shutdown from ensure:
144
+ #
145
+ # server = WEBrick::GenericServer.new
146
+ # # or WEBrick::HTTPServer.new
147
+ #
148
+ # begin
149
+ # server.start
150
+ # ensure
151
+ # server.shutdown
152
+ # end
153
+
154
+ def start(&block)
155
+ raise ServerError, "already started." if @status != :Stop
156
+ server_type = @config[:ServerType] || SimpleServer
157
+
158
+ setup_shutdown_pipe
159
+
160
+ server_type.start{
161
+ @logger.info \
162
+ "#{self.class}#start: pid=#{$$} port=#{@config[:Port]}"
163
+ @status = :Running
164
+ call_callback(:StartCallback)
165
+
166
+ shutdown_pipe = @shutdown_pipe
167
+
168
+ thgroup = ThreadGroup.new
169
+ begin
170
+ while @status == :Running
171
+ begin
172
+ sp = shutdown_pipe[0]
173
+ if svrs = IO.select([sp, *@listeners])
174
+ if svrs[0].include? sp
175
+ # swallow shutdown pipe
176
+ buf = String.new
177
+ nil while String ===
178
+ sp.read_nonblock([sp.nread, 8].max, buf, exception: false)
179
+ break
180
+ end
181
+ svrs[0].each{|svr|
182
+ @tokens.pop # blocks while no token is there.
183
+ if sock = accept_client(svr)
184
+ unless config[:DoNotReverseLookup].nil?
185
+ sock.do_not_reverse_lookup = !!config[:DoNotReverseLookup]
186
+ end
187
+ th = start_thread(sock, &block)
188
+ th[:WEBrickThread] = true
189
+ thgroup.add(th)
190
+ else
191
+ @tokens.push(nil)
192
+ end
193
+ }
194
+ end
195
+ rescue Errno::EBADF, Errno::ENOTSOCK, IOError => ex
196
+ # if the listening socket was closed in GenericServer#shutdown,
197
+ # IO::select raise it.
198
+ rescue StandardError => ex
199
+ msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
200
+ @logger.error msg
201
+ rescue Exception => ex
202
+ @logger.fatal ex
203
+ raise
204
+ end
205
+ end
206
+ ensure
207
+ cleanup_shutdown_pipe(shutdown_pipe)
208
+ cleanup_listener
209
+ @status = :Shutdown
210
+ @logger.info "going to shutdown ..."
211
+ thgroup.list.each{|th| th.join if th[:WEBrickThread] }
212
+ call_callback(:StopCallback)
213
+ @logger.info "#{self.class}#start done."
214
+ @status = :Stop
215
+ end
216
+ }
217
+ end
218
+
219
+ ##
220
+ # Stops the server from accepting new connections.
221
+
222
+ def stop
223
+ if @status == :Running
224
+ @status = :Shutdown
225
+ end
226
+
227
+ alarm_shutdown_pipe {|f| f.write_nonblock("\0")}
228
+ end
229
+
230
+ ##
231
+ # Shuts down the server and all listening sockets. New listeners must be
232
+ # provided to restart the server.
233
+
234
+ def shutdown
235
+ stop
236
+
237
+ alarm_shutdown_pipe(&:close)
238
+ end
239
+
240
+ ##
241
+ # You must subclass GenericServer and implement \#run which accepts a TCP
242
+ # client socket
243
+
244
+ def run(sock)
245
+ @logger.fatal "run() must be provided by user."
246
+ end
247
+
248
+ private
249
+
250
+ # :stopdoc:
251
+
252
+ ##
253
+ # Accepts a TCP client socket from the TCP server socket +svr+ and returns
254
+ # the client socket.
255
+
256
+ def accept_client(svr)
257
+ case sock = svr.to_io.accept_nonblock(exception: false)
258
+ when :wait_readable
259
+ nil
260
+ else
261
+ if svr.respond_to?(:start_immediately)
262
+ sock = OpenSSL::SSL::SSLSocket.new(sock, ssl_context)
263
+ sock.sync_close = true
264
+ # we cannot do OpenSSL::SSL::SSLSocket#accept here because
265
+ # a slow client can prevent us from accepting connections
266
+ # from other clients
267
+ end
268
+ sock
269
+ end
270
+ rescue Errno::ECONNRESET, Errno::ECONNABORTED,
271
+ Errno::EPROTO, Errno::EINVAL
272
+ nil
273
+ rescue StandardError => ex
274
+ msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
275
+ @logger.error msg
276
+ nil
277
+ end
278
+
279
+ ##
280
+ # Starts a server thread for the client socket +sock+ that runs the given
281
+ # +block+.
282
+ #
283
+ # Sets the socket to the <code>:WEBrickSocket</code> thread local variable
284
+ # in the thread.
285
+ #
286
+ # If any errors occur in the block they are logged and handled.
287
+
288
+ def start_thread(sock, &block)
289
+ Thread.start{
290
+ begin
291
+ Thread.current[:WEBrickSocket] = sock
292
+ begin
293
+ addr = sock.peeraddr
294
+ @logger.debug "accept: #{addr[3]}:#{addr[1]}"
295
+ rescue SocketError
296
+ @logger.debug "accept: <address unknown>"
297
+ raise
298
+ end
299
+ if sock.respond_to?(:sync_close=) && @config[:SSLStartImmediately]
300
+ WEBrick::Utils.timeout(@config[:RequestTimeout]) do
301
+ begin
302
+ sock.accept # OpenSSL::SSL::SSLSocket#accept
303
+ rescue Errno::ECONNRESET, Errno::ECONNABORTED,
304
+ Errno::EPROTO, Errno::EINVAL
305
+ Thread.exit
306
+ end
307
+ end
308
+ end
309
+ call_callback(:AcceptCallback, sock)
310
+ block ? block.call(sock) : run(sock)
311
+ rescue Errno::ENOTCONN
312
+ @logger.debug "Errno::ENOTCONN raised"
313
+ rescue ServerError => ex
314
+ msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}"
315
+ @logger.error msg
316
+ rescue Exception => ex
317
+ @logger.error ex
318
+ ensure
319
+ @tokens.push(nil)
320
+ Thread.current[:WEBrickSocket] = nil
321
+ if addr
322
+ @logger.debug "close: #{addr[3]}:#{addr[1]}"
323
+ else
324
+ @logger.debug "close: <address unknown>"
325
+ end
326
+ sock.close
327
+ end
328
+ }
329
+ end
330
+
331
+ ##
332
+ # Calls the callback +callback_name+ from the configuration with +args+
333
+
334
+ def call_callback(callback_name, *args)
335
+ @config[callback_name]&.call(*args)
336
+ end
337
+
338
+ def setup_shutdown_pipe
339
+ return @shutdown_pipe ||= IO.pipe
340
+ end
341
+
342
+ def cleanup_shutdown_pipe(shutdown_pipe)
343
+ @shutdown_pipe = nil
344
+ shutdown_pipe&.each(&:close)
345
+ end
346
+
347
+ def alarm_shutdown_pipe
348
+ _, pipe = @shutdown_pipe # another thread may modify @shutdown_pipe.
349
+ if pipe
350
+ if !pipe.closed?
351
+ begin
352
+ yield pipe
353
+ rescue IOError # closed by another thread.
354
+ end
355
+ end
356
+ end
357
+ end
358
+
359
+ def cleanup_listener
360
+ @listeners.each{|s|
361
+ if @logger.debug?
362
+ addr = s.addr
363
+ @logger.debug("close TCPSocket(#{addr[2]}, #{addr[1]})")
364
+ end
365
+ begin
366
+ s.shutdown
367
+ rescue Errno::ENOTCONN
368
+ # when `Errno::ENOTCONN: Socket is not connected' on some platforms,
369
+ # call #close instead of #shutdown.
370
+ # (ignore @config[:ShutdownSocketWithoutClose])
371
+ s.close
372
+ else
373
+ unless @config[:ShutdownSocketWithoutClose]
374
+ s.close
375
+ end
376
+ end
377
+ }
378
+ @listeners.clear
379
+ end
380
+ end # end of GenericServer
381
+ end