class Aws::Query::ParamBuilder

Attributes

params[R]

Public Class Methods

new(param_list) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 9
def initialize(param_list)
  @params = param_list
end

Public Instance Methods

apply(ref, params) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 15
def apply(ref, params)
  structure(ref, params, '')
end

Private Instance Methods

blob(value) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 90
def blob(value)
  value = value.read unless String === value
  Base64.strict_encode64(value)
end
flat?(ref) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 82
def flat?(ref)
  ref['flattened']
end
format(ref, value, prefix) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 63
def format(ref, value, prefix)
  case ref.shape
  when StructureShape then structure(ref, value, prefix + '.')
  when ListShape      then list(ref, value, prefix)
  when MapShape       then map(ref, value, prefix)
  when BlobShape      then set(prefix, blob(value))
  when TimestampShape then set(prefix, timestamp(value))
  else set(prefix, value.to_s)
  end
end
list(ref, values, prefix) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 30
def list(ref, values, prefix)
  member_ref = ref.shape.member
  if values.empty?
    set(prefix, '')
    return
  end
  if flat?(ref)
    if name = query_name(member_ref)
      parts = prefix.split('.')
      parts.pop
      parts.push(name)
      prefix = parts.join('.')
    end
  else
    prefix += '.' + (member_ref.location_name || 'member')
  end
  values.each.with_index do |value, n|
    format(member_ref, value, "#{prefix}.#{n+1}")
  end
end
map(ref, values, prefix) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 51
def map(ref, values, prefix)
  key_ref = ref.shape.key
  value_ref = ref.shape.value
  prefix += '.entry' unless flat?(ref)
  key_name = "%s.%d.#{query_name(key_ref, 'key')}"
  value_name  = "%s.%d.#{query_name(value_ref, 'value')}"
  values.each.with_index do |(key, value), n|
    format(key_ref, key, key_name % [prefix, n + 1])
    format(value_ref, value, value_name % [prefix, n + 1])
  end
end
query_name(ref, default = nil) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 74
def query_name(ref, default = nil)
  ref.location_name || default
end
set(name, value) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 78
def set(name, value)
  params.set(name, value)
end
structure(ref, values, prefix) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 21
def structure(ref, values, prefix)
  shape = ref.shape
  values.each_pair do |name, value|
    next if value.nil?
    member_ref = shape.member(name)
    format(member_ref, value, prefix + query_name(member_ref))
  end
end
timestamp(value) click to toggle source
# File lib/aws-sdk-core/query/param_builder.rb, line 86
def timestamp(value)
  value.utc.iso8601
end