mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-05 10:49:37 +02:00
44 lines
1.5 KiB
PHP
44 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Guzzle\Service\Command\LocationVisitor\Request;
|
|
|
|
use Guzzle\Common\Exception\InvalidArgumentException;
|
|
use Guzzle\Http\Message\RequestInterface;
|
|
use Guzzle\Service\Command\CommandInterface;
|
|
use Guzzle\Service\Description\Parameter;
|
|
|
|
/**
|
|
* Visitor used to apply a parameter to a header value
|
|
*/
|
|
class HeaderVisitor extends AbstractRequestVisitor
|
|
{
|
|
public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
|
|
{
|
|
$value = $param->filter($value);
|
|
if ($param->getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) {
|
|
$this->addPrefixedHeaders($request, $param, $value);
|
|
} else {
|
|
$request->setHeader($param->getWireName(), $value);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add a prefixed array of headers to the request
|
|
*
|
|
* @param RequestInterface $request Request to update
|
|
* @param Parameter $param Parameter object
|
|
* @param array $value Header array to add
|
|
*
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
protected function addPrefixedHeaders(RequestInterface $request, Parameter $param, $value)
|
|
{
|
|
if (!is_array($value)) {
|
|
throw new InvalidArgumentException('An array of mapped headers expected, but received a single value');
|
|
}
|
|
$prefix = $param->getSentAs();
|
|
foreach ($value as $headerName => $headerValue) {
|
|
$request->setHeader($prefix . $headerName, $headerValue);
|
|
}
|
|
}
|
|
}
|