llhttp 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|