class Aws::Binary::DecodeHandler
@api private
def attach_eventstream_listeners(context, rules)
def attach_eventstream_listeners(context, rules) context.http_response.on_headers(200) do protocol = context.config.api.metadata['protocol'] output_handler = context[:output_event_stream_handler] || context[:event_stream_handler] context.http_response.body = EventStreamDecoder.new( protocol, rules, context.operation.output, context.operation.errors, context.http_response.body, output_handler) if input_emitter = context[:input_event_emitter] # #emit will be blocked until 200 success # see Aws::EventEmitter#emit input_emitter.signal_queue << "ready" end end context.http_response.on_success(200) do context.http_response.body = context.http_response.body.events end context.http_response.on_error do # Potential enhancement to made # since we don't want to track raw bytes in memory context.http_response.body = StringIO.new end end
def call(context)
def call(context) if eventstream_member = eventstream?(context) attach_eventstream_listeners(context, eventstream_member) end @handler.call(context) end
def eventstream?(ctx)
def eventstream?(ctx) ctx.operation.output.shape.members.each do |_, ref| return ref if ref.eventstream end end