itsi 0.1.9 → 0.1.12

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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +1542 -43
  3. data/Itsi.rb +125 -0
  4. data/Rakefile +8 -4
  5. data/crates/itsi_error/src/lib.rs +9 -0
  6. data/crates/itsi_rb_helpers/Cargo.toml +1 -0
  7. data/crates/itsi_rb_helpers/src/heap_value.rs +18 -0
  8. data/crates/itsi_rb_helpers/src/lib.rs +59 -9
  9. data/crates/itsi_server/Cargo.toml +70 -28
  10. data/crates/itsi_server/src/lib.rs +80 -80
  11. data/crates/itsi_server/src/{body_proxy → ruby_types/itsi_body_proxy}/big_bytes.rs +10 -5
  12. data/{gems/server/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs → crates/itsi_server/src/ruby_types/itsi_body_proxy/mod.rs} +22 -3
  13. data/crates/itsi_server/src/ruby_types/itsi_grpc_request.rs +147 -0
  14. data/crates/itsi_server/src/ruby_types/itsi_grpc_response.rs +19 -0
  15. data/crates/itsi_server/src/ruby_types/itsi_grpc_stream/mod.rs +216 -0
  16. data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +282 -0
  17. data/crates/itsi_server/src/{response/itsi_response.rs → ruby_types/itsi_http_response.rs} +72 -41
  18. data/crates/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +225 -0
  19. data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +355 -0
  20. data/crates/itsi_server/src/ruby_types/itsi_server.rs +82 -0
  21. data/crates/itsi_server/src/ruby_types/mod.rs +55 -0
  22. data/crates/itsi_server/src/server/bind.rs +29 -17
  23. data/crates/itsi_server/src/server/byte_frame.rs +32 -0
  24. data/crates/itsi_server/src/server/cache_store.rs +74 -0
  25. data/crates/itsi_server/src/server/itsi_service.rs +172 -0
  26. data/crates/itsi_server/src/server/lifecycle_event.rs +3 -0
  27. data/crates/itsi_server/src/server/listener.rs +111 -11
  28. data/crates/itsi_server/src/server/middleware_stack/middleware.rs +153 -0
  29. data/crates/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +47 -0
  30. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +58 -0
  31. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +82 -0
  32. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +321 -0
  33. data/crates/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +139 -0
  34. data/crates/itsi_server/src/server/middleware_stack/middlewares/compression.rs +300 -0
  35. data/crates/itsi_server/src/server/middleware_stack/middlewares/cors.rs +287 -0
  36. data/crates/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +48 -0
  37. data/crates/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +127 -0
  38. data/crates/itsi_server/src/server/middleware_stack/middlewares/etag.rs +191 -0
  39. data/crates/itsi_server/src/server/middleware_stack/middlewares/grpc_service.rs +72 -0
  40. data/crates/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs +85 -0
  41. data/crates/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +195 -0
  42. data/crates/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +82 -0
  43. data/crates/itsi_server/src/server/middleware_stack/middlewares/mod.rs +82 -0
  44. data/crates/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +216 -0
  45. data/crates/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +124 -0
  46. data/crates/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +76 -0
  47. data/crates/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +43 -0
  48. data/crates/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +34 -0
  49. data/crates/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +93 -0
  50. data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +162 -0
  51. data/crates/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +158 -0
  52. data/crates/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +12 -0
  53. data/crates/itsi_server/src/server/middleware_stack/mod.rs +315 -0
  54. data/crates/itsi_server/src/server/mod.rs +8 -1
  55. data/crates/itsi_server/src/server/process_worker.rs +44 -11
  56. data/crates/itsi_server/src/server/rate_limiter.rs +565 -0
  57. data/crates/itsi_server/src/server/request_job.rs +11 -0
  58. data/crates/itsi_server/src/server/serve_strategy/cluster_mode.rs +129 -46
  59. data/crates/itsi_server/src/server/serve_strategy/mod.rs +9 -6
  60. data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +325 -167
  61. data/crates/itsi_server/src/server/signal.rs +20 -4
  62. data/crates/itsi_server/src/server/static_file_server.rs +984 -0
  63. data/crates/itsi_server/src/server/thread_worker.rs +165 -88
  64. data/crates/itsi_server/src/server/tls.rs +1 -1
  65. data/crates/itsi_server/src/server/types.rs +43 -0
  66. data/crates/itsi_server/test.md +14 -0
  67. data/crates/itsi_tracing/Cargo.toml +1 -0
  68. data/crates/itsi_tracing/src/lib.rs +216 -45
  69. data/docs/.gitignore +7 -0
  70. data/docs/.gitpod.yml +15 -0
  71. data/docs/Itsi.rb +17 -0
  72. data/docs/content/_index.md +17 -0
  73. data/docs/content/about.md +6 -0
  74. data/docs/content/docs/_index.md +18 -0
  75. data/docs/content/docs/first-page.md +9 -0
  76. data/docs/content/docs/folder/_index.md +10 -0
  77. data/docs/content/docs/folder/leaf.md +7 -0
  78. data/docs/go.mod +5 -0
  79. data/docs/go.sum +2 -0
  80. data/docs/hugo.yaml +77 -0
  81. data/examples/static_assets_example.rb +83 -0
  82. data/gems/_index.md +18 -0
  83. data/gems/scheduler/CODE_OF_CONDUCT.md +7 -0
  84. data/gems/scheduler/Cargo.lock +75 -14
  85. data/gems/scheduler/README.md +5 -0
  86. data/gems/scheduler/_index.md +7 -0
  87. data/gems/scheduler/itsi-scheduler.gemspec +4 -1
  88. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  89. data/gems/scheduler/lib/itsi/scheduler.rb +2 -2
  90. data/gems/scheduler/test/test_file_io.rb +0 -1
  91. data/gems/scheduler/test/test_itsi_scheduler.rb +1 -1
  92. data/gems/server/CHANGELOG.md +5 -0
  93. data/gems/server/CODE_OF_CONDUCT.md +7 -0
  94. data/gems/server/Cargo.lock +1543 -43
  95. data/gems/server/README.md +4 -0
  96. data/gems/server/_index.md +6 -0
  97. data/gems/server/exe/itsi +46 -57
  98. data/gems/server/itsi-server.gemspec +3 -2
  99. data/gems/server/lib/itsi/{request.rb → http_request.rb} +29 -5
  100. data/gems/server/lib/itsi/http_response.rb +39 -0
  101. data/gems/server/lib/itsi/server/Itsi.rb +119 -0
  102. data/gems/server/lib/itsi/server/config/dsl.rb +506 -0
  103. data/gems/server/lib/itsi/server/config.rb +131 -0
  104. data/gems/server/lib/itsi/server/default_app/default_app.rb +38 -0
  105. data/gems/server/lib/itsi/server/grpc_interface.rb +213 -0
  106. data/gems/server/lib/itsi/server/rack/handler/itsi.rb +9 -6
  107. data/gems/server/lib/itsi/server/rack_interface.rb +24 -9
  108. data/gems/server/lib/itsi/server/scheduler_interface.rb +1 -1
  109. data/gems/server/lib/itsi/server/scheduler_mode.rb +4 -0
  110. data/gems/server/lib/itsi/server/signal_trap.rb +6 -1
  111. data/gems/server/lib/itsi/server/version.rb +1 -1
  112. data/gems/server/lib/itsi/server.rb +75 -60
  113. data/gems/server/lib/itsi/standard_headers.rb +86 -0
  114. data/gems/server/test/helpers/test_helper.rb +14 -12
  115. data/gems/server/test/test_itsi_server.rb +21 -2
  116. data/lib/itsi/version.rb +1 -1
  117. data/sandbox/itsi_file/Gemfile +11 -0
  118. data/sandbox/itsi_file/Gemfile.lock +69 -0
  119. data/sandbox/itsi_file/Itsi.rb +276 -0
  120. data/sandbox/itsi_file/error.html +2 -0
  121. data/sandbox/itsi_file/organisations_controller.rb +20 -0
  122. data/sandbox/itsi_file/public/assets/image.png +0 -0
  123. data/sandbox/itsi_file/public/assets/index.html +1 -0
  124. data/sandbox/itsi_sandbox_async/Gemfile +1 -1
  125. data/sandbox/itsi_sandbox_hanami/Gemfile.lock +2 -2
  126. data/sandbox/itsi_sandbox_rack/Gemfile.lock +2 -2
  127. data/sandbox/itsi_sandbox_rack/config.ru +2 -15
  128. data/sandbox/itsi_sandbox_rails/.dockerignore +2 -5
  129. data/sandbox/itsi_sandbox_rails/.github/workflows/ci.yml +1 -1
  130. data/sandbox/itsi_sandbox_rails/.gitignore +2 -1
  131. data/sandbox/itsi_sandbox_rails/Dockerfile +6 -9
  132. data/sandbox/itsi_sandbox_rails/Gemfile +16 -22
  133. data/sandbox/itsi_sandbox_rails/Gemfile.lock +100 -225
  134. data/sandbox/itsi_sandbox_rails/app/assets/config/manifest.js +4 -0
  135. data/sandbox/itsi_sandbox_rails/app/assets/stylesheets/application.css +11 -6
  136. data/sandbox/itsi_sandbox_rails/app/channels/application_cable/channel.rb +4 -0
  137. data/sandbox/itsi_sandbox_rails/app/channels/application_cable/connection.rb +4 -0
  138. data/sandbox/itsi_sandbox_rails/app/controllers/live_controller.rb +7 -8
  139. data/sandbox/itsi_sandbox_rails/app/controllers/uploads_controller.rb +0 -3
  140. data/sandbox/itsi_sandbox_rails/app/views/layouts/application.html.erb +2 -7
  141. data/sandbox/itsi_sandbox_rails/bin/docker-entrypoint +3 -4
  142. data/sandbox/itsi_sandbox_rails/bin/setup +8 -5
  143. data/sandbox/itsi_sandbox_rails/config/application.rb +1 -35
  144. data/sandbox/itsi_sandbox_rails/config/cable.yml +3 -10
  145. data/sandbox/itsi_sandbox_rails/config/credentials.yml.enc +1 -1
  146. data/sandbox/itsi_sandbox_rails/config/database.yml +9 -19
  147. data/sandbox/itsi_sandbox_rails/config/environment.rb +1 -1
  148. data/sandbox/itsi_sandbox_rails/config/environments/development.rb +21 -12
  149. data/sandbox/itsi_sandbox_rails/config/environments/production.rb +49 -34
  150. data/sandbox/itsi_sandbox_rails/config/environments/test.rb +19 -5
  151. data/sandbox/itsi_sandbox_rails/config/initializers/assets.rb +5 -0
  152. data/sandbox/itsi_sandbox_rails/config/initializers/filter_parameter_logging.rb +1 -1
  153. data/sandbox/itsi_sandbox_rails/config/initializers/permissions_policy.rb +13 -0
  154. data/sandbox/itsi_sandbox_rails/config/puma.rb +2 -9
  155. data/sandbox/itsi_sandbox_rails/config.ru +0 -1
  156. data/sandbox/itsi_sandbox_rails/db/migrate/20250301041554_create_posts.rb +1 -1
  157. data/sandbox/itsi_sandbox_rails/db/schema.rb +2 -2
  158. data/sandbox/itsi_sandbox_rails/lib/assets/.keep +0 -0
  159. data/sandbox/itsi_sandbox_rails/public/404.html +66 -113
  160. data/sandbox/itsi_sandbox_rails/public/406-unsupported-browser.html +65 -113
  161. data/sandbox/itsi_sandbox_rails/public/422.html +66 -113
  162. data/sandbox/itsi_sandbox_rails/public/500.html +65 -113
  163. data/sandbox/itsi_sandbox_rails/public/icon.png +0 -0
  164. data/sandbox/itsi_sandbox_rails/public/icon.svg +2 -2
  165. data/sandbox/itsi_sandbox_rails/test/channels/application_cable/connection_test.rb +13 -0
  166. data/sandbox/itsi_sandbox_roda/Gemfile.lock +3 -10
  167. data/tasks.txt +72 -12
  168. metadata +94 -139
  169. data/crates/itsi_server/src/body_proxy/itsi_body_proxy.rs +0 -122
  170. data/crates/itsi_server/src/body_proxy/mod.rs +0 -2
  171. data/crates/itsi_server/src/request/itsi_request.rs +0 -305
  172. data/crates/itsi_server/src/request/mod.rs +0 -1
  173. data/crates/itsi_server/src/response/mod.rs +0 -1
  174. data/crates/itsi_server/src/server/itsi_server.rs +0 -294
  175. data/gems/scheduler/ext/itsi_error/Cargo.lock +0 -368
  176. data/gems/scheduler/ext/itsi_error/Cargo.toml +0 -11
  177. data/gems/scheduler/ext/itsi_error/src/from.rs +0 -68
  178. data/gems/scheduler/ext/itsi_error/src/lib.rs +0 -24
  179. data/gems/scheduler/ext/itsi_instrument_entry/Cargo.toml +0 -15
  180. data/gems/scheduler/ext/itsi_instrument_entry/src/lib.rs +0 -31
  181. data/gems/scheduler/ext/itsi_rb_helpers/Cargo.lock +0 -355
  182. data/gems/scheduler/ext/itsi_rb_helpers/Cargo.toml +0 -10
  183. data/gems/scheduler/ext/itsi_rb_helpers/src/heap_value.rs +0 -121
  184. data/gems/scheduler/ext/itsi_rb_helpers/src/lib.rs +0 -178
  185. data/gems/scheduler/ext/itsi_scheduler/Cargo.toml +0 -24
  186. data/gems/scheduler/ext/itsi_scheduler/extconf.rb +0 -6
  187. data/gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +0 -56
  188. data/gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +0 -44
  189. data/gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +0 -44
  190. data/gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler.rs +0 -308
  191. data/gems/scheduler/ext/itsi_scheduler/src/lib.rs +0 -38
  192. data/gems/scheduler/ext/itsi_server/Cargo.lock +0 -2956
  193. data/gems/scheduler/ext/itsi_server/Cargo.toml +0 -47
  194. data/gems/scheduler/ext/itsi_server/extconf.rb +0 -6
  195. data/gems/scheduler/ext/itsi_server/src/body_proxy/big_bytes.rs +0 -104
  196. data/gems/scheduler/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs +0 -122
  197. data/gems/scheduler/ext/itsi_server/src/body_proxy/mod.rs +0 -2
  198. data/gems/scheduler/ext/itsi_server/src/env.rs +0 -43
  199. data/gems/scheduler/ext/itsi_server/src/lib.rs +0 -112
  200. data/gems/scheduler/ext/itsi_server/src/request/itsi_request.rs +0 -305
  201. data/gems/scheduler/ext/itsi_server/src/request/mod.rs +0 -1
  202. data/gems/scheduler/ext/itsi_server/src/response/itsi_response.rs +0 -357
  203. data/gems/scheduler/ext/itsi_server/src/response/mod.rs +0 -1
  204. data/gems/scheduler/ext/itsi_server/src/server/bind.rs +0 -170
  205. data/gems/scheduler/ext/itsi_server/src/server/bind_protocol.rs +0 -37
  206. data/gems/scheduler/ext/itsi_server/src/server/io_stream.rs +0 -104
  207. data/gems/scheduler/ext/itsi_server/src/server/itsi_server.rs +0 -294
  208. data/gems/scheduler/ext/itsi_server/src/server/lifecycle_event.rs +0 -9
  209. data/gems/scheduler/ext/itsi_server/src/server/listener.rs +0 -318
  210. data/gems/scheduler/ext/itsi_server/src/server/mod.rs +0 -11
  211. data/gems/scheduler/ext/itsi_server/src/server/process_worker.rs +0 -196
  212. data/gems/scheduler/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +0 -254
  213. data/gems/scheduler/ext/itsi_server/src/server/serve_strategy/mod.rs +0 -27
  214. data/gems/scheduler/ext/itsi_server/src/server/serve_strategy/single_mode.rs +0 -263
  215. data/gems/scheduler/ext/itsi_server/src/server/signal.rs +0 -77
  216. data/gems/scheduler/ext/itsi_server/src/server/thread_worker.rs +0 -367
  217. data/gems/scheduler/ext/itsi_server/src/server/tls/locked_dir_cache.rs +0 -132
  218. data/gems/scheduler/ext/itsi_server/src/server/tls.rs +0 -265
  219. data/gems/scheduler/ext/itsi_tracing/Cargo.lock +0 -274
  220. data/gems/scheduler/ext/itsi_tracing/Cargo.toml +0 -16
  221. data/gems/scheduler/ext/itsi_tracing/src/lib.rs +0 -58
  222. data/gems/server/ext/itsi_error/Cargo.lock +0 -368
  223. data/gems/server/ext/itsi_error/Cargo.toml +0 -11
  224. data/gems/server/ext/itsi_error/src/from.rs +0 -68
  225. data/gems/server/ext/itsi_error/src/lib.rs +0 -24
  226. data/gems/server/ext/itsi_instrument_entry/Cargo.toml +0 -15
  227. data/gems/server/ext/itsi_instrument_entry/src/lib.rs +0 -31
  228. data/gems/server/ext/itsi_rb_helpers/Cargo.lock +0 -355
  229. data/gems/server/ext/itsi_rb_helpers/Cargo.toml +0 -10
  230. data/gems/server/ext/itsi_rb_helpers/src/heap_value.rs +0 -121
  231. data/gems/server/ext/itsi_rb_helpers/src/lib.rs +0 -178
  232. data/gems/server/ext/itsi_scheduler/Cargo.toml +0 -24
  233. data/gems/server/ext/itsi_scheduler/extconf.rb +0 -6
  234. data/gems/server/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +0 -56
  235. data/gems/server/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +0 -44
  236. data/gems/server/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +0 -44
  237. data/gems/server/ext/itsi_scheduler/src/itsi_scheduler.rs +0 -308
  238. data/gems/server/ext/itsi_scheduler/src/lib.rs +0 -38
  239. data/gems/server/ext/itsi_server/Cargo.lock +0 -2956
  240. data/gems/server/ext/itsi_server/Cargo.toml +0 -47
  241. data/gems/server/ext/itsi_server/extconf.rb +0 -6
  242. data/gems/server/ext/itsi_server/src/body_proxy/big_bytes.rs +0 -104
  243. data/gems/server/ext/itsi_server/src/body_proxy/mod.rs +0 -2
  244. data/gems/server/ext/itsi_server/src/env.rs +0 -43
  245. data/gems/server/ext/itsi_server/src/lib.rs +0 -112
  246. data/gems/server/ext/itsi_server/src/request/itsi_request.rs +0 -305
  247. data/gems/server/ext/itsi_server/src/request/mod.rs +0 -1
  248. data/gems/server/ext/itsi_server/src/response/itsi_response.rs +0 -357
  249. data/gems/server/ext/itsi_server/src/response/mod.rs +0 -1
  250. data/gems/server/ext/itsi_server/src/server/bind.rs +0 -170
  251. data/gems/server/ext/itsi_server/src/server/bind_protocol.rs +0 -37
  252. data/gems/server/ext/itsi_server/src/server/io_stream.rs +0 -104
  253. data/gems/server/ext/itsi_server/src/server/itsi_server.rs +0 -294
  254. data/gems/server/ext/itsi_server/src/server/lifecycle_event.rs +0 -9
  255. data/gems/server/ext/itsi_server/src/server/listener.rs +0 -318
  256. data/gems/server/ext/itsi_server/src/server/mod.rs +0 -11
  257. data/gems/server/ext/itsi_server/src/server/process_worker.rs +0 -196
  258. data/gems/server/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +0 -254
  259. data/gems/server/ext/itsi_server/src/server/serve_strategy/mod.rs +0 -27
  260. data/gems/server/ext/itsi_server/src/server/serve_strategy/single_mode.rs +0 -263
  261. data/gems/server/ext/itsi_server/src/server/signal.rs +0 -77
  262. data/gems/server/ext/itsi_server/src/server/thread_worker.rs +0 -367
  263. data/gems/server/ext/itsi_server/src/server/tls/locked_dir_cache.rs +0 -132
  264. data/gems/server/ext/itsi_server/src/server/tls.rs +0 -265
  265. data/gems/server/ext/itsi_tracing/Cargo.lock +0 -274
  266. data/gems/server/ext/itsi_tracing/Cargo.toml +0 -16
  267. data/gems/server/ext/itsi_tracing/src/lib.rs +0 -58
  268. data/gems/server/lib/itsi/stream_io.rb +0 -38
  269. data/sandbox/itsi_sandbox_rails/.kamal/hooks/docker-setup.sample +0 -3
  270. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-app-boot.sample +0 -3
  271. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-deploy.sample +0 -14
  272. data/sandbox/itsi_sandbox_rails/.kamal/hooks/post-proxy-reboot.sample +0 -3
  273. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-app-boot.sample +0 -3
  274. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-build.sample +0 -51
  275. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-connect.sample +0 -47
  276. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-deploy.sample +0 -109
  277. data/sandbox/itsi_sandbox_rails/.kamal/hooks/pre-proxy-reboot.sample +0 -3
  278. data/sandbox/itsi_sandbox_rails/.kamal/secrets +0 -17
  279. data/sandbox/itsi_sandbox_rails/bin/dev +0 -2
  280. data/sandbox/itsi_sandbox_rails/bin/jobs +0 -6
  281. data/sandbox/itsi_sandbox_rails/bin/kamal +0 -27
  282. data/sandbox/itsi_sandbox_rails/bin/thrust +0 -5
  283. data/sandbox/itsi_sandbox_rails/config/cache.yml +0 -16
  284. data/sandbox/itsi_sandbox_rails/config/deploy.yml +0 -116
  285. data/sandbox/itsi_sandbox_rails/config/queue.yml +0 -18
  286. data/sandbox/itsi_sandbox_rails/config/recurring.yml +0 -10
  287. data/sandbox/itsi_sandbox_rails/db/cable_schema.rb +0 -11
  288. data/sandbox/itsi_sandbox_rails/db/cache_schema.rb +0 -14
  289. data/sandbox/itsi_sandbox_rails/db/queue_schema.rb +0 -129
  290. data/sandbox/itsi_sandbox_rails/public/400.html +0 -114
  291. data/sandbox/itsi_sandbox_rails/test/fixtures/posts.yml +0 -9
  292. data/sandbox/itsi_sandbox_rails/test/models/post_test.rb +0 -7
  293. /data/{sandbox/itsi_sandbox_rails/script/.keep → crates/_index.md} +0 -0
  294. /data/gems/server/lib/itsi/{index.html → server/default_app/index.html} +0 -0
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wouter Coppieters
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-03-16 00:00:00.000000000 Z
10
+ date: 2025-03-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: itsi-scheduler
@@ -15,29 +15,29 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.1.9
18
+ version: 0.1.12
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.1.9
25
+ version: 0.1.12
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: itsi-server
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.1.9
32
+ version: 0.1.12
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.1.9
40
- description: Wrapper Gem for both the Itsi server and it's Fiber scheduler
39
+ version: 0.1.12
40
+ description: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
41
41
  email:
