Sha256: 854f89ca337168b69c6f6e2b84d45662ad3532fd1fd6e86e697923d5431acedf
Contents?: true
Size: 890 Bytes
Versions: 17
Compression:
Stored size: 890 Bytes
Contents
module Apnotic class Push attr_reader :http2_request def initialize(http2_request) @http2_request = http2_request @headers = {} @data = '' @events = {} listen_for_http2_events end def on(event, &block) raise ArgumentError, 'on event must provide a block' unless block_given? @events[event] ||= [] @events[event] << block end def emit(event, arg) return unless @events[event] @events[event].each { |b| b.call(arg) } end private def listen_for_http2_events @http2_request.on(:headers) { |headers| @headers.merge!(headers) } @http2_request.on(:body_chunk) { |chunk| @data << chunk } @http2_request.on(:close) do response = Apnotic::Response.new(headers: @headers, body: @data) emit(:response, response) end end end end
Version data entries
17 entries across 17 versions & 1 rubygems