public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value) { $value = $param->filter($value); $entityBody = EntityBody::factory($value); $request->setBody($entityBody); $this->addExpectHeader($request, $entityBody, $param->getData('expect_header')); // Add the Content-Encoding header if one is set on the EntityBody if ($encoding = $entityBody->getContentEncoding()) { $request->setHeader('Content-Encoding', $encoding); } }
/** * Custom handling for arrays * * @param Parameter $param Parameter for the object * @param array $value Value that is set for this parameter * @param string $prefix Prefix for the resulting key * @param array $query Query string array passed by reference */ protected function resolveArray(Parameter $param, array $value, $prefix, array &$query) { static $serializeEmpty = array('SetLoadBalancerPoliciesForBackendServer' => 1, 'SetLoadBalancerPoliciesOfListener' => 1, 'UpdateStack' => 1); // For BC, serialize empty lists for specific operations if (!$value) { if (isset($serializeEmpty[$this->fqname])) { $query[$prefix] = ''; } return; } $offset = $param->getData('offset') ?: 1; foreach ($value as $index => $v) { $index += $offset; if (is_array($v) && ($items = $param->getItems())) { $this->customResolver($v, $items, $query, $prefix . '.' . $index); } else { $query[$prefix . '.' . $index] = $param->filter($v); } } }
/** * Recursively build the XML body * * @param \XMLWriter $xmlWriter XML to modify * @param Parameter $param API Parameter * @param mixed $value Value to add */ protected function addXml(\XMLWriter $xmlWriter, Parameter $param, $value) { if ($value === null) { return; } $value = $param->filter($value); $type = $param->getType(); $name = $param->getWireName(); $prefix = null; $namespace = $param->getData('xmlNamespace'); if (false !== strpos($name, ':')) { list($prefix, $name) = explode(':', $name, 2); } if ($type == 'object' || $type == 'array') { if (!$param->getData('xmlFlattened')) { $xmlWriter->startElementNS(null, $name, $namespace); } if ($param->getType() == 'array') { $this->addXmlArray($xmlWriter, $param, $value); } elseif ($param->getType() == 'object') { $this->addXmlObject($xmlWriter, $param, $value); } if (!$param->getData('xmlFlattened')) { $xmlWriter->endElement(); } return; } if ($param->getData('xmlAttribute')) { $this->writeAttribute($xmlWriter, $prefix, $name, $namespace, $value); } else { $this->writeElement($xmlWriter, $prefix, $name, $namespace, $value); } }