42
42
  - wc@pico.net.nz
43
43
  executables: []
@@ -46,8 +46,10 @@ extra_rdoc_files: []
46
46
  files:
47
47
  - Cargo.lock
48
48
  - Cargo.toml
49
+ - Itsi.rb
49
50
  - README.md
50
51
  - Rakefile
52
+ - crates/_index.md
51
53
  - crates/itsi_error/Cargo.lock
52
54
  - crates/itsi_error/Cargo.toml
53
55
  - crates/itsi_error/src/from.rs
@@ -68,33 +70,84 @@ files:
68
70
  - crates/itsi_server/Cargo.lock
69
71
  - crates/itsi_server/Cargo.toml
70
72
  - crates/itsi_server/extconf.rb
71
- - crates/itsi_server/src/body_proxy/big_bytes.rs
72
- - crates/itsi_server/src/body_proxy/itsi_body_proxy.rs
73
- - crates/itsi_server/src/body_proxy/mod.rs
74
73
  - crates/itsi_server/src/env.rs
75
74
  - crates/itsi_server/src/lib.rs
76
- - crates/itsi_server/src/request/itsi_request.rs
77
- - crates/itsi_server/src/request/mod.rs
78
- - crates/itsi_server/src/response/itsi_response.rs
79
- - crates/itsi_server/src/response/mod.rs
75
+ - crates/itsi_server/src/ruby_types/itsi_body_proxy/big_bytes.rs
76
+ - crates/itsi_server/src/ruby_types/itsi_body_proxy/mod.rs
77
+ - crates/itsi_server/src/ruby_types/itsi_grpc_request.rs
78
+ - crates/itsi_server/src/ruby_types/itsi_grpc_response.rs
79
+ - crates/itsi_server/src/ruby_types/itsi_grpc_stream/mod.rs
80
+ - crates/itsi_server/src/ruby_types/itsi_http_request.rs
81
+ - crates/itsi_server/src/ruby_types/itsi_http_response.rs
82
+ - crates/itsi_server/src/ruby_types/itsi_server.rs
83
+ - crates/itsi_server/src/ruby_types/itsi_server/file_watcher.rs
84
+ - crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs
85
+ - crates/itsi_server/src/ruby_types/mod.rs
80
86
  - crates/itsi_server/src/server/bind.rs
