noderb-http 0.0.1 → 0.0.3
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.
- data/ext/noderb_http_extension/Makefile +187 -0
- data/ext/noderb_http_extension/extconf.rb +1 -1
- data/ext/noderb_http_extension/http_parser.c +239 -95
- data/ext/noderb_http_extension/http_parser.h +88 -6
- data/ext/noderb_http_extension/http_parser.o +0 -0
- data/ext/noderb_http_extension/noderb_http.c +41 -50
- data/ext/noderb_http_extension/noderb_http.o +0 -0
- data/ext/noderb_http_extension/noderb_http_extension.bundle +0 -0
- data/lib/noderb/modules/http/parser.rb +112 -0
- data/lib/noderb/modules/http/version.rb +9 -0
- data/lib/noderb/modules/http.rb +2 -99
- data/lib/noderb-http.rb +2 -2
- data/test/cases/curl_get.rb +25 -0
- data/test/cases/patch_request.rb +29 -0
- data/test/cases/response.rb +38 -0
- data/test/cases/upgrade_request.rb +34 -0
- data/test/init.rb +62 -0
- metadata +13 -5
- data/ext/http_parser.o +0 -0
- data/ext/noderb_http.o +0 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
CASES << {
|
2
|
+
:name => "upgrade request",
|
3
|
+
:type => :request,
|
4
|
+
:message_complete_on_eof => false,
|
5
|
+
:data => [
|
6
|
+
"GET /demo HTTP/1.1\n",
|
7
|
+
"Host: example.com\n",
|
8
|
+
"Connection: Upgrade\n",
|
9
|
+
"Sec-WebSocket-Key2: 12998 5 Y3 1 .P00\n",
|
10
|
+
"Sec-WebSocket-Protocol: sample\n",
|
11
|
+
"Upgrade: WebSocket\n",
|
12
|
+
"Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\n",
|
13
|
+
"Origin: http://example.com\n",
|
14
|
+
"\n",
|
15
|
+
"Hot diggity dogg"
|
16
|
+
],
|
17
|
+
:should_keep_alive => true,
|
18
|
+
:http_major => 1,
|
19
|
+
:http_minor => 1,
|
20
|
+
:method => "GET",
|
21
|
+
:request_url => "/demo",
|
22
|
+
:num_headers => 7,
|
23
|
+
:headers => {
|
24
|
+
"Host" => "example.com",
|
25
|
+
"Connection" => "Upgrade",
|
26
|
+
"Sec-WebSocket-Key2" => "12998 5 Y3 1 .P00",
|
27
|
+
"Sec-WebSocket-Protocol" => "sample",
|
28
|
+
"Upgrade" => "WebSocket",
|
29
|
+
"Sec-WebSocket-Key1" => "4 @1 46546xW%0l 1 5",
|
30
|
+
"Origin" => "http://example.com"
|
31
|
+
},
|
32
|
+
:upgrade => true,
|
33
|
+
:body => ""
|
34
|
+
}
|
data/test/init.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
$: << File.expand_path("../../ext/noderb_http_extension", __FILE__)
|
2
|
+
$: << File.expand_path("../../lib", __FILE__)
|
3
|
+
|
4
|
+
require "noderb-http"
|
5
|
+
|
6
|
+
class TestParser
|
7
|
+
|
8
|
+
include NodeRb::Modules::Http::Parser
|
9
|
+
|
10
|
+
attr_accessor :headers, :version_major, :version_minor, :method, :url, :body, :keep_alive, :upgrade
|
11
|
+
|
12
|
+
def on_message_header
|
13
|
+
end
|
14
|
+
|
15
|
+
def on_message_body
|
16
|
+
end
|
17
|
+
|
18
|
+
def on_message_error name, desc
|
19
|
+
puts name
|
20
|
+
puts desc
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def check_result parser, test
|
26
|
+
errors = []
|
27
|
+
errors << :http_major unless test[:http_major] == parser.version_major
|
28
|
+
errors << :http_minor unless test[:http_minor] == parser.version_minor
|
29
|
+
errors << :method unless test[:method] == parser.method
|
30
|
+
errors << :request_url unless test[:request_url] == parser.url
|
31
|
+
errors << :headers unless test[:headers] == parser.headers
|
32
|
+
errors << :should_keep_alive unless test[:should_keep_alive] == parser.keep_alive
|
33
|
+
errors << :body unless test[:body] == parser.body
|
34
|
+
errors << :upgrade unless test[:upgrade] == parser.upgrade
|
35
|
+
errors
|
36
|
+
end
|
37
|
+
|
38
|
+
CASES = []
|
39
|
+
|
40
|
+
Dir.glob(File.expand_path("../cases/*.rb", __FILE__)) do |file|
|
41
|
+
require file
|
42
|
+
end
|
43
|
+
|
44
|
+
failed = false
|
45
|
+
CASES.each do |test|
|
46
|
+
parser = TestParser.new
|
47
|
+
parser.setup(test[:type])
|
48
|
+
if test[:data].kind_of?(String)
|
49
|
+
parser.parse(test[:data])
|
50
|
+
else
|
51
|
+
test[:data].each do |data|
|
52
|
+
parser.parse(data)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
result = check_result(parser, test)
|
56
|
+
if result.length > 0
|
57
|
+
puts "** Test <#{test[:name]}> failed on #{result}" if result != "OK"
|
58
|
+
failed = true
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
puts "** All test passed OK" unless failed
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: noderb-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-08-10 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Fast and full-featured HTTP parser.
|
15
15
|
email:
|
@@ -19,15 +19,24 @@ extensions:
|
|
19
19
|
- ext/noderb_http_extension/extconf.rb
|
20
20
|
extra_rdoc_files: []
|
21
21
|
files:
|
22
|
+
- lib/noderb/modules/http/parser.rb
|
23
|
+
- lib/noderb/modules/http/version.rb
|
22
24
|
- lib/noderb/modules/http.rb
|
23
25
|
- lib/noderb-http.rb
|
24
|
-
- ext/http_parser.o
|
25
|
-
- ext/noderb_http.o
|
26
26
|
- ext/noderb_http_extension/extconf.rb
|
27
27
|
- ext/noderb_http_extension/http_parser.c
|
28
28
|
- ext/noderb_http_extension/http_parser.h
|
29
|
+
- ext/noderb_http_extension/http_parser.o
|
30
|
+
- ext/noderb_http_extension/Makefile
|
29
31
|
- ext/noderb_http_extension/noderb_http.c
|
30
32
|
- ext/noderb_http_extension/noderb_http.h
|
33
|
+
- ext/noderb_http_extension/noderb_http.o
|
34
|
+
- ext/noderb_http_extension/noderb_http_extension.bundle
|
35
|
+
- test/cases/curl_get.rb
|
36
|
+
- test/cases/patch_request.rb
|
37
|
+
- test/cases/response.rb
|
38
|
+
- test/cases/upgrade_request.rb
|
39
|
+
- test/init.rb
|
31
40
|
- LICENSE
|
32
41
|
- README.md
|
33
42
|
homepage: http://github.com/noderb/noderb-http
|
@@ -36,7 +45,6 @@ post_install_message:
|
|
36
45
|
rdoc_options: []
|
37
46
|
require_paths:
|
38
47
|
- lib
|
39
|
-
- ext
|
40
48
|
required_ruby_version: !ruby/object:Gem::Requirement
|
41
49
|
none: false
|
42
50
|
requirements:
|
data/ext/http_parser.o
DELETED
Binary file
|
data/ext/noderb_http.o
DELETED
Binary file
|