itsi-scheduler 0.1.5 → 0.1.19
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.
Potentially problematic release.
This version of itsi-scheduler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +7 -0
- data/Cargo.lock +90 -22
- data/README.md +5 -0
- data/_index.md +7 -0
- data/ext/itsi_error/Cargo.toml +1 -0
- data/ext/itsi_error/src/lib.rs +106 -7
- data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
- data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
- data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
- data/ext/itsi_error/target/debug/build/rb-sys-49f554618693db24/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-1mmt5sux7jb0i/s-h510z7m8v9-0bxu7yd.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-2vn3jey74oiw0/s-h5113n0e7e-1v5qzs6.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510ykifhe-0tbnep2.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510yyocpj-0tz7ug7.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510z0xc8g-14ol18k.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-3g5qf4y7d54uj/s-h5113n0e7d-1trk8on.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-3lpfftm45d3e2/s-h510z7m8r3-1pxp20o.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510ykifek-1uxasnk.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510yyocki-11u37qm.lock +0 -0
- data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510z0xc93-0pmy0zm.lock +0 -0
- data/ext/itsi_rb_helpers/Cargo.toml +1 -0
- data/ext/itsi_rb_helpers/src/heap_value.rs +18 -0
- data/ext/itsi_rb_helpers/src/lib.rs +59 -9
- data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
- data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
- data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
- data/ext/itsi_rb_helpers/target/debug/build/rb-sys-eb9ed4ff3a60f995/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
- data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-040pxg6yhb3g3/s-h5113n7a1b-03bwlt4.lock +0 -0
- data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h51113xnh3-1eik1ip.lock +0 -0
- data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h5111704jj-0g4rj8x.lock +0 -0
- data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-1q2d3drtxrzs5/s-h5113n79yl-0bxcqc5.lock +0 -0
- data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h51113xoox-10de2hp.lock +0 -0
- data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h5111704w7-0vdq7gq.lock +0 -0
- data/ext/itsi_scheduler/src/itsi_scheduler.rs +1 -1
- data/ext/itsi_server/Cargo.lock +2956 -0
- data/ext/itsi_server/Cargo.toml +72 -28
- data/ext/itsi_server/src/default_responses/mod.rs +11 -0
- data/ext/itsi_server/src/env.rs +43 -0
- data/ext/itsi_server/src/lib.rs +113 -75
- data/ext/itsi_server/src/prelude.rs +2 -0
- data/ext/itsi_server/src/{body_proxy → ruby_types/itsi_body_proxy}/big_bytes.rs +10 -5
- data/ext/itsi_server/src/{body_proxy/itsi_body_proxy.rs → ruby_types/itsi_body_proxy/mod.rs} +29 -8
- data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +344 -0
- data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +264 -0
- data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +345 -0
- data/ext/itsi_server/src/{response/itsi_response.rs → ruby_types/itsi_http_response.rs} +84 -40
- data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +225 -0
- data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +375 -0
- data/ext/itsi_server/src/ruby_types/itsi_server.rs +83 -0
- data/ext/itsi_server/src/ruby_types/mod.rs +48 -0
- data/ext/itsi_server/src/server/{bind.rs → binds/bind.rs} +56 -24
- data/ext/itsi_server/src/server/{listener.rs → binds/listener.rs} +218 -113
- data/ext/itsi_server/src/server/binds/mod.rs +4 -0
- data/ext/itsi_server/src/server/{tls → binds/tls}/locked_dir_cache.rs +55 -17
- data/ext/itsi_server/src/server/{tls.rs → binds/tls.rs} +109 -28
- data/ext/itsi_server/src/server/byte_frame.rs +32 -0
- data/ext/itsi_server/src/server/http_message_types.rs +97 -0
- data/ext/itsi_server/src/server/io_stream.rs +2 -1
- data/ext/itsi_server/src/server/lifecycle_event.rs +3 -0
- data/ext/itsi_server/src/server/middleware_stack/middleware.rs +165 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +56 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +87 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +86 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +285 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +142 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +289 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +292 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +55 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +190 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +157 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +195 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs +82 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +201 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +82 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +47 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/mod.rs +87 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +414 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +131 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +76 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +44 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +36 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +126 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +180 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +55 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +163 -0
- data/ext/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +12 -0
- data/ext/itsi_server/src/server/middleware_stack/mod.rs +347 -0
- data/ext/itsi_server/src/server/mod.rs +6 -5
- data/ext/itsi_server/src/server/process_worker.rs +65 -14
- data/ext/itsi_server/src/server/request_job.rs +11 -0
- data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +137 -49
- data/ext/itsi_server/src/server/serve_strategy/mod.rs +9 -6
- data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +338 -164
- data/ext/itsi_server/src/server/signal.rs +32 -26
- data/ext/itsi_server/src/server/size_limited_incoming.rs +101 -0
- data/ext/itsi_server/src/server/thread_worker.rs +214 -107
- data/ext/itsi_server/src/services/cache_store.rs +74 -0
- data/ext/itsi_server/src/services/itsi_http_service.rs +239 -0
- data/ext/itsi_server/src/services/mime_types.rs +1416 -0
- data/ext/itsi_server/src/services/mod.rs +6 -0
- data/ext/itsi_server/src/services/password_hasher.rs +83 -0
- data/ext/itsi_server/src/services/rate_limiter.rs +569 -0
- data/ext/itsi_server/src/services/static_file_server.rs +1324 -0
- data/ext/itsi_tracing/Cargo.toml +1 -0
- data/ext/itsi_tracing/src/lib.rs +312 -34
- data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0994n8rpvvt9m/s-h510hfz1f6-1kbycmq.lock +0 -0
- data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0bob7bf4yq34i/s-h5113125h5-0lh4rag.lock +0 -0
- data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2fcodulrxbbxo/s-h510h2infk-0hp5kjw.lock +0 -0
- data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2iak63r1woi1l/s-h510h2in4q-0kxfzw1.lock +0 -0
- data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2kk4qj9gn5dg2/s-h5113124kv-0enwon2.lock +0 -0
- data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2mwo0yas7dtw4/s-h510hfz1ha-1udgpei.lock +0 -0
- data/lib/itsi/scheduler/version.rb +1 -1
- data/lib/itsi/scheduler.rb +2 -2
- metadata +93 -21
- data/ext/itsi_error/src/from.rs +0 -71
- data/ext/itsi_server/extconf.rb +0 -6
- data/ext/itsi_server/src/body_proxy/mod.rs +0 -2
- data/ext/itsi_server/src/request/itsi_request.rs +0 -277
- data/ext/itsi_server/src/request/mod.rs +0 -1
- data/ext/itsi_server/src/response/mod.rs +0 -1
- data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -13
- data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -5
- data/ext/itsi_server/src/server/itsi_server.rs +0 -244
- /data/ext/itsi_server/src/server/{bind_protocol.rs → binds/bind_protocol.rs} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5d23031b21c54857ec2203e90f940f00c63612fc7737a40a59bd42e37b857be
|
4
|
+
data.tar.gz: 8f642a6af082a49a7cd1313f8308f3f10f5c51d4ea8546449fb4e128537239a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: edc11ffe45421ac259ff7829902bdfd335302420111009d1cb844b5a0fb3b9b281ced53965bbb2fcc014713ed0c0c522bf1624932115aa8a21cb313fadc6be5c
|
7
|
+
data.tar.gz: 6205fead3872c30b7e19a92fdf14fff9fbeb28310287a4863e1a6522a4ee5f145b819871707aac7899caa66d3fbf374d9dbc448f7326ca9890d80631ccc4e0a9
|
data/CODE_OF_CONDUCT.md
CHANGED
data/Cargo.lock
CHANGED
@@ -11,6 +11,12 @@ dependencies = [
|
|
11
11
|
"memchr",
|
12
12
|
]
|
13
13
|
|
14
|
+
[[package]]
|
15
|
+
name = "anyhow"
|
16
|
+
version = "1.0.97"
|
17
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
18
|
+
checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
|
19
|
+
|
14
20
|
[[package]]
|
15
21
|
name = "atty"
|
16
22
|
version = "0.2.14"
|
@@ -68,9 +74,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
|
|
68
74
|
|
69
75
|
[[package]]
|
70
76
|
name = "cc"
|
71
|
-
version = "1.2.
|
77
|
+
version = "1.2.15"
|
72
78
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
73
|
-
checksum = "
|
79
|
+
checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
|
74
80
|
dependencies = [
|
75
81
|
"shlex",
|
76
82
|
]
|
@@ -107,6 +113,21 @@ dependencies = [
|
|
107
113
|
"libloading",
|
108
114
|
]
|
109
115
|
|
116
|
+
[[package]]
|
117
|
+
name = "crossbeam-channel"
|
118
|
+
version = "0.5.14"
|
119
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
120
|
+
checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
|
121
|
+
dependencies = [
|
122
|
+
"crossbeam-utils",
|
123
|
+
]
|
124
|
+
|
125
|
+
[[package]]
|
126
|
+
name = "crossbeam-utils"
|
127
|
+
version = "0.8.21"
|
128
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
129
|
+
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
130
|
+
|
110
131
|
[[package]]
|
111
132
|
name = "deranged"
|
112
133
|
version = "0.3.11"
|
@@ -139,9 +160,9 @@ dependencies = [
|
|
139
160
|
|
140
161
|
[[package]]
|
141
162
|
name = "either"
|
142
|
-
version = "1.
|
163
|
+
version = "1.15.0"
|
143
164
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
144
|
-
checksum = "
|
165
|
+
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
145
166
|
|
146
167
|
[[package]]
|
147
168
|
name = "getrandom"
|
@@ -186,9 +207,9 @@ dependencies = [
|
|
186
207
|
|
187
208
|
[[package]]
|
188
209
|
name = "itoa"
|
189
|
-
version = "1.0.
|
210
|
+
version = "1.0.14"
|
190
211
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
191
|
-
checksum = "
|
212
|
+
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
|
192
213
|
|
193
214
|
[[package]]
|
194
215
|
name = "itsi-scheduler"
|
@@ -212,11 +233,12 @@ dependencies = [
|
|
212
233
|
name = "itsi_error"
|
213
234
|
version = "0.1.0"
|
214
235
|
dependencies = [
|
236
|
+
"anyhow",
|
215
237
|
"httparse",
|
216
238
|
"magnus",
|
217
239
|
"nix",
|
218
240
|
"rcgen",
|
219
|
-
"thiserror",
|
241
|
+
"thiserror 2.0.12",
|
220
242
|
]
|
221
243
|
|
222
244
|
[[package]]
|
@@ -236,6 +258,7 @@ dependencies = [
|
|
236
258
|
"magnus",
|
237
259
|
"nix",
|
238
260
|
"rb-sys",
|
261
|
+
"serde",
|
239
262
|
]
|
240
263
|
|
241
264
|
[[package]]
|
@@ -244,6 +267,7 @@ version = "0.1.0"
|
|
244
267
|
dependencies = [
|
245
268
|
"atty",
|
246
269
|
"tracing",
|
270
|
+
"tracing-appender",
|
247
271
|
"tracing-attributes",
|
248
272
|
"tracing-subscriber",
|
249
273
|
]
|
@@ -507,9 +531,9 @@ dependencies = [
|
|
507
531
|
|
508
532
|
[[package]]
|
509
533
|
name = "redox_syscall"
|
510
|
-
version = "0.5.
|
534
|
+
version = "0.5.9"
|
511
535
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
512
|
-
checksum = "
|
536
|
+
checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f"
|
513
537
|
dependencies = [
|
514
538
|
"bitflags",
|
515
539
|
]
|
@@ -560,9 +584,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|
560
584
|
|
561
585
|
[[package]]
|
562
586
|
name = "ring"
|
563
|
-
version = "0.17.
|
587
|
+
version = "0.17.14"
|
564
588
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
565
|
-
checksum = "
|
589
|
+
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
|
566
590
|
dependencies = [
|
567
591
|
"cc",
|
568
592
|
"cfg-if",
|
@@ -586,9 +610,9 @@ checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
|
|
586
610
|
|
587
611
|
[[package]]
|
588
612
|
name = "ryu"
|
589
|
-
version = "1.0.
|
613
|
+
version = "1.0.19"
|
590
614
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
591
|
-
checksum = "
|
615
|
+
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
|
592
616
|
|
593
617
|
[[package]]
|
594
618
|
name = "scopeguard"
|
@@ -604,18 +628,18 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
|
|
604
628
|
|
605
629
|
[[package]]
|
606
630
|
name = "serde"
|
607
|
-
version = "1.0.
|
631
|
+
version = "1.0.219"
|
608
632
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
609
|
-
checksum = "
|
633
|
+
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
|
610
634
|
dependencies = [
|
611
635
|
"serde_derive",
|
612
636
|
]
|
613
637
|
|
614
638
|
[[package]]
|
615
639
|
name = "serde_derive"
|
616
|
-
version = "1.0.
|
640
|
+
version = "1.0.219"
|
617
641
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
618
|
-
checksum = "
|
642
|
+
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
|
619
643
|
dependencies = [
|
620
644
|
"proc-macro2",
|
621
645
|
"quote",
|
@@ -685,18 +709,38 @@ dependencies = [
|
|
685
709
|
|
686
710
|
[[package]]
|
687
711
|
name = "thiserror"
|
688
|
-
version = "
|
712
|
+
version = "1.0.69"
|
689
713
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
690
|
-
checksum = "
|
714
|
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
691
715
|
dependencies = [
|
692
|
-
"thiserror-impl",
|
716
|
+
"thiserror-impl 1.0.69",
|
717
|
+
]
|
718
|
+
|
719
|
+
[[package]]
|
720
|
+
name = "thiserror"
|
721
|
+
version = "2.0.12"
|
722
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
723
|
+
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
|
724
|
+
dependencies = [
|
725
|
+
"thiserror-impl 2.0.12",
|
693
726
|
]
|
694
727
|
|
695
728
|
[[package]]
|
696
729
|
name = "thiserror-impl"
|
697
|
-
version = "
|
730
|
+
version = "1.0.69"
|
698
731
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
699
|
-
checksum = "
|
732
|
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
733
|
+
dependencies = [
|
734
|
+
"proc-macro2",
|
735
|
+
"quote",
|
736
|
+
"syn 2.0.98",
|
737
|
+
]
|
738
|
+
|
739
|
+
[[package]]
|
740
|
+
name = "thiserror-impl"
|
741
|
+
version = "2.0.12"
|
742
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
743
|
+
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
|
700
744
|
dependencies = [
|
701
745
|
"proc-macro2",
|
702
746
|
"quote",
|
@@ -720,10 +764,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
720
764
|
checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
|
721
765
|
dependencies = [
|
722
766
|
"deranged",
|
767
|
+
"itoa",
|
723
768
|
"num-conv",
|
724
769
|
"powerfmt",
|
725
770
|
"serde",
|
726
771
|
"time-core",
|
772
|
+
"time-macros",
|
727
773
|
]
|
728
774
|
|
729
775
|
[[package]]
|
@@ -732,6 +778,16 @@ version = "0.1.2"
|
|
732
778
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
733
779
|
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
734
780
|
|
781
|
+
[[package]]
|
782
|
+
name = "time-macros"
|
783
|
+
version = "0.2.19"
|
784
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
785
|
+
checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de"
|
786
|
+
dependencies = [
|
787
|
+
"num-conv",
|
788
|
+
"time-core",
|
789
|
+
]
|
790
|
+
|
735
791
|
[[package]]
|
736
792
|
name = "tracing"
|
737
793
|
version = "0.1.41"
|
@@ -743,6 +799,18 @@ dependencies = [
|
|
743
799
|
"tracing-core",
|
744
800
|
]
|
745
801
|
|
802
|
+
[[package]]
|
803
|
+
name = "tracing-appender"
|
804
|
+
version = "0.2.3"
|
805
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
806
|
+
checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf"
|
807
|
+
dependencies = [
|
808
|
+
"crossbeam-channel",
|
809
|
+
"thiserror 1.0.69",
|
810
|
+
"time",
|
811
|
+
"tracing-subscriber",
|
812
|
+
]
|
813
|
+
|
746
814
|
[[package]]
|
747
815
|
name = "tracing-attributes"
|
748
816
|
version = "0.1.28"
|
data/README.md
CHANGED
data/_index.md
ADDED
data/ext/itsi_error/Cargo.toml
CHANGED
data/ext/itsi_error/src/lib.rs
CHANGED
@@ -1,24 +1,123 @@
|
|
1
|
-
pub
|
1
|
+
pub use anyhow::Context;
|
2
|
+
use magnus::Error as MagnusError;
|
3
|
+
use magnus::{
|
4
|
+
error::ErrorType,
|
5
|
+
exception::{self, arg_error, standard_error},
|
6
|
+
};
|
2
7
|
use thiserror::Error;
|
3
8
|
|
9
|
+
pub static CLIENT_CONNECTION_CLOSED: &str = "Client disconnected";
|
4
10
|
pub type Result<T> = std::result::Result<T, ItsiError>;
|
5
11
|
|
6
12
|
#[derive(Error, Debug)]
|
7
13
|
pub enum ItsiError {
|
8
|
-
#[error("Invalid input {0}")]
|
14
|
+
#[error("Invalid input: {0}")]
|
9
15
|
InvalidInput(String),
|
10
|
-
|
16
|
+
|
17
|
+
#[error("Internal server error: {0}")]
|
11
18
|
InternalServerError(String),
|
12
|
-
|
19
|
+
|
20
|
+
#[error("Unsupported protocol: {0}")]
|
13
21
|
UnsupportedProtocol(String),
|
22
|
+
|
14
23
|
#[error("Argument error: {0}")]
|
15
24
|
ArgumentError(String),
|
25
|
+
|
16
26
|
#[error("Client Connection Closed")]
|
17
27
|
ClientConnectionClosed,
|
18
|
-
|
28
|
+
|
29
|
+
#[error("Internal Error")]
|
30
|
+
InternalError(String),
|
31
|
+
|
32
|
+
#[error(transparent)]
|
33
|
+
Io(#[from] std::io::Error),
|
34
|
+
|
35
|
+
#[error(transparent)]
|
36
|
+
Rcgen(#[from] rcgen::Error),
|
37
|
+
|
38
|
+
#[error(transparent)]
|
39
|
+
HttpParse(#[from] httparse::Error),
|
40
|
+
|
41
|
+
#[error(transparent)]
|
42
|
+
NixErrno(#[from] nix::errno::Errno),
|
43
|
+
|
44
|
+
#[error(transparent)]
|
45
|
+
Nul(#[from] std::ffi::NulError),
|
46
|
+
|
47
|
+
#[error("Jump: {0}")]
|
19
48
|
Jump(String),
|
49
|
+
|
20
50
|
#[error("Break")]
|
21
|
-
Break
|
51
|
+
Break,
|
52
|
+
|
22
53
|
#[error("Pass")]
|
23
|
-
Pass
|
54
|
+
Pass,
|
55
|
+
|
56
|
+
#[error(transparent)]
|
57
|
+
Anyhow(#[from] anyhow::Error),
|
24
58
|
}
|
59
|
+
|
60
|
+
impl From<magnus::Error> for ItsiError {
|
61
|
+
fn from(err: magnus::Error) -> Self {
|
62
|
+
match err.error_type() {
|
63
|
+
ErrorType::Jump(tag) => ItsiError::Jump(tag.to_string()),
|
64
|
+
ErrorType::Error(_exception_class, cow) => ItsiError::ArgumentError(cow.to_string()),
|
65
|
+
ErrorType::Exception(exception) => ItsiError::ArgumentError(exception.to_string()),
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
pub trait IntoMagnusError {
|
71
|
+
fn into_magnus_error(self) -> MagnusError;
|
72
|
+
}
|
73
|
+
|
74
|
+
impl<T: std::error::Error> IntoMagnusError for T {
|
75
|
+
fn into_magnus_error(self) -> MagnusError {
|
76
|
+
MagnusError::new(standard_error(), self.to_string())
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
impl From<&str> for ItsiError {
|
81
|
+
fn from(s: &str) -> Self {
|
82
|
+
ItsiError::InternalError(s.to_owned())
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
impl From<String> for ItsiError {
|
87
|
+
fn from(s: String) -> Self {
|
88
|
+
ItsiError::InternalError(s)
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
impl From<ItsiError> for magnus::Error {
|
93
|
+
fn from(err: ItsiError) -> Self {
|
94
|
+
match err {
|
95
|
+
ItsiError::InvalidInput(msg) => magnus::Error::new(arg_error(), msg),
|
96
|
+
ItsiError::InternalServerError(msg) => magnus::Error::new(standard_error(), msg),
|
97
|
+
ItsiError::InternalError(msg) => magnus::Error::new(standard_error(), msg),
|
98
|
+
ItsiError::UnsupportedProtocol(msg) => magnus::Error::new(arg_error(), msg),
|
99
|
+
ItsiError::ArgumentError(msg) => magnus::Error::new(arg_error(), msg),
|
100
|
+
ItsiError::Jump(msg) => magnus::Error::new(exception::local_jump_error(), msg),
|
101
|
+
ItsiError::ClientConnectionClosed => {
|
102
|
+
magnus::Error::new(exception::eof_error(), CLIENT_CONNECTION_CLOSED)
|
103
|
+
}
|
104
|
+
ItsiError::Break => magnus::Error::new(exception::interrupt(), "Break"),
|
105
|
+
ItsiError::Pass => magnus::Error::new(exception::interrupt(), "Pass"),
|
106
|
+
ItsiError::Io(err) => err.into_magnus_error(),
|
107
|
+
ItsiError::Rcgen(err) => err.into_magnus_error(),
|
108
|
+
ItsiError::HttpParse(err) => err.into_magnus_error(),
|
109
|
+
ItsiError::NixErrno(err) => err.into_magnus_error(),
|
110
|
+
ItsiError::Nul(err) => err.into_magnus_error(),
|
111
|
+
ItsiError::Anyhow(err) => err.into_magnus_error(),
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
impl ItsiError {
|
117
|
+
pub fn new(error: impl Send + Sync + 'static + std::fmt::Display) -> Self {
|
118
|
+
ItsiError::InternalError(format!("{}", error))
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
unsafe impl Send for ItsiError {}
|
123
|
+
unsafe impl Sync for ItsiError {}
|