llhttp 0.0.2 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -3
- data/LICENSE +1 -1
- data/ext/llhttp/api.c +238 -0
- data/ext/llhttp/extconf.rb +2 -3
- data/ext/llhttp/http.c +143 -0
- data/ext/llhttp/llhttp.c +6068 -0
- data/ext/llhttp/llhttp.h +384 -0
- data/ext/llhttp/llhttp_ext.c +243 -0
- data/lib/llhttp/delegate.rb +29 -1
- data/lib/llhttp/error.rb +2 -0
- data/lib/llhttp/parser.rb +25 -8
- data/lib/llhttp/version.rb +3 -1
- metadata +9 -5
- data/lib/llhttp/llhttp_ext.bundle +0 -0
data/lib/llhttp/delegate.rb
CHANGED
@@ -1,36 +1,64 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module LLHttp
|
4
|
-
# Delegate for handling callbacks. Subclass this
|
4
|
+
# [public] Delegate for handling callbacks. Subclass this object and implement necessary methods.
|
5
|
+
#
|
6
|
+
# class Delegate < LLHttp::Delegate
|
7
|
+
# def on_message_begin
|
8
|
+
# ...
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# ...
|
12
|
+
# end
|
5
13
|
#
|
6
14
|
class Delegate
|
15
|
+
# [public]
|
16
|
+
#
|
7
17
|
def on_message_begin
|
8
18
|
end
|
9
19
|
|
20
|
+
# [public]
|
21
|
+
#
|
10
22
|
def on_url(url)
|
11
23
|
end
|
12
24
|
|
25
|
+
# [public]
|
26
|
+
#
|
13
27
|
def on_status(status)
|
14
28
|
end
|
15
29
|
|
30
|
+
# [public]
|
31
|
+
#
|
16
32
|
def on_header_field(field)
|
17
33
|
end
|
18
34
|
|
35
|
+
# [public]
|
36
|
+
#
|
19
37
|
def on_header_value(value)
|
20
38
|
end
|
21
39
|
|
40
|
+
# [public]
|
41
|
+
#
|
22
42
|
def on_headers_complete
|
23
43
|
end
|
24
44
|
|
45
|
+
# [public]
|
46
|
+
#
|
25
47
|
def on_body(body)
|
26
48
|
end
|
27
49
|
|
50
|
+
# [public]
|
51
|
+
#
|
28
52
|
def on_message_complete
|
29
53
|
end
|
30
54
|
|
55
|
+
# [public]
|
56
|
+
#
|
31
57
|
def on_chunk_header
|
32
58
|
end
|
33
59
|
|
60
|
+
# [public]
|
61
|
+
#
|
34
62
|
def on_chunk_complete
|
35
63
|
end
|
36
64
|
end
|
data/lib/llhttp/error.rb
CHANGED
data/lib/llhttp/parser.rb
CHANGED
@@ -1,21 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module LLHttp
|
4
|
-
# Wraps an llhttp context for parsing http requests and responses.
|
4
|
+
# [public] Wraps an llhttp context for parsing http requests and responses.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# class Delegate < LLHttp::Delegate
|
7
|
+
# def on_message_begin
|
8
|
+
# ...
|
9
|
+
# end
|
7
10
|
#
|
8
|
-
#
|
11
|
+
# ...
|
12
|
+
# end
|
9
13
|
#
|
10
|
-
# =
|
14
|
+
# parser = LLHttp::Parser.new(Delegate.new, type: :request)
|
15
|
+
# parser << "GET / HTTP/1.1\r\n\r\n"
|
16
|
+
# parser.finish
|
11
17
|
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
18
|
+
# ...
|
19
|
+
#
|
20
|
+
# Introspection
|
21
|
+
#
|
22
|
+
# * `LLHttp::Parser#content_length` returns the content length of the current request.
|
23
|
+
# * `LLHttp::Parser#method` returns the method of the current response.
|
24
|
+
# * `LLHttp::Parser#status_code` returns the status code of the current response.
|
25
|
+
# * `LLHttp::Parser#keep_alive?` returns `true` if there might be more messages.
|
26
|
+
#
|
27
|
+
# Finishing
|
28
|
+
#
|
29
|
+
# Call `LLHttp::Parser#finish` when processing is complete for the current request or response.
|
15
30
|
#
|
16
31
|
class Parser
|
17
32
|
LLHTTP_TYPES = {both: 0, request: 1, response: 2}.freeze
|
18
33
|
|
34
|
+
# [public] The parser type; one of: `both`, `request`, or `response`.
|
35
|
+
#
|
19
36
|
attr_reader :type
|
20
37
|
|
21
38
|
def initialize(delegate, type: :both)
|
@@ -26,4 +43,4 @@ module LLHttp
|
|
26
43
|
end
|
27
44
|
end
|
28
45
|
|
29
|
-
require_relative "llhttp_ext"
|
46
|
+
require_relative "../llhttp_ext"
|
data/lib/llhttp/version.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: llhttp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Powell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby bindings for llhttp.
|
14
|
-
email: bryan@
|
14
|
+
email: bryan@metabahn.com
|
15
15
|
executables: []
|
16
16
|
extensions:
|
17
17
|
- ext/llhttp/extconf.rb
|
@@ -20,11 +20,15 @@ files:
|
|
20
20
|
- CHANGELOG.md
|
21
21
|
- LICENSE
|
22
22
|
- README.md
|
23
|
+
- ext/llhttp/api.c
|
23
24
|
- ext/llhttp/extconf.rb
|
25
|
+
- ext/llhttp/http.c
|
26
|
+
- ext/llhttp/llhttp.c
|
27
|
+
- ext/llhttp/llhttp.h
|
28
|
+
- ext/llhttp/llhttp_ext.c
|
24
29
|
- lib/llhttp.rb
|
25
30
|
- lib/llhttp/delegate.rb
|
26
31
|
- lib/llhttp/error.rb
|
27
|
-
- lib/llhttp/llhttp_ext.bundle
|
28
32
|
- lib/llhttp/parser.rb
|
29
33
|
- lib/llhttp/version.rb
|
30
34
|
homepage: https://github.com/metabahn/llhttp/
|
@@ -46,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
46
50
|
- !ruby/object:Gem::Version
|
47
51
|
version: '0'
|
48
52
|
requirements: []
|
49
|
-
rubygems_version: 3.
|
53
|
+
rubygems_version: 3.2.3
|
50
54
|
signing_key:
|
51
55
|
specification_version: 4
|
52
56
|
summary: Ruby bindings for llhttp.
|
Binary file
|