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