class Aws::Rest::Request::Body

Public Class Methods

new(serializer_class, rules) click to toggle source

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

# File lib/aws-sdk-core/rest/request/body.rb, line 12
def initialize(serializer_class, rules)
  @serializer_class = serializer_class
  @rules = rules
end

Public Instance Methods

apply(http_req, params) click to toggle source

@param [Seahorse::Client::Http::Request] http_req @param [Hash] params

# File lib/aws-sdk-core/rest/request/body.rb, line 19
def apply(http_req, params)
  body = build_body(params)
  # for rest-json, ensure we send at least an empty object
  # don't send an empty object for streaming? case.
  if body.nil? && @serializer_class == Json::Builder &&
     modeled_body? && !streaming?
    body = '{}'
  end
  http_req.body = body
end

Private Instance Methods

body_params(params) click to toggle source
# File lib/aws-sdk-core/rest/request/body.rb, line 66
def body_params(params)
  @rules.shape.members.inject({}) do |hash, (member_name, member_ref)|
    if !member_ref.location && params.key?(member_name)
      hash[member_name] = params[member_name]
    end
    hash
  end
end
build_body(params) click to toggle source
# File lib/aws-sdk-core/rest/request/body.rb, line 43
def build_body(params)
  if streaming?
    params[@rules[:payload]]
  elsif @rules[:payload]
    params = params[@rules[:payload]]
    serialize(@rules[:payload_member], params) if params
  else
    params = body_params(params)
    serialize(@rules, params) unless params.empty?
  end
end
modeled_body?() click to toggle source

operation is modeled for body when it is modeled for a payload either with payload trait or normal members.

# File lib/aws-sdk-core/rest/request/body.rb, line 34
def modeled_body?
  return true if @rules[:payload]
  @rules.shape.members.each do |member|
    _name, shape = member
    return true if shape.location.nil?
  end
  false
end
serialize(rules, params) click to toggle source
# File lib/aws-sdk-core/rest/request/body.rb, line 62
def serialize(rules, params)
  @serializer_class.new(rules).serialize(params)
end
streaming?() click to toggle source
# File lib/aws-sdk-core/rest/request/body.rb, line 55
def streaming?
  @rules[:payload] && (
    BlobShape === @rules[:payload_member].shape ||
    StringShape === @rules[:payload_member].shape
  )
end