tipi 0.40 → 0.41
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.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +23 -13
- data/Rakefile +7 -3
- data/df/server.rb +15 -103
- data/df/server_utils.rb +173 -0
- data/examples/http1_parser.rb +53 -0
- data/examples/http_server.rb +12 -3
- data/examples/http_server_static.rb +6 -18
- data/ext/tipi/extconf.rb +12 -0
- data/ext/tipi/http1_parser.c +534 -0
- data/ext/tipi/http1_parser.h +18 -0
- data/ext/tipi/tipi_ext.c +5 -0
- data/lib/tipi.rb +2 -1
- data/lib/tipi/digital_fabric/agent.rb +5 -3
- data/lib/tipi/digital_fabric/agent_proxy.rb +12 -5
- data/lib/tipi/digital_fabric/executive.rb +2 -2
- data/lib/tipi/digital_fabric/protocol.rb +16 -1
- data/lib/tipi/digital_fabric/service.rb +69 -40
- data/lib/tipi/http1_adapter.rb +2 -2
- data/lib/tipi/http1_adapter_new.rb +293 -0
- data/lib/tipi/rack_adapter.rb +2 -53
- data/lib/tipi/response_extensions.rb +1 -1
- data/lib/tipi/version.rb +1 -1
- data/tipi.gemspec +6 -2
- metadata +44 -9
- data/e +0 -0
data/lib/tipi/rack_adapter.rb
CHANGED
@@ -3,25 +3,7 @@
|
|
3
3
|
require 'rack'
|
4
4
|
|
5
5
|
module Tipi
|
6
|
-
module RackAdapter
|
7
|
-
# Implements a rack input stream:
|
8
|
-
# https://www.rubydoc.info/github/rack/rack/master/file/SPEC#label-The+Input+Stream
|
9
|
-
class InputStream
|
10
|
-
def initialize(request)
|
11
|
-
@request = request
|
12
|
-
end
|
13
|
-
|
14
|
-
def gets; end
|
15
|
-
|
16
|
-
def read(length = nil, outbuf = nil); end
|
17
|
-
|
18
|
-
def each(&block)
|
19
|
-
@request.each_chunk(&block)
|
20
|
-
end
|
21
|
-
|
22
|
-
def rewind; end
|
23
|
-
end
|
24
|
-
|
6
|
+
module RackAdapter
|
25
7
|
class << self
|
26
8
|
def run(app)
|
27
9
|
->(req) { respond(req, app.(env(req))) }
|
@@ -32,41 +14,8 @@ module Tipi
|
|
32
14
|
instance_eval(src, path, 1)
|
33
15
|
end
|
34
16
|
|
35
|
-
RACK_ENV = {
|
36
|
-
'SCRIPT_NAME' => '',
|
37
|
-
'rack.version' => Rack::VERSION,
|
38
|
-
'SERVER_PORT' => '80', # ?
|
39
|
-
'rack.url_scheme' => 'http', # ?
|
40
|
-
'rack.errors' => STDERR, # ?
|
41
|
-
'rack.multithread' => false,
|
42
|
-
'rack.run_once' => false,
|
43
|
-
'rack.hijack?' => false,
|
44
|
-
'rack.hijack' => nil,
|
45
|
-
'rack.hijack_io' => nil,
|
46
|
-
'rack.session' => nil,
|
47
|
-
'rack.logger' => nil,
|
48
|
-
'rack.multipart.buffer_size' => nil,
|
49
|
-
'rack.multipar.tempfile_factory' => nil
|
50
|
-
}
|
51
|
-
|
52
17
|
def env(request)
|
53
|
-
|
54
|
-
h[k] = env_value_from_request(request, k)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
HTTP_HEADER_RE = /^HTTP_(.+)$/.freeze
|
59
|
-
|
60
|
-
def env_value_from_request(request, key)
|
61
|
-
case key
|
62
|
-
when 'REQUEST_METHOD' then request.method
|
63
|
-
when 'PATH_INFO' then request.path
|
64
|
-
when 'QUERY_STRING' then request.query_string || ''
|
65
|
-
when 'SERVER_NAME' then request.headers['host']
|
66
|
-
when 'rack.input' then InputStream.new(request)
|
67
|
-
when HTTP_HEADER_RE then request.headers[$1.downcase]
|
68
|
-
else RACK_ENV[key]
|
69
|
-
end
|
18
|
+
Qeweney.rack_env_from_request(request)
|
70
19
|
end
|
71
20
|
|
72
21
|
def respond(request, (status_code, headers, body))
|
@@ -8,7 +8,7 @@ module Tipi
|
|
8
8
|
|
9
9
|
def serve_io(io, opts)
|
10
10
|
if !opts[:stat] || opts[:stat].size >= SPLICE_CHUNKS_SIZE_THRESHOLD
|
11
|
-
@adapter.respond_from_io(self, io, opts[:headers])
|
11
|
+
@adapter.respond_from_io(self, io, opts[:headers], opts[:chunk_size] || 2**14)
|
12
12
|
else
|
13
13
|
respond(io.read, opts[:headers] || {})
|
14
14
|
end
|
data/lib/tipi/version.rb
CHANGED
data/tipi.gemspec
CHANGED
@@ -14,13 +14,14 @@ Gem::Specification.new do |s|
|
|
14
14
|
}
|
15
15
|
s.rdoc_options = ["--title", "tipi", "--main", "README.md"]
|
16
16
|
s.extra_rdoc_files = ["README.md"]
|
17
|
+
s.extensions = ["ext/tipi/extconf.rb"]
|
17
18
|
s.require_paths = ["lib"]
|
18
19
|
s.required_ruby_version = '>= 2.6'
|
19
20
|
|
20
21
|
s.executables = ['tipi']
|
21
22
|
|
22
|
-
s.add_runtime_dependency 'polyphony', '~>0.
|
23
|
-
s.add_runtime_dependency 'qeweney', '~>0.
|
23
|
+
s.add_runtime_dependency 'polyphony', '~>0.64'
|
24
|
+
s.add_runtime_dependency 'qeweney', '~>0.11'
|
24
25
|
|
25
26
|
s.add_runtime_dependency 'http_parser.rb', '~>0.6.0'
|
26
27
|
s.add_runtime_dependency 'http-2', '~>0.10.0'
|
@@ -31,9 +32,12 @@ Gem::Specification.new do |s|
|
|
31
32
|
# for digital fabric
|
32
33
|
s.add_runtime_dependency 'msgpack', '~>1.4.2'
|
33
34
|
|
35
|
+
s.add_development_dependency 'rake-compiler', '1.1.1'
|
34
36
|
s.add_development_dependency 'rake', '~>12.3.3'
|
35
37
|
s.add_development_dependency 'localhost', '~>1.1.4'
|
36
38
|
s.add_development_dependency 'minitest', '~>5.11.3'
|
37
39
|
s.add_development_dependency 'minitest-reporters', '~>1.4.2'
|
38
40
|
s.add_development_dependency 'simplecov', '~>0.17.1'
|
41
|
+
|
42
|
+
s.add_development_dependency 'cuba', '~>3.9.3'
|
39
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tipi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.41'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: polyphony
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: '0.64'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: '0.64'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: qeweney
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: '0.11'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: '0.11'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: http_parser.rb
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,6 +128,20 @@ dependencies:
|
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: 1.4.2
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: rake-compiler
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - '='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: 1.1.1
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - '='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 1.1.1
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: rake
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,11 +212,26 @@ dependencies:
|
|
198
212
|
- - "~>"
|
199
213
|
- !ruby/object:Gem::Version
|
200
214
|
version: 0.17.1
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: cuba
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 3.9.3
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 3.9.3
|
201
229
|
description:
|
202
230
|
email: sharon@noteflakes.com
|
203
231
|
executables:
|
204
232
|
- tipi
|
205
|
-
extensions:
|
233
|
+
extensions:
|
234
|
+
- ext/tipi/extconf.rb
|
206
235
|
extra_rdoc_files:
|
207
236
|
- README.md
|
208
237
|
files:
|
@@ -223,16 +252,17 @@ files:
|
|
223
252
|
- df/routing_benchmark.rb
|
224
253
|
- df/sample_agent.rb
|
225
254
|
- df/server.rb
|
255
|
+
- df/server_utils.rb
|
226
256
|
- df/sse_page.html
|
227
257
|
- df/stress.rb
|
228
258
|
- df/ws_page.html
|
229
259
|
- docs/README.md
|
230
260
|
- docs/tipi-logo.png
|
231
|
-
- e
|
232
261
|
- examples/automatic_certificate.rb
|
233
262
|
- examples/cuba.ru
|
234
263
|
- examples/hanami-api.ru
|
235
264
|
- examples/hello.ru
|
265
|
+
- examples/http1_parser.rb
|
236
266
|
- examples/http_request_ws_server.rb
|
237
267
|
- examples/http_server.js
|
238
268
|
- examples/http_server.rb
|
@@ -260,6 +290,10 @@ files:
|
|
260
290
|
- examples/websocket_server.rb
|
261
291
|
- examples/ws_page.html
|
262
292
|
- examples/wss_page.html
|
293
|
+
- ext/tipi/extconf.rb
|
294
|
+
- ext/tipi/http1_parser.c
|
295
|
+
- ext/tipi/http1_parser.h
|
296
|
+
- ext/tipi/tipi_ext.c
|
263
297
|
- lib/tipi.rb
|
264
298
|
- lib/tipi/config_dsl.rb
|
265
299
|
- lib/tipi/configuration.rb
|
@@ -273,6 +307,7 @@ files:
|
|
273
307
|
- lib/tipi/digital_fabric/service.rb
|
274
308
|
- lib/tipi/handler.rb
|
275
309
|
- lib/tipi/http1_adapter.rb
|
310
|
+
- lib/tipi/http1_adapter_new.rb
|
276
311
|
- lib/tipi/http2_adapter.rb
|
277
312
|
- lib/tipi/http2_stream.rb
|
278
313
|
- lib/tipi/rack_adapter.rb
|
@@ -310,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
310
345
|
- !ruby/object:Gem::Version
|
311
346
|
version: '0'
|
312
347
|
requirements: []
|
313
|
-
rubygems_version: 3.1.
|
348
|
+
rubygems_version: 3.1.6
|
314
349
|
signing_key:
|
315
350
|
specification_version: 4
|
316
351
|
summary: Tipi - the All-in-one Web Server for Ruby Apps
|
data/e
DELETED
File without changes
|