Class: Async::HTTP::Protocol::HTTP2::Request
- Inherits:
-
Request
- Object
- Protocol::HTTP::Request
- Request
- Async::HTTP::Protocol::HTTP2::Request
- Defined in:
- lib/async/http/protocol/http2/request.rb
Overview
Typically used on the server side to represent an incoming request, and write the response.
Defined Under Namespace
Classes: Stream
Constant Summary collapse
- NO_RESPONSE =
[ [STATUS, '500'], ]
Instance Attribute Summary collapse
-
#stream ⇒ Object
readonly
Returns the value of attribute stream.
Attributes inherited from Request
Instance Method Summary collapse
- #hijack? ⇒ Boolean
-
#initialize(stream) ⇒ Request
constructor
A new instance of Request.
-
#push(path, headers = nil, scheme = @scheme, authority = @authority) ⇒ Stream
The promised stream, on which to send data.
- #push? ⇒ Boolean
- #send_response(response) ⇒ Object
- #valid? ⇒ Boolean
Methods inherited from Request
#peer, #remote_address, #remote_address=
Constructor Details
Instance Attribute Details
#stream ⇒ Object (readonly)
Returns the value of attribute stream.
116 117 118 |
# File 'lib/async/http/protocol/http2/request.rb', line 116 def stream @stream end |
Instance Method Details
#hijack? ⇒ Boolean
122 123 124 |
# File 'lib/async/http/protocol/http2/request.rb', line 122 def hijack? false end |
#push(path, headers = nil, scheme = @scheme, authority = @authority) ⇒ Stream
Returns the promised stream, on which to send data.
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/async/http/protocol/http2/request.rb', line 131 def push(path, headers = nil, scheme = @scheme, = @authority) raise ArgumentError, "Missing scheme!" unless scheme raise ArgumentError, "Missing authority!" unless push_headers = [ [SCHEME, scheme], [METHOD, ::Protocol::HTTP::Methods::GET], [PATH, path], [AUTHORITY, ] ] if headers push_headers = Headers::Merged.new( push_headers, headers ) end @stream.send_push_promise(push_headers) end |
#push? ⇒ Boolean
126 127 128 |
# File 'lib/async/http/protocol/http2/request.rb', line 126 def push? @stream.connection.enable_push? end |
#send_response(response) ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/async/http/protocol/http2/request.rb', line 156 def send_response(response) if response.nil? @stream.send_headers(nil, NO_RESPONSE, ::Protocol::HTTP2::END_STREAM) elsif response.body? pseudo_headers = [ [STATUS, response.status], ] if protocol = response.protocol pseudo_headers << [PROTOCOL, protocol] end if length = response.body.length pseudo_headers << [CONTENT_LENGTH, length] end headers = ::Protocol::HTTP::Headers::Merged.new( pseudo_headers, response.headers ) @stream.send_headers(nil, headers) @stream.send_body(response.body) else headers = ::Protocol::HTTP::Headers::Merged.new([ [STATUS, response.status], ], response.headers) @stream.send_headers(nil, headers, ::Protocol::HTTP2::END_STREAM) end end |
#valid? ⇒ Boolean
118 119 120 |
# File 'lib/async/http/protocol/http2/request.rb', line 118 def valid? @scheme and @method and @path end |