itsi-server 0.1.1 → 0.1.11
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-server might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Cargo.lock +2926 -0
- data/Cargo.toml +7 -0
- data/Rakefile +8 -1
- data/exe/itsi +119 -29
- data/ext/itsi_error/Cargo.toml +2 -0
- data/ext/itsi_error/src/from.rs +68 -0
- data/ext/itsi_error/src/lib.rs +13 -38
- data/ext/itsi_instrument_entry/Cargo.toml +15 -0
- data/ext/itsi_instrument_entry/src/lib.rs +31 -0
- data/ext/itsi_rb_helpers/Cargo.toml +2 -0
- data/ext/itsi_rb_helpers/src/heap_value.rs +121 -0
- data/ext/itsi_rb_helpers/src/lib.rs +112 -9
- data/ext/itsi_scheduler/Cargo.toml +24 -0
- data/ext/itsi_scheduler/extconf.rb +6 -0
- data/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +56 -0
- data/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +44 -0
- data/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +44 -0
- data/ext/itsi_scheduler/src/itsi_scheduler.rs +308 -0
- data/ext/itsi_scheduler/src/lib.rs +38 -0
- data/ext/itsi_server/Cargo.lock +2956 -0
- data/ext/itsi_server/Cargo.toml +25 -4
- data/ext/itsi_server/extconf.rb +1 -1
- data/ext/itsi_server/src/body_proxy/big_bytes.rs +104 -0
- data/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs +122 -0
- data/ext/itsi_server/src/body_proxy/mod.rs +2 -0
- data/ext/itsi_server/src/env.rs +43 -0
- data/ext/itsi_server/src/lib.rs +136 -8
- data/ext/itsi_server/src/request/itsi_request.rs +258 -103
- data/ext/itsi_server/src/response/itsi_response.rs +357 -0
- data/ext/itsi_server/src/response/mod.rs +1 -0
- data/ext/itsi_server/src/server/bind.rs +65 -29
- data/ext/itsi_server/src/server/bind_protocol.rs +37 -0
- data/ext/itsi_server/src/server/io_stream.rs +104 -0
- data/ext/itsi_server/src/server/itsi_server.rs +245 -139
- data/ext/itsi_server/src/server/lifecycle_event.rs +9 -0
- data/ext/itsi_server/src/server/listener.rs +237 -137
- data/ext/itsi_server/src/server/mod.rs +7 -1
- data/ext/itsi_server/src/server/process_worker.rs +203 -0
- data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +260 -0
- data/ext/itsi_server/src/server/serve_strategy/mod.rs +27 -0
- data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +276 -0
- data/ext/itsi_server/src/server/signal.rs +74 -0
- data/ext/itsi_server/src/server/thread_worker.rs +399 -0
- data/ext/itsi_server/src/server/tls/locked_dir_cache.rs +132 -0
- data/ext/itsi_server/src/server/tls.rs +187 -60
- data/ext/itsi_tracing/Cargo.toml +4 -0
- data/ext/itsi_tracing/src/lib.rs +53 -6
- data/lib/itsi/index.html +91 -0
- data/lib/itsi/request.rb +38 -14
- data/lib/itsi/server/Itsi.rb +127 -0
- data/lib/itsi/server/config.rb +36 -0
- data/lib/itsi/server/options_dsl.rb +401 -0
- data/lib/itsi/server/rack/handler/itsi.rb +36 -0
- data/lib/itsi/server/rack_interface.rb +75 -0
- data/lib/itsi/server/scheduler_interface.rb +21 -0
- data/lib/itsi/server/scheduler_mode.rb +6 -0
- data/lib/itsi/server/signal_trap.rb +23 -0
- data/lib/itsi/server/version.rb +1 -1
- data/lib/itsi/server.rb +79 -9
- data/lib/itsi/stream_io.rb +38 -0
- metadata +49 -27
- data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -32
- data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -52
- data/ext/itsi_server/src/server/transfer_protocol.rs +0 -23
- data/ext/itsi_server/src/stream_writer/mod.rs +0 -21
data/lib/itsi/server.rb
CHANGED
@@ -2,19 +2,89 @@
|
|
2
2
|
|
3
3
|
require_relative "server/version"
|
4
4
|
require_relative "server/itsi_server"
|
5
|
+
require_relative "server/rack_interface"
|
6
|
+
require_relative "server/signal_trap"
|
7
|
+
require_relative "server/scheduler_interface"
|
8
|
+
require_relative "server/rack/handler/itsi"
|
9
|
+
require_relative "server/config"
|
10
|
+
require_relative "request"
|
11
|
+
require_relative "stream_io"
|
12
|
+
|
13
|
+
# When you Run Itsi without a Rack app,
|
14
|
+
# we start a tiny little echo server, just so you can see it in action.
|
15
|
+
DEFAULT_INDEX = IO.read("#{__dir__}/index.html").freeze
|
16
|
+
DEFAULT_BINDS = ["http://0.0.0.0:3000"].freeze
|
17
|
+
DEFAULT_APP = lambda {
|
18
|
+
require "json"
|
19
|
+
require "itsi/scheduler"
|
20
|
+
Itsi.log_warn "No config.ru or Itsi.rb app detected. Running default app."
|
21
|
+
lambda do |env|
|
22
|
+
headers, body = \
|
23
|
+
if env["itsi.response"].json?
|
24
|
+
[
|
25
|
+
{ "Content-Type" => "application/json" },
|
26
|
+
[{ "message" => "You're running on Itsi!", "rack_env" => env,
|
27
|
+
"version" => Itsi::Server::VERSION }.to_json]
|
28
|
+
]
|
29
|
+
else
|
30
|
+
[
|
31
|
+
{ "Content-Type" => "text/html" },
|
32
|
+
[
|
33
|
+
format(
|
34
|
+
DEFAULT_INDEX,
|
35
|
+
REQUEST_METHOD: env["REQUEST_METHOD"],
|
36
|
+
PATH_INFO: env["PATH_INFO"],
|
37
|
+
SERVER_NAME: env["SERVER_NAME"],
|
38
|
+
SERVER_PORT: env["SERVER_PORT"],
|
39
|
+
REMOTE_ADDR: env["REMOTE_ADDR"],
|
40
|
+
HTTP_USER_AGENT: env["HTTP_USER_AGENT"]
|
41
|
+
)
|
42
|
+
]
|
43
|
+
]
|
44
|
+
end
|
45
|
+
[200, headers, body]
|
46
|
+
end
|
47
|
+
}
|
5
48
|
|
6
49
|
module Itsi
|
7
50
|
class Server
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
51
|
+
extend RackInterface
|
52
|
+
extend SchedulerInterface
|
53
|
+
|
54
|
+
class << self
|
55
|
+
def running?
|
56
|
+
!!@running
|
57
|
+
end
|
58
|
+
|
59
|
+
def build(
|
60
|
+
app: DEFAULT_APP[],
|
61
|
+
loader: nil,
|
62
|
+
binds: DEFAULT_BINDS,
|
63
|
+
**opts
|
64
|
+
)
|
65
|
+
new(app: loader || -> { app }, binds: binds, **opts)
|
66
|
+
end
|
67
|
+
|
68
|
+
def start_in_background_thread(silence: true, **opts)
|
69
|
+
start(background: true, silence: silence, **opts)
|
70
|
+
end
|
12
71
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
72
|
+
def start(background: false, silence: false, **opts)
|
73
|
+
build(**opts).tap do |server|
|
74
|
+
previous_handler = Signal.trap("INT", "DEFAULT")
|
75
|
+
@running = true
|
76
|
+
if background
|
77
|
+
Thread.new do
|
78
|
+
server.start
|
79
|
+
@running = false
|
80
|
+
Signal.trap("INT", previous_handler)
|
81
|
+
end
|
82
|
+
else
|
83
|
+
server.start
|
84
|
+
@running = false
|
85
|
+
Signal.trap("INT", previous_handler)
|
86
|
+
end
|
87
|
+
end
|
18
88
|
end
|
19
89
|
end
|
20
90
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Itsi
|
2
|
+
class StreamIO
|
3
|
+
attr :response
|
4
|
+
def initialize(response)
|
5
|
+
@response = response
|
6
|
+
end
|
7
|
+
|
8
|
+
def read
|
9
|
+
response.recv_frame
|
10
|
+
end
|
11
|
+
|
12
|
+
def write(string)
|
13
|
+
response.send_frame(string)
|
14
|
+
end
|
15
|
+
|
16
|
+
def <<(string)
|
17
|
+
response.send_frame(string)
|
18
|
+
end
|
19
|
+
|
20
|
+
def flush
|
21
|
+
# No-op
|
22
|
+
end
|
23
|
+
|
24
|
+
def close
|
25
|
+
close_read
|
26
|
+
close_write
|
27
|
+
end
|
28
|
+
|
29
|
+
def close_read
|
30
|
+
response.close_read
|
31
|
+
end
|
32
|
+
|
33
|
+
def close_write
|
34
|
+
response.close_write
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itsi-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wouter Coppieters
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-03-
|
10
|
+
date: 2025-03-17 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
|
-
name:
|
13
|
+
name: rack
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
|
-
- - "
|
16
|
+
- - ">="
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: '
|
18
|
+
version: '1.6'
|
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: '
|
25
|
+
version: '1.6'
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rb_sys
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -37,20 +37,6 @@ dependencies:
|
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: 0.9.91
|
40
|
-
- !ruby/object:Gem::Dependency
|
41
|
-
name: rack
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - "~>"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '2'
|
47
|
-
type: :runtime
|
48
|
-
prerelease: false
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '2'
|
54
40
|
description: Itsi Server - A light-weight Rack Server implementation for Ruby
|
55
41
|
email:
|
56
42
|
- wc@pico.net.nz
|
@@ -63,36 +49,72 @@ files:
|
|
63
49
|
- ".rubocop.yml"
|
64
50
|
- CHANGELOG.md
|
65
51
|
- CODE_OF_CONDUCT.md
|
52
|
+
- Cargo.lock
|
53
|
+
- Cargo.toml
|
66
54
|
- LICENSE.txt
|
67
55
|
- README.md
|
68
56
|
- Rakefile
|
69
57
|
- exe/itsi
|
70
58
|
- ext/itsi_error/Cargo.lock
|
71
59
|
- ext/itsi_error/Cargo.toml
|
60
|
+
- ext/itsi_error/src/from.rs
|
72
61
|
- ext/itsi_error/src/lib.rs
|
62
|
+
- ext/itsi_instrument_entry/Cargo.toml
|
63
|
+
- ext/itsi_instrument_entry/src/lib.rs
|
73
64
|
- ext/itsi_rb_helpers/Cargo.lock
|
74
65
|
- ext/itsi_rb_helpers/Cargo.toml
|
66
|
+
- ext/itsi_rb_helpers/src/heap_value.rs
|
75
67
|
- ext/itsi_rb_helpers/src/lib.rs
|
68
|
+
- ext/itsi_scheduler/Cargo.toml
|
69
|
+
- ext/itsi_scheduler/extconf.rb
|
70
|
+
- ext/itsi_scheduler/src/itsi_scheduler.rs
|
71
|
+
- ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs
|
72
|
+
- ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs
|
73
|
+
- ext/itsi_scheduler/src/itsi_scheduler/timer.rs
|
74
|
+
- ext/itsi_scheduler/src/lib.rs
|
75
|
+
- ext/itsi_server/Cargo.lock
|
76
76
|
- ext/itsi_server/Cargo.toml
|
77
77
|
- ext/itsi_server/extconf.rb
|
78
|
+
- ext/itsi_server/src/body_proxy/big_bytes.rs
|
79
|
+
- ext/itsi_server/src/body_proxy/itsi_body_proxy.rs
|
80
|
+
- ext/itsi_server/src/body_proxy/mod.rs
|
81
|
+
- ext/itsi_server/src/env.rs
|
78
82
|
- ext/itsi_server/src/lib.rs
|
79
83
|
- ext/itsi_server/src/request/itsi_request.rs
|
80
84
|
- ext/itsi_server/src/request/mod.rs
|
85
|
+
- ext/itsi_server/src/response/itsi_response.rs
|
86
|
+
- ext/itsi_server/src/response/mod.rs
|
81
87
|
- ext/itsi_server/src/server/bind.rs
|
82
|
-
- ext/itsi_server/src/server/
|
83
|
-
- ext/itsi_server/src/server/
|
88
|
+
- ext/itsi_server/src/server/bind_protocol.rs
|
89
|
+
- ext/itsi_server/src/server/io_stream.rs
|
84
90
|
- ext/itsi_server/src/server/itsi_server.rs
|
91
|
+
- ext/itsi_server/src/server/lifecycle_event.rs
|
85
92
|
- ext/itsi_server/src/server/listener.rs
|
86
93
|
- ext/itsi_server/src/server/mod.rs
|
94
|
+
- ext/itsi_server/src/server/process_worker.rs
|
95
|
+
- ext/itsi_server/src/server/serve_strategy/cluster_mode.rs
|
96
|
+
- ext/itsi_server/src/server/serve_strategy/mod.rs
|
97
|
+
- ext/itsi_server/src/server/serve_strategy/single_mode.rs
|
98
|
+
- ext/itsi_server/src/server/signal.rs
|
99
|
+
- ext/itsi_server/src/server/thread_worker.rs
|
87
100
|
- ext/itsi_server/src/server/tls.rs
|
88
|
-
- ext/itsi_server/src/server/
|
89
|
-
- ext/itsi_server/src/stream_writer/mod.rs
|
101
|
+
- ext/itsi_server/src/server/tls/locked_dir_cache.rs
|
90
102
|
- ext/itsi_tracing/Cargo.lock
|
91
103
|
- ext/itsi_tracing/Cargo.toml
|
92
104
|
- ext/itsi_tracing/src/lib.rs
|
105
|
+
- lib/itsi/index.html
|
93
106
|
- lib/itsi/request.rb
|
94
107
|
- lib/itsi/server.rb
|
108
|
+
- lib/itsi/server/Itsi.rb
|
109
|
+
- lib/itsi/server/config.rb
|
110
|
+
- lib/itsi/server/options_dsl.rb
|
111
|
+
- lib/itsi/server/rack/handler/itsi.rb
|
112
|
+
- lib/itsi/server/rack_interface.rb
|
113
|
+
- lib/itsi/server/scheduler_interface.rb
|
114
|
+
- lib/itsi/server/scheduler_mode.rb
|
115
|
+
- lib/itsi/server/signal_trap.rb
|
95
116
|
- lib/itsi/server/version.rb
|
117
|
+
- lib/itsi/stream_io.rb
|
96
118
|
- sig/itsi_server.rbs
|
97
119
|
homepage: https://itsi.fyi
|
98
120
|
licenses:
|
@@ -108,12 +130,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
130
|
requirements:
|
109
131
|
- - ">="
|
110
132
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
133
|
+
version: 2.7.0
|
112
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
135
|
requirements:
|
114
136
|
- - ">="
|
115
137
|
- !ruby/object:Gem::Version
|
116
|
-
version: 3.
|
138
|
+
version: '3.1'
|
117
139
|
requirements: []
|
118
140
|
rubygems_version: 3.6.2
|
119
141
|
specification_version: 4
|
@@ -1,32 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
nM3AJRT5dHlcHkn6z1snFqRHko4QvG0bSHlZFepogLG9yOGB0B1Hp4JPTSimEb6f
|
28
|
-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
-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
-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
|
31
|
-
jI16bCLO/G1NaQ+N9YFL4TGfvbCe
|
32
|
-
-----END CERTIFICATE-----
|
@@ -1,52 +0,0 @@
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
2
|
-
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
-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
-
+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
-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
-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
-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
-
zUsDipOBA9S9QhfLIUYLeU+yMocaISK1shPiwNA7Pecwy9PQUg/sM+2JIC7LHQgn
|
9
|
-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
-
/wrvbKnaFIK7/kRDBXeTAozDQmaMkXJovxILYYme55ZYIghmNh1zRkAD0O+X16hJ
|
11
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
7JWJNZ5G58muXBzh2+q4mBJTKN9RBHE+CHeNDR6Yp2/Tul0P7GesMMx78De4iNsu
|
22
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
51
|
-
cN5973/E4MpAKMt1shs0YWr3axraOhkg
|
52
|
-
-----END PRIVATE KEY-----
|
@@ -1,23 +0,0 @@
|
|
1
|
-
use itsi_error::ItsiError;
|
2
|
-
use std::str::FromStr;
|
3
|
-
|
4
|
-
#[derive(Debug, Default, Clone)]
|
5
|
-
pub enum TransferProtocol {
|
6
|
-
#[default]
|
7
|
-
Https,
|
8
|
-
Http,
|
9
|
-
Unix,
|
10
|
-
}
|
11
|
-
|
12
|
-
impl FromStr for TransferProtocol {
|
13
|
-
type Err = ItsiError;
|
14
|
-
|
15
|
-
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
16
|
-
match s {
|
17
|
-
"http" => Ok(TransferProtocol::Http),
|
18
|
-
"https" => Ok(TransferProtocol::Https),
|
19
|
-
"unix" => Ok(TransferProtocol::Unix),
|
20
|
-
_ => Err(ItsiError::UnsupportedProtocol(s.to_string())),
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
@@ -1,21 +0,0 @@
|
|
1
|
-
use bytes::Bytes;
|
2
|
-
use magnus::{error::Result as MagnusResult, exception::io_error, Error};
|
3
|
-
use tokio::sync::mpsc::Sender;
|
4
|
-
|
5
|
-
#[magnus::wrap(class = "Itsi::StreamWriter", free_immediately, size)]
|
6
|
-
pub struct StreamWriter {
|
7
|
-
sender: Sender<Bytes>,
|
8
|
-
}
|
9
|
-
|
10
|
-
impl StreamWriter {
|
11
|
-
pub fn new(sender: Sender<Bytes>) -> Self {
|
12
|
-
StreamWriter { sender }
|
13
|
-
}
|
14
|
-
|
15
|
-
pub fn write(&self, bytes: Bytes) -> MagnusResult<()> {
|
16
|
-
self.sender
|
17
|
-
.blocking_send(bytes)
|
18
|
-
.map_err(|e| Error::new(io_error(), format!("{:?}", e)))?;
|
19
|
-
Ok(())
|
20
|
-
}
|
21
|
-
}
|