the method "decodeExceptionMessage" has moved from AmazonIncentives\AmazonIncentives to AmazonIncentives\Exceptions\AmazonErrors The old method is currently tagged deprecated internal via @deprecated PHPdoc entry
70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace gullevek\AmazonIncentives\Exceptions;
|
|
|
|
use RuntimeException;
|
|
use gullevek\AmazonIncentives\Debug\AmazonDebug;
|
|
|
|
final class AmazonErrors extends RuntimeException
|
|
{
|
|
/**
|
|
* Returns an Runtime exception including a json encoded string with all
|
|
* parameters including last log id and log
|
|
*
|
|
* @param string $error_status agcodResponse->status from Amazon
|
|
* @param string $error_code errorCode from Amazon
|
|
* @param string $error_type errorType from Amazon
|
|
* @param string $message Message string to ad
|
|
* @param int $_error_code Error code to set
|
|
* @return AmazonErrors Exception Class
|
|
*/
|
|
public static function getError(
|
|
string $error_status,
|
|
string $error_code,
|
|
string $error_type,
|
|
string $message,
|
|
int $_error_code
|
|
): self {
|
|
// NOTE: if xdebug.show_exception_trace is set to 1 this will print ERRORS
|
|
return new static(
|
|
(json_encode([
|
|
'status' => $error_status,
|
|
'code' => $error_code,
|
|
'type' => $error_type,
|
|
'message' => $message,
|
|
// atach log data if exists
|
|
'log_id' => AmazonDebug::getId(),
|
|
'log' => AmazonDebug::getLog(),
|
|
])) ?: 'AmazonErrors: json encode problem: ' . $message,
|
|
$_error_code
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Decodes the Exception message body
|
|
* Returns an array with code (Amazon error codes), type (Amazon error info)
|
|
* message (Amazon returned error message string)
|
|
*
|
|
* @param string $message Exception message json string
|
|
* @return array<mixed> Decoded with code, type, message fields
|
|
*/
|
|
public static function decodeExceptionMessage(string $message): array
|
|
{
|
|
$message_ar = json_decode($message, true);
|
|
// if we have an error, build empty block and only fill message
|
|
if (json_last_error()) {
|
|
$message_ar = [
|
|
'status' => '',
|
|
'code' => '',
|
|
'type' => '',
|
|
'message' => $message,
|
|
'log_id' => '',
|
|
'log' => []
|
|
];
|
|
}
|
|
return $message_ar;
|
|
}
|
|
}
|
|
|
|
// __END__
|