class Aws::Rest::Response::Body

Public Class Methods

new(parser_class, rules) click to toggle source

@param [Class] parser_class @param [Seahorse::Model::ShapeRef] rules

# File lib/aws-sdk-core/rest/response/body.rb, line 10
def initialize(parser_class, rules)
  @parser_class = parser_class
  @rules = rules
end

Public Instance Methods

apply(body, data) click to toggle source

@param [IO] body @param [Hash, Struct] data

# File lib/aws-sdk-core/rest/response/body.rb, line 17
def apply(body, data)
  if streaming?
    data[@rules[:payload]] = body
  elsif @rules[:payload]
    data[@rules[:payload]] = parse(body.read, @rules[:payload_member])
  else
    parse(body.read, @rules, data)
  end
end

Private Instance Methods

parse(body, rules, target = nil) click to toggle source
# File lib/aws-sdk-core/rest/response/body.rb, line 36
def parse(body, rules, target = nil)
  @parser_class.new(rules).parse(body, target) if body.size > 0
end
streaming?() click to toggle source
# File lib/aws-sdk-core/rest/response/body.rb, line 29
def streaming?
  @rules[:payload] && (
    BlobShape === @rules[:payload_member].shape ||
    StringShape === @rules[:payload_member].shape
  )
end