update lock clucknut
All checks were successful
All checks were successful
This commit is contained in:
105
vendor/aws/aws-sdk-php/src/Api/Parser/RpcV2ParserTrait.php
vendored
Normal file
105
vendor/aws/aws-sdk-php/src/Api/Parser/RpcV2ParserTrait.php
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
namespace Aws\Api\Parser;
|
||||
|
||||
use Aws\Api\Cbor\Exception\CborException;
|
||||
use Aws\Api\DateTimeResult;
|
||||
use Aws\Api\Parser\Exception\ParserException;
|
||||
use Aws\Api\Shape;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\StreamInterface;
|
||||
|
||||
/**
|
||||
* Shared parsing logic for RPC V2 Parsers.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
trait RpcV2ParserTrait
|
||||
{
|
||||
/**
|
||||
* Resolves output shape fields that are present in the response
|
||||
*
|
||||
* @param Shape $shape
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function resolveOutputShape(Shape $shape, mixed $value): mixed
|
||||
{
|
||||
if ($value === null) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
switch ($shape['type']) {
|
||||
case 'structure':
|
||||
$target = [];
|
||||
foreach ($shape->getMembers() as $name => $member) {
|
||||
$locationName = $member['locationName'] ?: $name;
|
||||
if (isset($value[$locationName])) {
|
||||
$target[$name] = $this->resolveOutputShape($member, $value[$locationName]);
|
||||
}
|
||||
}
|
||||
return $target;
|
||||
|
||||
case 'list':
|
||||
$target = [];
|
||||
foreach ($value as $v) {
|
||||
$target[] = $this->resolveOutputShape($shape->getMember(), $v);
|
||||
}
|
||||
return $target;
|
||||
|
||||
case 'map':
|
||||
$target = [];
|
||||
foreach ($value as $k => $v) {
|
||||
if ($v !== null) {
|
||||
$target[$k] = $this->resolveOutputShape($shape->getValue(), $v);
|
||||
}
|
||||
}
|
||||
return $target;
|
||||
|
||||
case 'timestamp':
|
||||
try {
|
||||
$value = DateTimeResult::fromEpoch($value);
|
||||
} catch (\Exception $e) {
|
||||
trigger_error(
|
||||
'Unable to parse timestamp value for '
|
||||
. $shape->getName()
|
||||
. ': ' . $e->getMessage(),
|
||||
E_USER_WARNING
|
||||
);
|
||||
}
|
||||
|
||||
return $value;
|
||||
|
||||
default:
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses CBOR-encoded response data from RPC V2 CBOR services.
|
||||
*
|
||||
* @param StreamInterface $stream
|
||||
* @param ResponseInterface $response
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function parseCbor(
|
||||
StreamInterface $stream,
|
||||
ResponseInterface $response
|
||||
): mixed
|
||||
{
|
||||
try {
|
||||
$cborString = (string) $stream;
|
||||
return empty($cborString)
|
||||
? null
|
||||
: $this->decoder->decode($cborString);
|
||||
} catch (CborException $e) {
|
||||
throw new ParserException(
|
||||
"Malformed Response: error parsing CBOR: {$e->getMessage()}",
|
||||
0,
|
||||
$e,
|
||||
['response' => $response]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user