Module: HTTPX::Plugins::PushPromise::InstanceMethods
- Defined in:
- lib/httpx/plugins/push_promise.rb,
sig/plugins/push_promise.rbs
Instance Method Summary collapse
- #__on_promise_request(parser, stream, h) ⇒ void
- #__on_promise_response(parser, stream, h) ⇒ void
- #promise_headers ⇒ Hash[::HTTP2::Stream, Request]
Instance Method Details
#__on_promise_request(parser, stream, h) ⇒ void
This method returns an undefined value.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/httpx/plugins/push_promise.rb', line 45 def __on_promise_request(parser, stream, h) log(level: 1, color: :yellow) do # simplecov:disable h.map { |k, v| "#{stream.id}: -> PROMISE HEADER: #{k}: #{v}" }.join("\n") # simplecov:enable end headers = @options.headers_class.new(h) path = headers[":path"] = headers[":authority"] request = parser.pending.find { |r| r. == && r.path == path } if request request.merge_headers(headers) promise_headers[stream] = request parser.pending.delete(request) parser.streams[request] = stream request.transition(:done) else stream.refuse end end |
#__on_promise_response(parser, stream, h) ⇒ void
This method returns an undefined value.
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/httpx/plugins/push_promise.rb', line 67 def __on_promise_response(parser, stream, h) request = promise_headers.delete(stream) return unless request parser.__send__(:on_stream_headers, stream, request, h) response = request.response response.mark_as_pushed! stream.on(:data, &parser.method(:on_stream_data).curry(3)[stream, request]) stream.on(:close, &parser.method(:on_stream_close).curry(3)[stream, request]) end |
#promise_headers ⇒ Hash[::HTTP2::Stream, Request]
32 33 34 |
# File 'lib/httpx/plugins/push_promise.rb', line 32 def promise_headers @promise_headers ||= {} end |