81
87
  - crates/itsi_server/src/server/bind_protocol.rs
88
+ - crates/itsi_server/src/server/byte_frame.rs
89
+ - crates/itsi_server/src/server/cache_store.rs
82
90
  - crates/itsi_server/src/server/io_stream.rs
83
- - crates/itsi_server/src/server/itsi_server.rs
91
+ - crates/itsi_server/src/server/itsi_service.rs
84
92
  - crates/itsi_server/src/server/lifecycle_event.rs
85
93
  - crates/itsi_server/src/server/listener.rs
94
+ - crates/itsi_server/src/server/middleware_stack/middleware.rs
95
+ - crates/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs
96
+ - crates/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs
97
+ - crates/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs
98
+ - crates/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs
99
+ - crates/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs
100
+ - crates/itsi_server/src/server/middleware_stack/middlewares/compression.rs
101
+ - crates/itsi_server/src/server/middleware_stack/middlewares/cors.rs
102
+ - crates/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs
103
+ - crates/itsi_server/src/server/middleware_stack/middlewares/error_response.rs
104
+ - crates/itsi_server/src/server/middleware_stack/middlewares/etag.rs
105
+ - crates/itsi_server/src/server/middleware_stack/middlewares/grpc_service.rs
106
+ - crates/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs
107
+ - crates/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs
108
+ - crates/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs
109
+ - crates/itsi_server/src/server/middleware_stack/middlewares/mod.rs
110
+ - crates/itsi_server/src/server/middleware_stack/middlewares/proxy.rs
111
+ - crates/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs
112
+ - crates/itsi_server/src/server/middleware_stack/middlewares/redirect.rs
113
+ - crates/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs
114
+ - crates/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs
115
+ - crates/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs
116
+ - crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs
117
+ - crates/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs
118
+ - crates/itsi_server/src/server/middleware_stack/middlewares/token_source.rs
119
+ - crates/itsi_server/src/server/middleware_stack/mod.rs
86
120
  - crates/itsi_server/src/server/mod.rs
