hatetepe 0.0.1 → 0.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.
- data/lib/hatetepe/builder.rb +9 -0
- data/lib/hatetepe/parser.rb +6 -2
- data/lib/hatetepe/version.rb +1 -1
- metadata +4 -4
data/lib/hatetepe/builder.rb
CHANGED
@@ -68,6 +68,14 @@ module Hatetepe
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def response(code, version = "1.1")
|
71
|
+
if Array === code
|
72
|
+
response(code[0])
|
73
|
+
code[1].each_pair {|name, value| header(name, value) }
|
74
|
+
code[2].each {|chunk| body(chunk) }
|
75
|
+
complete
|
76
|
+
return
|
77
|
+
end
|
78
|
+
|
71
79
|
complete unless ready?
|
72
80
|
unless status = STATUS_CODES[code]
|
73
81
|
error "Unknown status code: #{code}"
|
@@ -103,6 +111,7 @@ module Hatetepe
|
|
103
111
|
elsif writing_trailing_headers?
|
104
112
|
error "Cannot write body after trailing headers"
|
105
113
|
elsif writing_headers?
|
114
|
+
header "Transfer-Encoding", "chunked" if chunked?
|
106
115
|
write "\r\n"
|
107
116
|
@state = :writing_body
|
108
117
|
end
|
data/lib/hatetepe/parser.rb
CHANGED
@@ -35,7 +35,8 @@ module Hatetepe
|
|
35
35
|
attr_reader :bytes_read
|
36
36
|
|
37
37
|
def initialize(&block)
|
38
|
-
@on_request, @on_response
|
38
|
+
@on_request, @on_response = [], []
|
39
|
+
@on_header, @on_headers_complete = [], []
|
39
40
|
@on_body_chunk, @on_complete, @on_error = [], [], []
|
40
41
|
@parser = HTTP::Parser.new
|
41
42
|
|
@@ -53,6 +54,8 @@ module Hatetepe
|
|
53
54
|
@parser.headers.each do |header|
|
54
55
|
on_header.each {|h| h.call(*header) }
|
55
56
|
end
|
57
|
+
|
58
|
+
on_headers_complete.each {|hc| hc.call }
|
56
59
|
end
|
57
60
|
|
58
61
|
@parser.on_body = proc do |chunk|
|
@@ -75,7 +78,8 @@ module Hatetepe
|
|
75
78
|
@bytes_read = 0
|
76
79
|
end
|
77
80
|
|
78
|
-
[:request, :response, :header, :
|
81
|
+
[:request, :response, :header, :headers_complete,
|
82
|
+
:body_chunk, :complete, :error].each do |hook|
|
79
83
|
define_method :"on_#{hook}" do |&block|
|
80
84
|
store = instance_variable_get(:"@on_#{hook}")
|
81
85
|
return store unless block
|
data/lib/hatetepe/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: hatetepe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Lars Gierth
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-06 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: http_parser.rb
|
@@ -70,7 +70,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
hash:
|
73
|
+
hash: -899733391
|
74
74
|
segments:
|
75
75
|
- 0
|
76
76
|
version: "0"
|
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
hash:
|
82
|
+
hash: -899733391
|
83
83
|
segments:
|
84
84
|
- 0
|
85
85
|
version: "0"
|