private function parse_structure(StructureShape $shape, \SimpleXMLElement $value) { $target = []; foreach ($shape->getMembers() as $name => $member) { // Extract the name of the XML node $node = $this->memberKey($member, $name); if (isset($value->{$node})) { $target[$name] = $this->dispatch($member, $value->{$node}); } } return $target; }
private function extractPayload($payload, StructureShape $output, ResponseInterface $response, array &$result) { $member = $output->getMember($payload); if ($member instanceof StructureShape) { // Structure members parse top-level data into a specific key. $result[$payload] = []; $this->payload($response, $member, $result[$payload]); } else { // Streaming data is just the stream from the response body. $result[$payload] = $response->getBody(); } }
protected function format_structure(StructureShape $shape, array $value, $prefix, &$query) { if ($prefix) { $prefix .= '.'; } foreach ($value as $k => $v) { if ($shape->hasMember($k)) { $member = $shape->getMember($k); $this->format($member, $v, $prefix . $this->queryName($member, $k), $query); } } }
private function getStructureMembers(StructureShape $shape, array $value) { $members = []; foreach ($value as $k => $v) { if ($v !== null && $shape->hasMember($k)) { $definition = ['member' => $shape->getMember($k), 'value' => $v]; if ($definition['member']['xmlAttribute']) { // array_unshift_associative $members = [$k => $definition] + $members; } else { $members[$k] = $definition; } } } return $members; }
private function check_structure(StructureShape $shape, $value) { if (!$this->checkAssociativeArray($value)) { return; } if ($shape['required']) { foreach ($shape['required'] as $req) { if (!isset($value[$req])) { $this->path[] = $req; $this->addError('is missing and is a required parameter'); array_pop($this->path); } } } foreach ($value as $name => $v) { if ($shape->hasMember($name)) { $this->path[] = $name; $this->dispatch($shape->getMember($name), isset($value[$name]) ? $value[$name] : null); array_pop($this->path); } } }
private function applyPayload(StructureShape $input, $name, array $args, array &$opts) { if (!isset($args[$name])) { return; } $m = $input->getMember($name); if ($m['streaming'] || ($m['type'] == 'string' || $m['type'] == 'blob')) { // Streaming bodies or payloads that are strings are // always just a stream of data. $opts['body'] = Psr7\stream_for($args[$name]); return; } $this->payload($m, $args[$name], $opts); }