87
121
  - crates/itsi_server/src/server/process_worker.rs
122
+ - crates/itsi_server/src/server/rate_limiter.rs
123
+ - crates/itsi_server/src/server/request_job.rs
88
124
  - crates/itsi_server/src/server/serve_strategy/cluster_mode.rs
89
125
  - crates/itsi_server/src/server/serve_strategy/mod.rs
90
126
  - crates/itsi_server/src/server/serve_strategy/single_mode.rs
91
127
  - crates/itsi_server/src/server/signal.rs
128
+ - crates/itsi_server/src/server/static_file_server.rs
92
129
  - crates/itsi_server/src/server/thread_worker.rs
93
130
  - crates/itsi_server/src/server/tls.rs
94
131
  - crates/itsi_server/src/server/tls/locked_dir_cache.rs
132
+ - crates/itsi_server/src/server/types.rs
133
+ - crates/itsi_server/test.md
95
134
  - crates/itsi_tracing/Cargo.lock
96
135
  - crates/itsi_tracing/Cargo.toml
97
136
  - crates/itsi_tracing/src/lib.rs
137
+ - docs/.gitignore
138
+ - docs/.gitpod.yml
139
+ - docs/Itsi.rb
140
+ - docs/content/_index.md
141
+ - docs/content/about.md
142
+ - docs/content/docs/_index.md
143
+ - docs/content/docs/first-page.md
144
+ - docs/content/docs/folder/_index.md
145
+ - docs/content/docs/folder/leaf.md
146
+ - docs/go.mod
147
+ - docs/go.sum
148
+ - docs/hugo.yaml
149
+ - examples/static_assets_example.rb
150
+ - gems/_index.md
98
151
  - gems/scheduler/.gitignore
