opal-up 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb3a4f16540780758e686bbd53c9ab5467b85988bd83a990b05ab54b124c2d2d
4
- data.tar.gz: 292c74cb7b0771cf807af2b1ebc221707f2b92bd28ca2e1271038b242aa94fc5
3
+ metadata.gz: 3bb6a2cde4f3f4cc8415d17f9d6c471dd5a991cf8ef3a588c528370b4330683d
4
+ data.tar.gz: 697d463336883f4259a27804239642fca35915f7991de7cc92260b6adcda44e1
5
5
  SHA512:
6
- metadata.gz: 4fbbd939aa7c268d503953c9d7b36d92071c23ae498df1c948acb6886007a66eb60218766528fbb6f5fe1016cdd77890a039533c40fbe3baad8594cca77f8e2d
7
- data.tar.gz: da01a9584cd43ec5d5c2b97cad04c2bf6895ec029e5e34f4614a9381010788009c97f09c5b8e832913befbb6fb2b3b9157f1baeeff280cbd3e527bb61b4450e6
6
+ metadata.gz: '09e5af566f909d626a00e0b865b5bb7d7e717d7488f7111a5cc6b9fd8ad2b53d2c9e9aa651492ff76e6ef5eb61da63f208d719af2a593b458033b1eec3a90a10'
7
+ data.tar.gz: f96190488e44fac00d338f639b9167e80ac0a48cd9ee108a75474e99d982834514b94f4a01c8769ef399091c6cab2c6e54381e3e1e524215b2a028a8039abf75
data/ext/up_ext/Loop.h CHANGED
@@ -21,8 +21,8 @@
21
21
  /* The loop is lazily created per-thread and run with run() */
22
22
 
23
23
  #include "LoopData.h"
24
+ #include "libusockets.h"
24
25
  #include <iostream>
25
- #include <libusockets.h>
26
26
 
