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