99
152
  - gems/scheduler/.rubocop.yml
100
153
  - gems/scheduler/CHANGELOG.md
@@ -104,55 +157,9 @@ files:
104
157
  - gems/scheduler/LICENSE.txt
105
158
  - gems/scheduler/README.md
106
159
  - gems/scheduler/Rakefile
160
+ - gems/scheduler/_index.md
107
161
  - gems/scheduler/bin/console
108
162
  - gems/scheduler/bin/setup
109
- - gems/scheduler/ext/itsi_error/Cargo.lock
110
- - gems/scheduler/ext/itsi_error/Cargo.toml
111
- - gems/scheduler/ext/itsi_error/src/from.rs
112
- - gems/scheduler/ext/itsi_error/src/lib.rs
113
- - gems/scheduler/ext/itsi_instrument_entry/Cargo.toml
114
- - gems/scheduler/ext/itsi_instrument_entry/src/lib.rs
115
- - gems/scheduler/ext/itsi_rb_helpers/Cargo.lock
116
- - gems/scheduler/ext/itsi_rb_helpers/Cargo.toml
117
- - gems/scheduler/ext/itsi_rb_helpers/src/heap_value.rs
118
- - gems/scheduler/ext/itsi_rb_helpers/src/lib.rs
119
- - gems/scheduler/ext/itsi_scheduler/Cargo.toml
120
- - gems/scheduler/ext/itsi_scheduler/extconf.rb
121
- - gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler.rs
122
- - gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs
123
- - gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs
124
- - gems/scheduler/ext/itsi_scheduler/src/itsi_scheduler/timer.rs
125
- - gems/scheduler/ext/itsi_scheduler/src/lib.rs
126
- - gems/scheduler/ext/itsi_server/Cargo.lock
127
- - gems/scheduler/ext/itsi_server/Cargo.toml
128
- - gems/scheduler/ext/itsi_server/extconf.rb
129
- - gems/scheduler/ext/itsi_server/src/body_proxy/big_bytes.rs
130
- - gems/scheduler/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs
131
- - gems/scheduler/ext/itsi_server/src/body_proxy/mod.rs
132
- - gems/scheduler/ext/itsi_server/src/env.rs
133
- - gems/scheduler/ext/itsi_server/src/lib.rs
134
- - gems/scheduler/ext/itsi_server/src/request/itsi_request.rs
135
- - gems/scheduler/ext/itsi_server/src/request/mod.rs
136
- - gems/scheduler/ext/itsi_server/src/response/itsi_response.rs
137
- - gems/scheduler/ext/itsi_server/src/response/mod.rs
138
- - gems/scheduler/ext/itsi_server/src/server/bind.rs
139
- - gems/scheduler/ext/itsi_server/src/server/bind_protocol.rs
140
- - gems/scheduler/ext/itsi_server/src/server/io_stream.rs
141
- - gems/scheduler/ext/itsi_server/src/server/itsi_server.rs
142
- - gems/scheduler/ext/itsi_server/src/server/lifecycle_event.rs
143
- - gems/scheduler/ext/itsi_server/src/server/listener.rs
144
- - gems/scheduler/ext/itsi_server/src/server/mod.rs
145
- - gems/scheduler/ext/itsi_server/src/server/process_worker.rs
146
- - gems/scheduler/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs
147
- - gems/scheduler/ext/itsi_server/src/server/serve_strategy/mod.rs
148
- - gems/scheduler/ext/itsi_server/src/server/serve_strategy/single_mode.rs
149
- - gems/scheduler/ext/itsi_server/src/server/signal.rs
150
- - gems/scheduler/ext/itsi_server/src/server/thread_worker.rs
151
- - gems/scheduler/ext/itsi_server/src/server/tls.rs
152
- - gems/scheduler/ext/itsi_server/src/server/tls/locked_dir_cache.rs
153
- - gems/scheduler/ext/itsi_tracing/Cargo.lock
154
- - gems/scheduler/ext/itsi_tracing/Cargo.toml
155
- - gems/scheduler/ext/itsi_tracing/src/lib.rs
156
163
  - gems/scheduler/itsi-scheduler.gemspec
