in src/Sqs/SqsClient.php [167:237]
private function validateMd5()
{
return static function (callable $handler) {
return function (
CommandInterface $c,
?RequestInterface $r = null
) use ($handler) {
if ($c->getName() !== 'ReceiveMessage') {
return $handler($c, $r);
}
return $handler($c, $r)
->then(
function ($result) use ($c, $r) {
foreach ((array) $result['Messages'] as $msg) {
$bodyMd5 = self::calculateBodyMd5($msg);
if (isset($msg['MD5OfBody'])
&& $bodyMd5 !== $msg['MD5OfBody']
) {
throw new SqsException(
sprintf(
'MD5 mismatch. Expected %s, found %s',
$msg['MD5OfBody'],
$bodyMd5
),
$c,
[
'code' => 'ClientChecksumMismatch',
'request' => $r
]
);
}
if (isset($msg['MD5OfMessageAttributes'])) {
$messageAttributesMd5 = self::calculateMessageAttributesMd5($msg);
if ($messageAttributesMd5 !== $msg['MD5OfMessageAttributes']) {
throw new SqsException(
sprintf(
'Attribute MD5 mismatch. Expected %s, found %s',
$msg['MD5OfMessageAttributes'],
$messageAttributesMd5
? $messageAttributesMd5
: 'No Attributes'
),
$c,
[
'code' => 'ClientChecksumMismatch',
'request' => $r
]
);
}
} else if (!empty($msg['MessageAttributes'])) {
throw new SqsException(
sprintf(
'No Attribute MD5 found. Expected %s',
self::calculateMessageAttributesMd5($msg)
),
$c,
[
'code' => 'ClientChecksumMismatch',
'request' => $r
]
);
}
}
return $result;
}
);
};
};
}