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.
@@ -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
- Hash.new do |h, k|
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tipi
4
- VERSION = '0.40'
4
+ VERSION = '0.41'
5
5
  end
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.57.0'
23
- s.add_runtime_dependency 'qeweney', '~>0.10.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.40'
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-06-24 00:00:00.000000000 Z
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.57.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.57.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.10.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.10.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.4
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