157
164
  - gems/scheduler/lib/itsi/scheduler.rb
158
165
  - gems/scheduler/lib/itsi/scheduler/version.rb
@@ -176,67 +183,27 @@ files:
176
183
  - gems/server/LICENSE.txt
177
184
  - gems/server/README.md
178
185
  - gems/server/Rakefile
186
+ - gems/server/_index.md
179
187
  - gems/server/bin/console
180
188
  - gems/server/bin/setup
181
189
  - gems/server/exe/itsi
182
- - gems/server/ext/itsi_error/Cargo.lock
183
- - gems/server/ext/itsi_error/Cargo.toml
184
- - gems/server/ext/itsi_error/src/from.rs
185
- - gems/server/ext/itsi_error/src/lib.rs
186
- - gems/server/ext/itsi_instrument_entry/Cargo.toml
187
- - gems/server/ext/itsi_instrument_entry/src/lib.rs
188
- - gems/server/ext/itsi_rb_helpers/Cargo.lock
189
- - gems/server/ext/itsi_rb_helpers/Cargo.toml
190
- - gems/server/ext/itsi_rb_helpers/src/heap_value.rs
191
- - gems/server/ext/itsi_rb_helpers/src/lib.rs
192
- - gems/server/ext/itsi_scheduler/Cargo.toml
193
- - gems/server/ext/itsi_scheduler/extconf.rb
194
- - gems/server/ext/itsi_scheduler/src/itsi_scheduler.rs
195
- - gems/server/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs
196
- - gems/server/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs
197
- - gems/server/ext/itsi_scheduler/src/itsi_scheduler/timer.rs
198
- - gems/server/ext/itsi_scheduler/src/lib.rs
199
- - gems/server/ext/itsi_server/Cargo.lock
200
- - gems/server/ext/itsi_server/Cargo.toml
201
- - gems/server/ext/itsi_server/extconf.rb
202
- - gems/server/ext/itsi_server/src/body_proxy/big_bytes.rs
203
- - gems/server/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs
204
- - gems/server/ext/itsi_server/src/body_proxy/mod.rs
205
- - gems/server/ext/itsi_server/src/env.rs
206
- - gems/server/ext/itsi_server/src/lib.rs
207
- - gems/server/ext/itsi_server/src/request/itsi_request.rs
208
- - gems/server/ext/itsi_server/src/request/mod.rs
209
- - gems/server/ext/itsi_server/src/response/itsi_response.rs
210
- - gems/server/ext/itsi_server/src/response/mod.rs
211
- - gems/server/ext/itsi_server/src/server/bind.rs
212
- - gems/server/ext/itsi_server/src/server/bind_protocol.rs
213
- - gems/server/ext/itsi_server/src/server/io_stream.rs
214
- - gems/server/ext/itsi_server/src/server/itsi_server.rs
215
- - gems/server/ext/itsi_server/src/server/lifecycle_event.rs
216
- - gems/server/ext/itsi_server/src/server/listener.rs
217
- - gems/server/ext/itsi_server/src/server/mod.rs
218
- - gems/server/ext/itsi_server/src/server/process_worker.rs
219
- - gems/server/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs
220
- - gems/server/ext/itsi_server/src/server/serve_strategy/mod.rs
221
- - gems/server/ext/itsi_server/src/server/serve_strategy/single_mode.rs
222
- - gems/server/ext/itsi_server/src/server/signal.rs
223
- - gems/server/ext/itsi_server/src/server/thread_worker.rs
224
- - gems/server/ext/itsi_server/src/server/tls.rs
225
- - gems/server/ext/itsi_server/src/server/tls/locked_dir_cache.rs
226
- - gems/server/ext/itsi_tracing/Cargo.lock
227
- - gems/server/ext/itsi_tracing/Cargo.toml
228
- - gems/server/ext/itsi_tracing/src/lib.rs
229
190
  - gems/server/itsi-server.gemspec
230
- - gems/server/lib/itsi/index.html
231
- - gems/server/lib/itsi/request.rb
191
+ - gems/server/lib/itsi/http_request.rb
192
+ - gems/server/lib/itsi/http_response.rb
232
193
  - gems/server/lib/itsi/server.rb
194
+ - gems/server/lib/itsi/server/Itsi.rb
195
+ - gems/server/lib/itsi/server/config.rb
196
+ - gems/server/lib/itsi/server/config/dsl.rb
197
+ - gems/server/lib/itsi/server/default_app/default_app.rb
198
+ - gems/server/lib/itsi/server/default_app/index.html
199
+ - gems/server/lib/itsi/server/grpc_interface.rb
233
200
  - gems/server/lib/itsi/server/rack/handler/itsi.rb
234
201
  - gems/server/lib/itsi/server/rack_interface.rb
235
202
  - gems/server/lib/itsi/server/scheduler_interface.rb
236
203
  - gems/server/lib/itsi/server/scheduler_mode.rb
237
204
  - gems/server/lib/itsi/server/signal_trap.rb
238
205
  - gems/server/lib/itsi/server/version.rb
239
- - gems/server/lib/itsi/stream_io.rb
206
+ - gems/server/lib/itsi/standard_headers.rb
240
207
  - gems/server/sig/itsi_server.rbs
241
208
  - gems/server/test/helpers/test_helper.rb
242
209
  - gems/server/test/test_itsi_server.rb
@@ -248,6 +215,13 @@ files:
248
215
  - sandbox/falcon_benchmark/Gemfile
249
216
  - sandbox/falcon_benchmark/Gemfile.lock
250
217
  - sandbox/falcon_benchmark/config.ru
218
+ - sandbox/itsi_file/Gemfile
219
+ - sandbox/itsi_file/Gemfile.lock
220
+ - sandbox/itsi_file/Itsi.rb
221
+ - sandbox/itsi_file/error.html
222
+ - sandbox/itsi_file/organisations_controller.rb
223
+ - sandbox/itsi_file/public/assets/image.png
224
+ - sandbox/itsi_file/public/assets/index.html
251
225
  - sandbox/itsi_sandbox_async/Gemfile
252
226
  - sandbox/itsi_sandbox_async/Gemfile.lock
253
227
  - sandbox/itsi_sandbox_async/config.ru
@@ -308,16 +282,6 @@ files:
308
282
  - sandbox/itsi_sandbox_rails/.github/dependabot.yml
