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.
114 115 116 |
# File 'lib/async/http/protocol/http2/request.rb', line 114 def stream @stream end |
Instance Method Details
#hijack? ⇒ Boolean
120 121 122 |
# File 'lib/async/http/protocol/http2/request.rb', line 120 def hijack? false end |
#push(path, headers = nil, scheme = @scheme, authority = @authority) ⇒ Stream
Returns the promised stream, on which to send data.
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/async/http/protocol/http2/request.rb', line 129 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
124 125 126 |
# File 'lib/async/http/protocol/http2/request.rb', line 124 def push? @stream.connection.enable_push? end |
#send_response(response) ⇒ Object
154 155 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 |
# File 'lib/async/http/protocol/http2/request.rb', line 154 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
116 117 118 |
# File 'lib/async/http/protocol/http2/request.rb', line 116 def valid? @scheme and @method and @path end |