$locations
$locations : \GuzzleHttp\Command\Guzzle\RequestLocation\RequestLocationInterface[]
Override Request serializer to modify authentication mechanism
$locations : \GuzzleHttp\Command\Guzzle\RequestLocation\RequestLocationInterface[]
$description : \GuzzleHttp\Command\Guzzle\DescriptionInterface
prepareRequest(\GuzzleHttp\Command\CommandInterface $command, \Psr\Http\Message\RequestInterface $request) : \Psr\Http\Message\RequestInterface
Authorization header is Loco's preferred authorization method.
Add Authorization header to request if API key is set, unless query is explicitly configured as auth method. Unset key from command to avoid sending it as a query param.
\GuzzleHttp\Command\CommandInterface | $command | |
\Psr\Http\Message\RequestInterface | $request |
createCommandWithUri(\GuzzleHttp\Command\Guzzle\Operation $operation, \GuzzleHttp\Command\CommandInterface $command) : \GuzzleHttp\Psr7\Request
Create a request for an operation with a uri merged onto a base URI
\GuzzleHttp\Command\Guzzle\Operation | $operation | |
\GuzzleHttp\Command\CommandInterface | $command |
<?php
namespace Qcloud\Cos;
use GuzzleHttp\Command\CommandInterface;
use GuzzleHttp\Command\Guzzle\SchemaValidator;
use GuzzleHttp\Command\Guzzle\DescriptionInterface;
use GuzzleHttp\Command\Guzzle\Serializer as DefaultSerializer;
use Psr\Http\Message\RequestInterface;
/**
* Override Request serializer to modify authentication mechanism
*/
class Serializer extends DefaultSerializer
{
/**
* {@inheritdoc}
*/
public function __construct(
DescriptionInterface $description,
array $requestLocations = []
) {
// Override Guzzle's body location as it isn't raw binary data
$requestLocations['body'] = new Request\BodyLocation;
parent::__construct($description, $requestLocations);
}
/**
* Authorization header is Loco's preferred authorization method.
* Add Authorization header to request if API key is set, unless query is explicitly configured as auth method.
* Unset key from command to avoid sending it as a query param.
*
* @override
*
* @param CommandInterface $command
* @param RequestInterface $request
*
* @return RequestInterface
*
* @throws \InvalidArgumentException
*/
protected function prepareRequest(
CommandInterface $command,
RequestInterface $request
) {
/*
if ($command->offsetExists('key') === true) {
$mode = empty($command->offsetGet('auth')) === false
? $command->offsetGet('auth')
: 'loco';
if ($mode !== 'query') {
// else use Authorization header of various types
if ($mode === 'loco') {
$value = 'Loco '.$command->offsetGet('key');
$request = $request->withHeader('Authorization', $value);
} elseif ($mode === 'basic') {
$value = 'Basic '.base64_encode($command->offsetGet('key').':');
$request = $request->withHeader('Authorization', $value);
} else {
throw new \InvalidArgumentException("Invalid auth type: {$mode}");
}
// avoid request sending key parameter in query string
$command->offsetUnset('key');
}
}
// Remap legacy parameters to common `data` binding on request body
static $remap = [
'import' => ['src'=>'data'],
'translate' => ['translation'=>'data'],
];
$name = $command->getName();
if (isset($remap[$name])) {
foreach ($remap[$name] as $old => $new) {
if ($command->offsetExists($old)) {
$command->offsetSet($new, $command->offsetGet($old));
$command->offsetUnset($old);
}
}
}
*/
return parent::prepareRequest($command, $request);
}
}