309
283
  - sandbox/itsi_sandbox_rails/.github/workflows/ci.yml
310
284
  - sandbox/itsi_sandbox_rails/.gitignore
311
- - sandbox/itsi_sandbox_rails/.kamal/hooks/docker-setup.sample
312
- - sandbox/itsi_sandbox_rails/.kamal/hooks/post-app-boot.sample
313
- - sandbox/itsi_sandbox_rails/.kamal/hooks/post-deploy.sample
314
- - sandbox/itsi_sandbox_rails/.kamal/hooks/post-proxy-reboot.sample
315
- - sandbox/itsi_sandbox_rails/.kamal/hooks/pre-app-boot.sample
316
- - sandbox/itsi_sandbox_rails/.kamal/hooks/pre-build.sample
317
- - sandbox/itsi_sandbox_rails/.kamal/hooks/pre-connect.sample
318
- - sandbox/itsi_sandbox_rails/.kamal/hooks/pre-deploy.sample
319
- - sandbox/itsi_sandbox_rails/.kamal/hooks/pre-proxy-reboot.sample
320
- - sandbox/itsi_sandbox_rails/.kamal/secrets
321
285
  - sandbox/itsi_sandbox_rails/.rubocop.yml
322
286
  - sandbox/itsi_sandbox_rails/.ruby-version
323
287
  - sandbox/itsi_sandbox_rails/Dockerfile
@@ -325,8 +289,11 @@ files:
325
289
  - sandbox/itsi_sandbox_rails/Gemfile.lock
326
290
  - sandbox/itsi_sandbox_rails/README.md
327
291
  - sandbox/itsi_sandbox_rails/Rakefile
292
+ - sandbox/itsi_sandbox_rails/app/assets/config/manifest.js
328
293
  - sandbox/itsi_sandbox_rails/app/assets/images/.keep
329
294
  - sandbox/itsi_sandbox_rails/app/assets/stylesheets/application.css
295
+ - sandbox/itsi_sandbox_rails/app/channels/application_cable/channel.rb
296
+ - sandbox/itsi_sandbox_rails/app/channels/application_cable/connection.rb
330
297
  - sandbox/itsi_sandbox_rails/app/controllers/application_controller.rb
331
298
  - sandbox/itsi_sandbox_rails/app/controllers/concerns/.keep
332
299
  - sandbox/itsi_sandbox_rails/app/controllers/home_controller.rb
@@ -349,24 +316,18 @@ files:
349
316
  - sandbox/itsi_sandbox_rails/app/views/pwa/service-worker.js
350
317
  - sandbox/itsi_sandbox_rails/bin/brakeman
351
318
  - sandbox/itsi_sandbox_rails/bin/bundle
352
- - sandbox/itsi_sandbox_rails/bin/dev
353
319
  - sandbox/itsi_sandbox_rails/bin/docker-entrypoint
354
320
  - sandbox/itsi_sandbox_rails/bin/importmap
355
- - sandbox/itsi_sandbox_rails/bin/jobs
356
- - sandbox/itsi_sandbox_rails/bin/kamal
357
321
  - sandbox/itsi_sandbox_rails/bin/rails
358
322
  - sandbox/itsi_sandbox_rails/bin/rake
359
323
  - sandbox/itsi_sandbox_rails/bin/rubocop
360
324
  - sandbox/itsi_sandbox_rails/bin/setup
361
- - sandbox/itsi_sandbox_rails/bin/thrust
362
325
  - sandbox/itsi_sandbox_rails/config.ru
363
326
  - sandbox/itsi_sandbox_rails/config/application.rb
364
327
  - sandbox/itsi_sandbox_rails/config/boot.rb
365
328
  - sandbox/itsi_sandbox_rails/config/cable.yml
366
- - sandbox/itsi_sandbox_rails/config/cache.yml
367
329
  - sandbox/itsi_sandbox_rails/config/credentials.yml.enc
368
330
  - sandbox/itsi_sandbox_rails/config/database.yml
369
- - sandbox/itsi_sandbox_rails/config/deploy.yml
370
331
  - sandbox/itsi_sandbox_rails/config/environment.rb
371
332
  - sandbox/itsi_sandbox_rails/config/environments/development.rb
372
333
  - sandbox/itsi_sandbox_rails/config/environments/production.rb
@@ -376,21 +337,17 @@ files:
376
337
  - sandbox/itsi_sandbox_rails/config/initializers/content_security_policy.rb
377
338
  - sandbox/itsi_sandbox_rails/config/initializers/filter_parameter_logging.rb
378
339
  - sandbox/itsi_sandbox_rails/config/initializers/inflections.rb
340
+ - sandbox/itsi_sandbox_rails/config/initializers/permissions_policy.rb
379
341
  - sandbox/itsi_sandbox_rails/config/locales/en.yml
380
342
  - sandbox/itsi_sandbox_rails/config/puma.rb
381
- - sandbox/itsi_sandbox_rails/config/queue.yml
382
- - sandbox/itsi_sandbox_rails/config/recurring.yml
383
343
  - sandbox/itsi_sandbox_rails/config/routes.rb
384
344
  - sandbox/itsi_sandbox_rails/config/storage.yml
385
- - sandbox/itsi_sandbox_rails/db/cable_schema.rb
386
- - sandbox/itsi_sandbox_rails/db/cache_schema.rb
387
345
  - sandbox/itsi_sandbox_rails/db/migrate/20250301041554_create_posts.rb
388
- - sandbox/itsi_sandbox_rails/db/queue_schema.rb
389
346
  - sandbox/itsi_sandbox_rails/db/schema.rb
390
347
  - sandbox/itsi_sandbox_rails/db/seeds.rb
348
+ - sandbox/itsi_sandbox_rails/lib/assets/.keep
391
349
  - sandbox/itsi_sandbox_rails/lib/tasks/.keep
392
350
  - sandbox/itsi_sandbox_rails/log/.keep
393
- - sandbox/itsi_sandbox_rails/public/400.html
394
351
  - sandbox/itsi_sandbox_rails/public/404.html
395
352
  - sandbox/itsi_sandbox_rails/public/406-unsupported-browser.html
396
353
  - sandbox/itsi_sandbox_rails/public/422.html
@@ -398,17 +355,15 @@ files:
398
355
  - sandbox/itsi_sandbox_rails/public/icon.png
399
356
  - sandbox/itsi_sandbox_rails/public/icon.svg
400
357
  - sandbox/itsi_sandbox_rails/public/robots.txt
401
- - sandbox/itsi_sandbox_rails/script/.keep
402
358
  - sandbox/itsi_sandbox_rails/storage/.keep
