class Aws::Json::Parser
def initialize(rules)
-
rules
(Seahorse::Model::ShapeRef
) --
def initialize(rules) @rules = rules end
def list(ref, values, target = nil)
def list(ref, values, target = nil) target = [] if target.nil? values.each do |value| target << parse_ref(ref.shape.member, value) end target end
def map(ref, values, target = nil)
def map(ref, values, target = nil) target = {} if target.nil? values.each do |key, value| target[key] = parse_ref(ref.shape.value, value) end target end
def parse(json, target = nil)
-
json
(String
) --
def parse(json, target = nil) parse_ref(@rules, Json.load(json), target) end
def parse_ref(ref, value, target = nil)
def parse_ref(ref, value, target = nil) if value.nil? nil else case ref.shape when StructureShape then structure(ref, value, target) when ListShape then list(ref, value, target) when MapShape then map(ref, value, target) when TimestampShape then time(value) when BlobShape then Base64.decode64(value) when BooleanShape then value.to_s == 'true' else value end end end
def structure(ref, values, target = nil)
def structure(ref, values, target = nil) shape = ref.shape target = ref.shape.struct_class.new if target.nil? values.each do |key, value| member_name, member_ref = shape.member_by_location_name(key) if member_ref target[member_name] = parse_ref(member_ref, value) elsif shape.union target[:unknown] = { 'name' => key, 'value' => value } end end if shape.union # convert to subclass member_subclass = shape.member_subclass(target.member).new member_subclass[target.member] = target.value target = member_subclass end target end
def time(value)
-
(Time)
-
Parameters:
-
value
(String, Integer
) --
def time(value) value.is_a?(Numeric) ? Time.at(value) : Time.parse(value) end