net-http-server 0.2.2 → 0.2.4
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 +7 -0
- data/.gitignore +1 -0
- data/ChangeLog.md +17 -0
- data/Gemfile +16 -0
- data/LICENSE.txt +1 -1
- data/README.md +26 -18
- data/Rakefile +11 -28
- data/examples/config.ru +3 -0
- data/examples/test_app.rb +21 -0
- data/gemspec.yml +10 -4
- data/lib/net/http/server/chunked_stream.rb +4 -5
- data/lib/net/http/server/daemon.rb +17 -17
- data/lib/net/http/server/parser.rb +7 -7
- data/lib/net/http/server/requests.rb +1 -1
- data/lib/net/http/server/server.rb +16 -13
- data/lib/net/http/server/stream.rb +1 -1
- data/lib/net/http/server/version.rb +1 -1
- data/lib/rack/handler/http.rb +9 -9
- data/net-http-server.gemspec +40 -109
- data/spec/net/http/server/chunked_stream_spec.rb +11 -11
- data/spec/net/http/server/daemon_spec.rb +4 -4
- data/spec/net/http/server/parser_spec.rb +23 -23
- data/spec/net/http/server/requests_spec.rb +12 -12
- data/spec/net/http/server/responses_spec.rb +17 -17
- data/spec/net/http/server/stream_spec.rb +7 -7
- data/spec/rack/handler/helpers/test_request.rb +12 -3
- data/spec/rack/handler/http_spec.rb +27 -26
- data/spec/spec_helper.rb +0 -1
- metadata +37 -55
- data/.gemtest +0 -0
@@ -6,6 +6,15 @@ class TestRequest
|
|
6
6
|
def call(env)
|
7
7
|
status = env["QUERY_STRING"] =~ /secret/ ? 403 : 200
|
8
8
|
env["test.postdata"] = env["rack.input"].read
|
9
|
+
# clean out complex objects that won't translate over anyways.
|
10
|
+
env.keys.each do |key|
|
11
|
+
case env[key]
|
12
|
+
when String, Fixnum, Bignum
|
13
|
+
# leave it
|
14
|
+
else
|
15
|
+
env[key] = nil
|
16
|
+
end
|
17
|
+
end
|
9
18
|
body = env.to_yaml
|
10
19
|
size = body.respond_to?(:bytesize) ? body.bytesize : body.size
|
11
20
|
[status, {"Content-Type" => "text/yaml", "Content-Length" => size.to_s}, [body]]
|
@@ -31,7 +40,7 @@ class TestRequest
|
|
31
40
|
passwd = header.delete(:passwd)
|
32
41
|
|
33
42
|
get = Net::HTTP::Get.new(path, header)
|
34
|
-
get.basic_auth user, passwd
|
43
|
+
get.basic_auth user, passwd if user && passwd
|
35
44
|
http.request(get) { |response|
|
36
45
|
@status = response.code.to_i
|
37
46
|
if response.content_type == "text/yaml"
|
@@ -50,14 +59,14 @@ class TestRequest
|
|
50
59
|
|
51
60
|
post = Net::HTTP::Post.new(path, header)
|
52
61
|
post.form_data = formdata
|
53
|
-
post.basic_auth user, passwd
|
62
|
+
post.basic_auth user, passwd if user && passwd
|
54
63
|
http.request(post) { |response|
|
55
64
|
@status = response.code.to_i
|
56
65
|
@response = YAML.load(response.body)
|
57
66
|
}
|
58
67
|
}
|
59
68
|
end
|
60
|
-
|
69
|
+
|
61
70
|
def load_yaml(response)
|
62
71
|
begin
|
63
72
|
@response = YAML.load(response.body)
|
@@ -12,7 +12,8 @@ describe Rack::Handler::HTTP do
|
|
12
12
|
before(:all) do
|
13
13
|
app = Rack::Builder.app do
|
14
14
|
use Rack::Lint
|
15
|
-
use Rack::Static, :urls => ["/
|
15
|
+
use Rack::Static, :urls => ["/images"],
|
16
|
+
:root => TestRequest::Helpers::ROOT
|
16
17
|
run TestRequest.new
|
17
18
|
end
|
18
19
|
|
@@ -31,56 +32,56 @@ describe Rack::Handler::HTTP do
|
|
31
32
|
|
32
33
|
it "should respond to a simple get request" do
|
33
34
|
GET "/"
|
34
|
-
status.
|
35
|
+
expect(status).to eq(200)
|
35
36
|
end
|
36
37
|
|
37
38
|
it "should have CGI headers on GET" do
|
38
39
|
GET("/")
|
39
|
-
response["REQUEST_METHOD"].
|
40
|
-
response["SCRIPT_NAME"].
|
41
|
-
response["PATH_INFO"].
|
42
|
-
response["QUERY_STRING"].
|
43
|
-
response["test.postdata"].
|
40
|
+
expect(response["REQUEST_METHOD"]).to eq("GET")
|
41
|
+
expect(response["SCRIPT_NAME"]).to eq('')
|
42
|
+
expect(response["PATH_INFO"]).to eq("/")
|
43
|
+
expect(response["QUERY_STRING"]).to eq("")
|
44
|
+
expect(response["test.postdata"]).to eq("")
|
44
45
|
|
45
46
|
GET("/test/foo?quux=1")
|
46
|
-
response["REQUEST_METHOD"].
|
47
|
-
response["SCRIPT_NAME"].
|
48
|
-
response["REQUEST_URI"].
|
49
|
-
response["PATH_INFO"].
|
50
|
-
response["QUERY_STRING"].
|
47
|
+
expect(response["REQUEST_METHOD"]).to eq("GET")
|
48
|
+
expect(response["SCRIPT_NAME"]).to eq('')
|
49
|
+
expect(response["REQUEST_URI"]).to eq("/test/foo")
|
50
|
+
expect(response["PATH_INFO"]).to eq("/test/foo")
|
51
|
+
expect(response["QUERY_STRING"]).to eq("quux=1")
|
51
52
|
end
|
52
53
|
|
53
54
|
it "should have CGI headers on POST" do
|
54
55
|
POST("/", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
|
55
|
-
status.
|
56
|
-
response["REQUEST_METHOD"].
|
57
|
-
response["REQUEST_URI"].
|
58
|
-
response["QUERY_STRING"].
|
59
|
-
response["HTTP_X_TEST_HEADER"].
|
60
|
-
response["test.postdata"].
|
56
|
+
expect(status).to eq(200)
|
57
|
+
expect(response["REQUEST_METHOD"]).to eq("POST")
|
58
|
+
expect(response["REQUEST_URI"]).to eq("/")
|
59
|
+
expect(response["QUERY_STRING"]).to eq("")
|
60
|
+
expect(response["HTTP_X_TEST_HEADER"]).to eq("42")
|
61
|
+
expect(response["test.postdata"]).to eq("rack-form-data=23")
|
61
62
|
end
|
62
63
|
|
63
64
|
it "should support HTTP auth" do
|
64
65
|
GET("/test", {:user => "ruth", :passwd => "secret"})
|
65
|
-
response["HTTP_AUTHORIZATION"].
|
66
|
+
expect(response["HTTP_AUTHORIZATION"]).to eq("Basic cnV0aDpzZWNyZXQ=")
|
66
67
|
end
|
67
68
|
|
68
69
|
it "should set status" do
|
69
70
|
GET("/test?secret")
|
70
|
-
status.
|
71
|
-
response["rack.url_scheme"].
|
71
|
+
expect(status).to eq(403)
|
72
|
+
expect(response["rack.url_scheme"]).to eq("http")
|
72
73
|
end
|
73
74
|
|
74
75
|
it "should not set content-type to '' in requests" do
|
75
76
|
GET("/test", 'Content-Type' => '')
|
76
|
-
response['Content-Type'].
|
77
|
+
expect(response['Content-Type']).to eq(nil)
|
77
78
|
end
|
78
79
|
|
79
80
|
it "should serve images" do
|
80
81
|
file_size = File.size(File.join(File.dirname(__FILE__), 'images', 'image.jpg'))
|
81
|
-
GET("/
|
82
|
-
status.
|
83
|
-
response.content_length.
|
84
|
-
response.body.size.
|
82
|
+
GET("/images/image.jpg")
|
83
|
+
expect(status).to eq(200)
|
84
|
+
expect(response.content_length).to eq(file_size)
|
85
|
+
expect(response.body.size).to eq(file_size)
|
85
86
|
end
|
86
87
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,97 +1,78 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-http-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Postmodern
|
9
|
-
autorequire:
|
10
8
|
bindir: bin
|
11
9
|
cert_chain: []
|
12
|
-
date:
|
10
|
+
date: 2025-03-05 00:00:00.000000000 Z
|
13
11
|
dependencies:
|
14
12
|
- !ruby/object:Gem::Dependency
|
15
13
|
name: parslet
|
16
14
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
15
|
requirements:
|
19
|
-
- - ~>
|
16
|
+
- - "~>"
|
20
17
|
- !ruby/object:Gem::Version
|
21
18
|
version: '1.0'
|
22
19
|
type: :runtime
|
23
20
|
prerelease: false
|
24
21
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
22
|
requirements:
|
27
|
-
- - ~>
|
23
|
+
- - "~>"
|
28
24
|
- !ruby/object:Gem::Version
|
29
25
|
version: '1.0'
|
30
26
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
27
|
+
name: gserver
|
32
28
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
29
|
requirements:
|
35
|
-
- - ~>
|
30
|
+
- - "~>"
|
36
31
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0.
|
38
|
-
type: :
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0.1'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rspec
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '2.4'
|
54
|
-
type: :development
|
32
|
+
version: '0.0'
|
33
|
+
type: :runtime
|
55
34
|
prerelease: false
|
56
35
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
36
|
requirements:
|
59
|
-
- - ~>
|
37
|
+
- - "~>"
|
60
38
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
39
|
+
version: '0.0'
|
62
40
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
41
|
+
name: bundler
|
64
42
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
43
|
requirements:
|
67
|
-
- - ~>
|
44
|
+
- - "~>"
|
68
45
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0
|
46
|
+
version: '2.0'
|
70
47
|
type: :development
|
71
48
|
prerelease: false
|
72
49
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
50
|
requirements:
|
75
|
-
- - ~>
|
51
|
+
- - "~>"
|
76
52
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0
|
53
|
+
version: '2.0'
|
78
54
|
description: A Rack compatible pure Ruby HTTP Server.
|
79
55
|
email: postmodern.mod3@gmail.com
|
80
56
|
executables: []
|
81
57
|
extensions: []
|
82
|
-
extra_rdoc_files:
|
58
|
+
extra_rdoc_files:
|
59
|
+
- ChangeLog.md
|
60
|
+
- LICENSE.txt
|
61
|
+
- README.md
|
83
62
|
files:
|
84
|
-
- .document
|
85
|
-
- .
|
86
|
-
- .
|
87
|
-
- .
|
88
|
-
- .yardopts
|
63
|
+
- ".document"
|
64
|
+
- ".gitignore"
|
65
|
+
- ".rspec"
|
66
|
+
- ".yardopts"
|
89
67
|
- ChangeLog.md
|
68
|
+
- Gemfile
|
90
69
|
- LICENSE.txt
|
91
70
|
- README.md
|
92
71
|
- Rakefile
|
93
72
|
- benchmarks/parser.rb
|
94
73
|
- benchmarks/server.rb
|
74
|
+
- examples/config.ru
|
75
|
+
- examples/test_app.rb
|
95
76
|
- gemspec.yml
|
96
77
|
- lib/net/http/server.rb
|
97
78
|
- lib/net/http/server/chunked_stream.rb
|
@@ -115,30 +96,31 @@ files:
|
|
115
96
|
- spec/rack/handler/http_spec.rb
|
116
97
|
- spec/rack/handler/images/image.jpg
|
117
98
|
- spec/spec_helper.rb
|
118
|
-
homepage:
|
99
|
+
homepage: https://github.com/postmodern/net-http-server#readme
|
119
100
|
licenses:
|
120
101
|
- MIT
|
121
|
-
|
102
|
+
metadata:
|
103
|
+
documentation_uri: https://rubydoc.info/gems/net-http-server
|
104
|
+
source_code_uri: https://github.com/postmodern/net-http-server
|
105
|
+
bug_tracker_uri: https://github.com/postmodern/net-http-server/issues
|
106
|
+
changelog_uri: https://github.com/postmodern/net-http-server/blob/master/ChangeLog.md
|
107
|
+
rubygems_mfa_required: 'true'
|
122
108
|
rdoc_options: []
|
123
109
|
require_paths:
|
124
110
|
- lib
|
125
111
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
112
|
requirements:
|
128
|
-
- -
|
113
|
+
- - ">="
|
129
114
|
- !ruby/object:Gem::Version
|
130
115
|
version: '0'
|
131
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
117
|
requirements:
|
134
|
-
- -
|
118
|
+
- - ">="
|
135
119
|
- !ruby/object:Gem::Version
|
136
120
|
version: '0'
|
137
121
|
requirements: []
|
138
|
-
|
139
|
-
|
140
|
-
signing_key:
|
141
|
-
specification_version: 3
|
122
|
+
rubygems_version: 3.6.2
|
123
|
+
specification_version: 4
|
142
124
|
summary: A pure Ruby HTTP Server
|
143
125
|
test_files:
|
144
126
|
- spec/net/http/server/chunked_stream_spec.rb
|
data/.gemtest
DELETED
File without changes
|