403
359
  - sandbox/itsi_sandbox_rails/test/application_system_test_case.rb
360
+ - sandbox/itsi_sandbox_rails/test/channels/application_cable/connection_test.rb
404
361
  - sandbox/itsi_sandbox_rails/test/controllers/.keep
405
362
  - sandbox/itsi_sandbox_rails/test/fixtures/files/.keep
406
- - sandbox/itsi_sandbox_rails/test/fixtures/posts.yml
407
363
  - sandbox/itsi_sandbox_rails/test/helpers/.keep
408
364
  - sandbox/itsi_sandbox_rails/test/integration/.keep
409
365
  - sandbox/itsi_sandbox_rails/test/mailers/.keep
410
366
  - sandbox/itsi_sandbox_rails/test/models/.keep
411
- - sandbox/itsi_sandbox_rails/test/models/post_test.rb
412
367
  - sandbox/itsi_sandbox_rails/test/system/.keep
413
368
  - sandbox/itsi_sandbox_rails/test/test_helper.rb
414
369
  - sandbox/itsi_sandbox_rails/tmp/.keep
@@ -438,7 +393,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
438
393
  requirements:
439
394
  - - ">="
440
395
  - !ruby/object:Gem::Version
441
- version: 3.0.7
396
+ version: '2.7'
442
397
  required_rubygems_version: !ruby/object:Gem::Requirement
443
398
  requirements:
444
399
  - - ">="
@@ -447,5 +402,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
447
402
  requirements: []
448
403
  rubygems_version: 3.6.2
449
404
  specification_version: 4
450
- summary: Wrapper Gem for both the Itsi server and it's Fiber scheduler
405
+ summary: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
451
406
  test_files: []
@@ -1,122 +0,0 @@
1
- use super::big_bytes::BigBytes;
2
- use bytes::Bytes;
3
- use futures::executor::block_on;
4
- use http_body_util::{BodyDataStream, BodyExt};
5
- use hyper::body::Incoming;
6
- use magnus::{error::Result as MagnusResult, scan_args, IntoValue, RString, Ruby, Value};
7
- use parking_lot::Mutex;
8
- use std::sync::{
9
- atomic::{self, AtomicBool},
10
- Arc,
11
- };
12
- use tokio_stream::StreamExt;
13
-
14
- #[magnus::wrap(class = "Itsi::BodyProxy", free_immediately, size)]
15
- #[derive(Debug, Clone)]
16
- pub struct ItsiBodyProxy {
17
- pub incoming: Arc<Mutex<BodyDataStream<Incoming>>>,
18
- pub closed: Arc<AtomicBool>,
19
- pub buf: Arc<Mutex<Vec<u8>>>,
20
- }
21
-
22
- pub enum ItsiBody {
23
- Buffered(BigBytes),
24
- Stream(ItsiBodyProxy),
25
- }
26
-
27
- impl ItsiBody {
28
- pub fn into_value(&self) -> Value {
29
- match self {
30
- ItsiBody::Buffered(bytes) => bytes.as_value(),
31
- ItsiBody::Stream(proxy) => proxy.clone().into_value(),
32
- }
33
- }
34
- }
35
- impl ItsiBodyProxy {
36
- pub fn new(incoming: Incoming) -> Self {
37
- ItsiBodyProxy {
38
- incoming: Arc::new(Mutex::new(incoming.into_data_stream())),
39
- closed: Arc::new(AtomicBool::new(false)),
40
- buf: Arc::new(Mutex::new(vec![])),
41
- }
42
- }
43
- /// Read up to the next line-break OR EOF
44
- pub fn gets(&self) -> MagnusResult<Option<Bytes>> {
45
- self.verify_open()?;
46
- let mut stream = self.incoming.lock();
47
- let mut buf = self.buf.lock();
48
- while !buf.contains(&b'\n') {
49
- if let Some(chunk) = block_on(stream.next()) {
50
- let chunk = chunk.map_err(|err| {
51
- magnus::Error::new(
52
- magnus::exception::exception(),
53
- format!("Error reading body {:?}", err),
54
- )
55
- })?;
56
- buf.extend_from_slice(&chunk);
57
- } else {
58
- break;
59
- }
60
- }
61
- if let Some(pos) = buf.iter().position(|&x| x == b'\n') {
62
- let line = buf.drain(..=pos).collect::<Vec<u8>>();
63
- Ok(Some(line.into()))
64
- } else if !buf.is_empty() {
65
- let line = buf.drain(..).collect::<Vec<u8>>();
66
- Ok(Some(line.into()))
67
- } else {
68
- Ok(None)
69
- }
70
- }
71
-
72
- pub fn read(&self, args: &[Value]) -> MagnusResult<Option<RString>> {
73
- self.verify_open()?;
74
- let scanned =
75
- scan_args::scan_args::<(), (Option<usize>, Option<RString>), (), (), (), ()>(args)?;
76
- let (length, mut buffer) = scanned.optional;
77
- let mut stream = self.incoming.lock();
78
- let mut buf = self.buf.lock();
79
-
80
- while length.is_none_or(|target_length| buf.len() < target_length) {
81
- if let Some(chunk) = block_on(stream.next()) {
82
- let chunk = chunk.map_err(|err| {
83
- magnus::Error::new(
84
- magnus::exception::exception(),
85
- format!("Error reading body {:?}", err),
86
- )
87
- })?;
88
- buf.extend_from_slice(&chunk);
89
- } else if length.is_some() {
90
- return Ok(None);
91
- } else {
92
- break;
93
- }
94
- }
95
- let output_string = buffer.take().unwrap_or(RString::buf_new(buf.len()));
96
- output_string.cat(buf.clone());
97
- buf.clear();
98
- Ok(Some(output_string))
99
- }
100
-
101
- /// Equivalent to calling gets and yielding it, until we reach EOF
102
- pub fn each(ruby: &Ruby, rbself: &Self) -> MagnusResult<()> {
103
- let proc = ruby.block_proc()?;
104
- while let Some(str) = rbself.gets()? {
105
- proc.call::<_, Value>((str,))?;
106
- }
107
- Ok(())
108
- }
109
-
110
- fn verify_open(&self) -> MagnusResult<()> {
111
- if self.closed.load(atomic::Ordering::SeqCst) {
112
- return Err(magnus::Error::new(
113
- magnus::exception::exception(),
114
- "Body stream is closed",
115
- ));
116
- }
117
- Ok(())
118
- }
119
- pub fn close(&self) {
120
- self.closed.store(true, atomic::Ordering::SeqCst);
121
- }
122
- }
@@ -1,2 +0,0 @@
1
- pub mod big_bytes;
2
- pub mod itsi_body_proxy;