class Aws::Binary::EventBuilder
@api private
def _event_stream_message(event_ref, params)
def _event_stream_message(event_ref, params) es_headers = {} payload = "" es_headers[":message-type"] = Aws::EventStream::HeaderValue.new( type: "string", value: "event") es_headers[":event-type"] = Aws::EventStream::HeaderValue.new( type: "string", value: event_ref.location_name) explicit_payload = false implicit_payload_members = {} event_ref.shape.members.each do |member_name, member_ref| unless member_ref.eventheader if member_ref.eventpayload explicit_payload = true else implicit_payload_members[member_name] = member_ref end end end # handle header members for all cases event_ref.shape.members.each do |member_name, member_ref| if member_ref.eventheader && params[member_name] header_value = params[member_name] es_headers[member_ref.shape.name] = Aws::EventStream::HeaderValue.new( type: header_value_type(member_ref.shape, header_value), value: header_value ) end end # implict payload if !explicit_payload && !implicit_payload_members.empty? payload_shape = StructureShape.new implicit_payload_members.each do |m_name, m_ref| payload_shape.add_member(m_name, m_ref) end payload_ref = ShapeRef.new(shape: payload_shape) payload = build_payload_members(payload_ref, params) .force_encoding(Encoding::BINARY) es_headers[":content-type"] = Aws::EventStream::HeaderValue.new( type: "string", value: content_type(payload_ref.shape)) else # explicit payload, serialize just the payload member event_ref.shape.members.each do |member_name, member_ref| if member_ref.eventpayload && params[member_name] es_headers[":content-type"] = Aws::EventStream::HeaderValue.new( type: "string", value: content_type(member_ref.shape)) payload = params[member_name] end end end Aws::EventStream::Message.new( headers: es_headers, payload: StringIO.new(payload) ) end
def apply(event_type, params)
def apply(event_type, params) event_ref = @rules.shape.member(event_type) _event_stream_message(event_ref, params) end
def build_payload_members(payload_ref, params)
def build_payload_members(payload_ref, params) @serializer_class.new(payload_ref).serialize(params) end
def content_type(shape)
def content_type(shape) case shape when BlobShape then "application/octet-stream" when StringShape then "text/plain" when StructureShape then if @serializer_class.name.include?('Xml') "text/xml" elsif @serializer_class.name.include?('Json') "application/json" end else raise Aws::Errors::EventStreamBuilderError.new( "Unsupport eventpayload shape: #{shape.name}") end end
def header_value_type(shape, value)
def header_value_type(shape, value) case shape when StringShape then "string" when IntegerShape then "integer" when TimestampShape then "timestamp" when BlobShape then "bytes" when BooleanShape then !!value ? "bool_true" : "bool_false" else raise Aws::Errors::EventStreamBuilderError.new( "Unsupported eventheader shape: #{shape.name}") end end
def initialize(serializer_class, rules)
-
rules
(Seahorse::Model::ShapeRef
) -- (of eventstream member) -
serializer_class
(Class
) --
def initialize(serializer_class, rules) @serializer_class = serializer_class @rules = rules end