class Apnotic::Push
Attributes
http2_request[R]
Public Class Methods
new(http2_request)
click to toggle source
# File lib/apnotic/push.rb, line 6 def initialize(http2_request) @http2_request = http2_request @headers = {} @data = '' @events = {} listen_for_http2_events end
Public Instance Methods
emit(event, arg)
click to toggle source
# File lib/apnotic/push.rb, line 22 def emit(event, arg) return unless @events[event] @events[event].each { |b| b.call(arg) } end
on(event, &block)
click to toggle source
# File lib/apnotic/push.rb, line 15 def on(event, &block) raise ArgumentError, 'on event must provide a block' unless block_given? @events[event] ||= [] @events[event] << block end
Private Instance Methods
listen_for_http2_events()
click to toggle source
# File lib/apnotic/push.rb, line 29 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