27
27
  namespace uWS {
28
28
  struct Loop {
@@ -18,7 +18,7 @@
18
18
  #ifndef UWS_WEBSOCKETPROTOCOL_H
19
19
  #define UWS_WEBSOCKETPROTOCOL_H
20
20
 
21
- #include <libusockets.h>
21
+ #include "libusockets.h"
22
22
 
23
23
  #include <cstdint>
24
24
  #include <cstdlib>
data/ext/up_ext/up_ext.c CHANGED
@@ -143,9 +143,17 @@ static void up_internal_req_header_handler(const char *h, size_t h_len,
143
143
  }
144
144
 
145
145
  header_key[h_len + 5] = '\0';
146
- rb_hash_aset((VALUE)renv,
147
- rb_enc_str_new(header_key, h_len + 5, binary_encoding),
148
- rb_enc_str_new(v, v_len, binary_encoding));
146
+ if (header_key[5] == 'C' &&
147
+ ((strncmp(header_key + 5, "CONTENT_TYPE", 12) == 0) ||
148
+ (strncmp(header_key + 5, "CONTENT_LENGTH", 14) == 0))) {
149
+ rb_hash_aset((VALUE)renv,
150
+ rb_enc_str_new(header_key + 5, h_len, binary_encoding),
151
+ rb_enc_str_new(v, v_len, binary_encoding));
152
+ } else {
153
+ rb_hash_aset((VALUE)renv,
154
+ rb_enc_str_new(header_key, h_len + 5, binary_encoding),
155
+ rb_enc_str_new(v, v_len, binary_encoding));
156
+ }
149
157
  }
150
158
 
151
159
  static void up_server_prepare_env(VALUE renv, uws_req_t *req) {
@@ -921,15 +929,6 @@ void up_setup_rack_env_template(void) {
921
929
  // A common object interface for logging messages
922
930
  up_hash_set(rack_env_template, "rack.logger", default_logger);
923
931
 
924
- // An Integer hint to the multipart parser as to what chunk size to use for
925
- // reads and writes.
926
- up_hash_set(rack_env_template, "rack.multipart.buffer_size", INT2FIX(4096));
927
-
928
- // An object responding to #call with two arguments, the filename and
929
- // content_type given for the multipart form field, and returning an IO-like
930
- // object that responds to #<< and optionally #rewind.
931
- // up_hash_set(rack_env_template, "rack.multipart.tempfile_factory", Qnil);
932
-
933
932
  // An array of callables run by the server after the response has been
934
933
  // processed.
935
934
  // up_hash_set(rack_env_template, "rack.response_finished", Qnil);
data/lib/up/bun/server.rb CHANGED
@@ -27,7 +27,6 @@ module Up
27
27
  @default_input = StringIO.new('', 'r')
28
28
  @server = nil
29
29
  @logger = logger
30
- @t_factory = proc { |filename, _content_type| File.new(filename, 'a+') }
31
30
  end
32
31
 
33
32
  %x{
@@ -78,8 +77,6 @@ module Up
78
77
  env.set('rack.input', #@default_input);
79
78
  }
80
79
  env.set('rack.logger', #@logger);
81
- env.set('rack.multipart.buffer_size', 4096);
82
- env.set('rack.multipart.tempfile_factory', #@t_factory);
83
80
  if (upgrade) {
84
81
  env.set('rack.upgrade?', #{:websocket});
85
82
  }
@@ -92,7 +89,14 @@ module Up
92
89
  env.set('QUERY_STRING', "");
93
90
  env.set('REQUEST_METHOD', req.method);
94
91
  env.set('PATH_INFO', req.url);
95
- req.headers.forEach((k, v) => { env.set('HTTP_' + k.toUpperCase().replaceAll('-', '_'), v) });
92
+ req.headers.forEach((k, v) => {
93
+ let h = k.toUpperCase().replaceAll('-', '_');
94
+ if (h[0] === 'C' && (h === 'CONTENT_TYPE || h === 'CONTENT_LENGTH')) {
95
+ env.set(h, v) ;
96
+ } else {
97
+ env.set('HTTP_' + h, v) ;
98
+ }
99
+ });
96
100
  const rack_res = #@app.$call(env);
97
101
  if (upgrade) {
98
102
  const handler = env.get('rack.upgrade');
@@ -33,7 +33,6 @@ module Up
33
33
  @default_input = StringIO.new('', 'r')
34
34
  @server = nil
35
35
  @logger = logger
36
- @t_factory = proc { |filename, _content_type| File.new(filename, 'a+') }
37
36
  end
38
37
 
39
38
  %x{
@@ -64,8 +63,6 @@ module Up
64
63
  env.set('rack.errors',#{STDERR});
65
64
  env.set('rack.input', ins.default_input);
66
65
  env.set('rack.logger', ins.logger);
67
- env.set('rack.multipart.buffer_size', 4096);
68
- env.set('rack.multipart.tempfile_factory', ins.t_factory);
69
66
  env.set('rack.url_scheme', ins.scheme);
70
67
  env.set('SCRIPT_NAME', "");
71
68
  env.set('SERVER_PROTOCOL', 'HTTP/1.1');
@@ -75,7 +72,14 @@ module Up
75
72
  env.set('QUERY_STRING', req.getQuery() || '');
76
73
  env.set('REQUEST_METHOD', req.getMethod().toUpperCase());
77
74
  env.set('PATH_INFO', req.getUrl());
78
- req.forEach((k, v) => { env.set('HTTP_' + k.toUpperCase().replaceAll('-', '_'), v) });
75
+ req.forEach((k, v) => {
76
+ let h = k.toUpperCase().replaceAll('-', '_');
77
+ if (h[0] === 'C' && (h === 'CONTENT_TYPE || h === 'CONTENT_LENGTH')) {
78
+ env.set(h, v) ;
79
+ } else {
80
+ env.set('HTTP_' + h, v) ;
81
+ }
82
+ });
79
83
  return env;
80
84
  }
81
85
  }
data/lib/up/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Up
2
- VERSION = '0.0.8'.freeze
2
+ VERSION = '0.0.9'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
@@ -162,7 +162,6 @@ files:
162
162
  - ext/up_ext/loop_data.h
163
163
  - ext/up_ext/socket.c
164
164
  - ext/up_ext/up_ext.c
165
- - lib/up/bun/rack_env.rb
166
165
  - lib/up/bun/rack_server.rb
167
166
  - lib/up/bun/server.rb
168
167
  - lib/up/bun/server_cli.rb
@@ -1,92 +0,0 @@
1
- # backtick_javascript: true
2
-
3
- require 'logger'
4
- require 'up/version'
5
-
6
- module Up
7
- module Bun
8
- class RackEnv < ::Hash
9
- RACK_VARS = %w[rack.errors rack.hijack rack.hijack? rack.input rack.logger
10
- rack.multipart.buffer_size rack.multipart.tempfile_factory
11
- rack.response_finished
12
- rack.session rack.upgrade rack.upgrade? rack.url_scheme
13
- HTTP_ACCEPT HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE
14
- HTTP_CONNECTION HTTP_HOST HTTP_USER_AGENT PATH_INFO QUERY_STRING REQUEST_METHOD
15
- SCRIPT_NAME SERVER_NAME SERVER_PROTOCOL SERVER_SOFTWARE]
16
- def initialize(req, config)
17
- @req = req
18
- @config = config
19
- end
20
-
21
- def [](key)
22
- return super(key) if key?(key)
23
- self[key] = case key
24
- when 'rack.errors'
25
- STDERR
26
- when 'rack.logger'
27
- @config[:logger]
28
- when 'rack.multipart.buffer_size'
29
- 4096
30
- when 'rack.multipart.tempfile_factory'
31
- proc { |_filename, _content_type| File.new }
32
- when 'rack.session'
33
- {}
34
- when 'rack.url_scheme'
35
- @config[:scheme]
36
- when 'PATH_INFO'
37
- `#@req.url`
38
- when 'QUERY_STRING'
39
- ""
40
- when 'RACK_ERRORS'
41
- self['rack.errors']
42
- when 'RACK_LOGGER'
43
- self['rack.logger']
44
- when 'REQUEST_METHOD'
45
- `#@req.method`
46
- when 'SCRIPT_NAME'
47
- ""
48
- when 'SERVER_NAME'
49
- @config[:host]
50
- when 'SERVER_PORT'
51
- @config[:port].to_s
52
- when 'SERVER_PROTOCOL'
53
- ""
54
- when 'SERVER_SOFTWARE'
55
- "#{@config[:handler]}/#{Up::VERSION} #{@config[:engine]}"
56
- else
57
- if key.start_with?('HTTP_')
58
- key = key[5..].gsub(/_/, '-')
59
- `#@req.headers.get(key.toLowerCase())`
60
- else
61
- nil
62
- end
63
- end
64
- end
65
-
66
- def req_headers
67
- h = {}
68
- %x{
69
- var hdr, hds = #@req.headers;
70
- for (hdr of hds) { h.set(hdr[0], hdr[1]); }
71
- }
72
- h
73
- end
74
-
75
- def each
76
- unless @got_them_all
77
- RACK_VARS.each { |k| self[k] unless self.key?(k) }
78
- @got_them_all = true
79
- end
80
- super
81
- end
82
-
83
- def to_s
84
- unless @got_them_all
85
- RACK_VARS.each { |k| self[k] unless self.key?(k) }
86
- @got_them_all = true
87
- end
88
- super
89
- end
90
- end
91
- end
92
- end