http-parser 1.0.1 → 1.0.2
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 +14 -6
- data/lib/http-parser/parser.rb +29 -12
- data/lib/http-parser/types.rb +0 -1
- data/lib/http-parser/version.rb +1 -1
- metadata +39 -32
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjlmZDQwNmJmYjJlNWMzY2NmZmFlZDcwNWQ2NDUwZjQ0OWIzNzljNw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjhiMTgxOTMxNGViODRmYjM0YTE5MmU1YTNmMmViZGM4ZjM1ZDhkMQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ODNiNzNmM2Q3ZjE4Mjk1NzFiMDQ5ZDM3YTUxNGM5OGVlNWI3MWMzMzQ5NjIx
|
10
|
+
NGQ0YTYyYzYyNDZhOTE4NTZkMGYxZjY3ZjllMzViZGY0Nzk3NDM0NmFjYTll
|
11
|
+
YzI3NjFiOGJiNjI0MmFmZDc4NjJkOTI0YmFlNjkwMmM5NDVmYmU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
Nzc3MTM3ZTc2ZTJjMzYxZThmY2IzMTJlMWQzZGU4MjIyZDNkODMyN2RmNWE2
|
14
|
+
OTNkYzYzMTM1MjM1MjMyOTUxZDkzY2VjMzk4YzU4NTZmMTQ2ODQwOWZkMWVj
|
15
|
+
ZmIyM2Q4MzkwN2Y4NmY5OTJkZGIyNTI0MTUyZWZkYzQ5ZDQxMWQ=
|
data/lib/http-parser/parser.rb
CHANGED
@@ -14,6 +14,7 @@ module HttpParser
|
|
14
14
|
#
|
15
15
|
def initialize
|
16
16
|
@settings = ::HttpParser::Settings.new
|
17
|
+
@callbacks = {} # so GC doesn't clean them up on java
|
17
18
|
yield self if block_given?
|
18
19
|
end
|
19
20
|
|
@@ -27,7 +28,9 @@ module HttpParser
|
|
27
28
|
# The state so far of the request / response being processed.
|
28
29
|
#
|
29
30
|
def on_message_begin(&block)
|
30
|
-
|
31
|
+
cb = Callback.new(&block)
|
32
|
+
@callbacks[:on_message_begin] = cb
|
33
|
+
@settings[:on_message_begin] = cb
|
31
34
|
end
|
32
35
|
|
33
36
|
#
|
@@ -46,7 +49,9 @@ module HttpParser
|
|
46
49
|
# @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2
|
47
50
|
#
|
48
51
|
def on_url(&block)
|
49
|
-
|
52
|
+
cb = DataCallback.new(&block)
|
53
|
+
@callbacks[:on_url] = cb
|
54
|
+
@settings[:on_url] = cb
|
50
55
|
end
|
51
56
|
|
52
57
|
#
|
@@ -59,7 +64,9 @@ module HttpParser
|
|
59
64
|
# The state so far of the request / response being processed.
|
60
65
|
#
|
61
66
|
def on_status_complete(&block)
|
62
|
-
|
67
|
+
cb = Callback.new(&block)
|
68
|
+
@callbacks[:on_status_complete] = cb
|
69
|
+
@settings[:on_status_complete] = cb
|
63
70
|
end
|
64
71
|
|
65
72
|
#
|
@@ -78,7 +85,9 @@ module HttpParser
|
|
78
85
|
# @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.5
|
79
86
|
#
|
80
87
|
def on_header_field(&block)
|
81
|
-
|
88
|
+
cb = DataCallback.new(&block)
|
89
|
+
@callbacks[:on_header_field] = cb
|
90
|
+
@settings[:on_header_field] = cb
|
82
91
|
end
|
83
92
|
|
84
93
|
#
|
@@ -97,7 +106,9 @@ module HttpParser
|
|
97
106
|
# @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.5
|
98
107
|
#
|
99
108
|
def on_header_value(&block)
|
100
|
-
|
109
|
+
cb = DataCallback.new(&block)
|
110
|
+
@callbacks[:on_header_value] = cb
|
111
|
+
@settings[:on_header_value] = cb
|
101
112
|
end
|
102
113
|
|
103
114
|
#
|
@@ -110,7 +121,9 @@ module HttpParser
|
|
110
121
|
# The state so far of the request / response being processed.
|
111
122
|
#
|
112
123
|
def on_headers_complete(&block)
|
113
|
-
|
124
|
+
cb = Callback.new(&block)
|
125
|
+
@callbacks[:on_headers_complete] = cb
|
126
|
+
@settings[:on_headers_complete] = cb
|
114
127
|
end
|
115
128
|
|
116
129
|
#
|
@@ -130,7 +143,9 @@ module HttpParser
|
|
130
143
|
# @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.5
|
131
144
|
#
|
132
145
|
def on_body(&block)
|
133
|
-
|
146
|
+
cb = DataCallback.new(&block)
|
147
|
+
@callbacks[:on_body] = cb
|
148
|
+
@settings[:on_body] = cb
|
134
149
|
end
|
135
150
|
|
136
151
|
#
|
@@ -143,7 +158,9 @@ module HttpParser
|
|
143
158
|
# The state so far of the request / response being processed.
|
144
159
|
#
|
145
160
|
def on_message_complete(&block)
|
146
|
-
|
161
|
+
cb = Callback.new(&block)
|
162
|
+
@callbacks[:on_message_complete] = cb
|
163
|
+
@settings[:on_message_complete] = cb
|
147
164
|
end
|
148
165
|
|
149
166
|
#
|
@@ -167,12 +184,12 @@ module HttpParser
|
|
167
184
|
protected
|
168
185
|
|
169
186
|
|
170
|
-
class Callback <
|
187
|
+
class Callback < ::FFI::Function
|
171
188
|
#
|
172
189
|
# Creates a new Parser callback.
|
173
190
|
#
|
174
191
|
def self.new(&block)
|
175
|
-
super do |parser|
|
192
|
+
super(:int, [::HttpParser::Instance.ptr]) do |parser|
|
176
193
|
begin
|
177
194
|
catch(:return) { yield(parser); 0 }
|
178
195
|
rescue
|
@@ -182,9 +199,9 @@ module HttpParser
|
|
182
199
|
end
|
183
200
|
end
|
184
201
|
|
185
|
-
class DataCallback <
|
202
|
+
class DataCallback < ::FFI::Function
|
186
203
|
def self.new(&block)
|
187
|
-
super do |parser, buffer, length|
|
204
|
+
super(:int, [::HttpParser::Instance.ptr, :pointer, :size_t]) do |parser, buffer, length|
|
188
205
|
begin
|
189
206
|
data = buffer.get_bytes(0, length)
|
190
207
|
catch(:return) { yield(parser, data); 0 }
|
data/lib/http-parser/types.rb
CHANGED
data/lib/http-parser/version.rb
CHANGED
metadata
CHANGED
@@ -1,74 +1,79 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen von Takach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi-compiler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - '>='
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.0.2
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
20
|
version_requirements: !ruby/object:Gem::Requirement
|
23
21
|
requirements:
|
24
|
-
- - '>='
|
22
|
+
- - ! '>='
|
25
23
|
- !ruby/object:Gem::Version
|
26
24
|
version: 0.0.2
|
25
|
+
type: :runtime
|
26
|
+
prerelease: false
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - '>='
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
|
35
|
-
prerelease: false
|
33
|
+
version: !binary |-
|
34
|
+
MA==
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
37
36
|
requirements:
|
38
|
-
- - '>='
|
37
|
+
- - ! '>='
|
39
38
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
39
|
+
version: !binary |-
|
40
|
+
MA==
|
41
|
+
type: :runtime
|
42
|
+
prerelease: false
|
41
43
|
- !ruby/object:Gem::Dependency
|
42
44
|
name: rspec
|
43
45
|
requirement: !ruby/object:Gem::Requirement
|
44
46
|
requirements:
|
45
|
-
- - '>='
|
47
|
+
- - ! '>='
|
46
48
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
|
49
|
-
prerelease: false
|
49
|
+
version: !binary |-
|
50
|
+
MA==
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
|
-
- - '>='
|
53
|
+
- - ! '>='
|
53
54
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
+
version: !binary |-
|
56
|
+
MA==
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
55
59
|
- !ruby/object:Gem::Dependency
|
56
60
|
name: yard
|
57
61
|
requirement: !ruby/object:Gem::Requirement
|
58
62
|
requirements:
|
59
|
-
- - '>='
|
63
|
+
- - ! '>='
|
60
64
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
|
63
|
-
prerelease: false
|
65
|
+
version: !binary |-
|
66
|
+
MA==
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
66
|
-
- - '>='
|
69
|
+
- - ! '>='
|
67
70
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
|
70
|
-
|
71
|
-
|
71
|
+
version: !binary |-
|
72
|
+
MA==
|
73
|
+
type: :development
|
74
|
+
prerelease: false
|
75
|
+
description: ! " A super fast http parser for ruby.\n Cross platform and multiple
|
76
|
+
ruby implementation support thanks to ffi.\n"
|
72
77
|
email:
|
73
78
|
- steve@cotag.me
|
74
79
|
executables: []
|
@@ -77,12 +82,12 @@ extensions:
|
|
77
82
|
extra_rdoc_files:
|
78
83
|
- README.md
|
79
84
|
files:
|
85
|
+
- lib/http-parser.rb
|
80
86
|
- lib/http-parser/errors.rb
|
81
87
|
- lib/http-parser/ext.rb
|
82
88
|
- lib/http-parser/parser.rb
|
83
89
|
- lib/http-parser/types.rb
|
84
90
|
- lib/http-parser/version.rb
|
85
|
-
- lib/http-parser.rb
|
86
91
|
- Rakefile
|
87
92
|
- http-parser.gemspec
|
88
93
|
- README.md
|
@@ -103,14 +108,16 @@ require_paths:
|
|
103
108
|
- lib
|
104
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
110
|
requirements:
|
106
|
-
- - '>='
|
111
|
+
- - ! '>='
|
107
112
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
113
|
+
version: !binary |-
|
114
|
+
MA==
|
109
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
116
|
requirements:
|
111
|
-
- - '>='
|
117
|
+
- - ! '>='
|
112
118
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
119
|
+
version: !binary |-
|
120
|
+
MA==
|
114
121
|
requirements: []
|
115
122
|
rubyforge_project:
|
116
123
|
rubygems_version: 2.0.6
|