class Aws::Rest::Response::Body
Public Class Methods
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 12 def initialize(parser_class, rules) @parser_class = parser_class @rules = rules end
@param [Class] parser_class @param [Seahorse::Model::ShapeRef] rules
Public Instance Methods
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 19 def apply(body, data) if event_stream? data[@rules[:payload]] = parse_eventstream(body) elsif streaming? # empty blob payloads are omitted data[@rules[:payload]] = body unless empty_blob_payload?(body) elsif @rules[:payload] data[@rules[:payload]] = parse(body.read, @rules[:payload_member]) elsif !@rules.shape.member_names.empty? parse(body.read, @rules, data) end end
@param [IO] body @param [Hash, Struct] data
Private Instance Methods
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 34 def empty_blob_payload?(body) true if non_streaming_blob_payload? && empty_body?(body) end
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 43 def empty_body?(body) body.respond_to?(:size) && body.size.zero? end
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 47 def event_stream? @rules[:payload] && @rules[:payload_member].eventstream end
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 38 def non_streaming_blob_payload? @rules[:payload_member].shape.is_a?(BlobShape) && !@rules[:payload_member]['streaming'] end
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 58 def parse(body, rules, target = nil) @parser_class.new(rules).parse(body, target) if body.size > 0 end
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 62 def parse_eventstream(body) # body contains an array of parsed event when they arrive @rules[:payload_member].shape.struct_class.new do |payload| body.each { |event| payload << event } end end
Source
# File lib/aws-sdk-core/rest/response/body.rb, line 51 def streaming? @rules[:payload] && ( BlobShape === @rules[:payload_member].shape || StringShape === @rules[:payload_member].shape ) end