Add handling for more 5xx errors from the bridge

[MAILPOET-4209]
This commit is contained in:
Jan Lysý
2022-05-04 13:28:53 +02:00
committed by Veljko V
parent 0996a64f32
commit 32c27b91c1
3 changed files with 21 additions and 0 deletions

View File

@ -86,7 +86,10 @@ class MailPoetMapper {
$message .= ' ' . $e->getMessage();
}
break;
case API::RESPONSE_CODE_INTERNAL_SERVER_ERROR:
case API::RESPONSE_CODE_BAD_GATEWAY:
case API::RESPONSE_CODE_TEMPORARY_UNAVAILABLE:
case API::RESPONSE_CODE_GATEWAY_TIMEOUT:
$message = __('Email service is temporarily not available, please try again in a few minutes.', 'mailpoet');
$retryInterval = self::TEMPORARY_UNAVAILABLE_RETRY_INTERVAL;
break;

View File

@ -15,7 +15,10 @@ class API {
const RESPONSE_CODE_KEY_INVALID = 401;
const RESPONSE_CODE_STATS_SAVED = 204;
const RESPONSE_CODE_INTERNAL_SERVER_ERROR = 500;
const RESPONSE_CODE_BAD_GATEWAY = 502;
const RESPONSE_CODE_TEMPORARY_UNAVAILABLE = 503;
const RESPONSE_CODE_GATEWAY_TIMEOUT = 504;
const RESPONSE_CODE_NOT_ARRAY = 422;
const RESPONSE_CODE_PAYLOAD_TOO_BIG = 413;
const RESPONSE_CODE_PAYLOAD_ERROR = 400;

View File

@ -184,4 +184,19 @@ class MailPoetMapperTest extends \MailPoetUnitTest {
expect($error->getMessage())->stringContainsString("Youll soon be able to send once our team reviews your account.");
}
public function testGetUnavailableServiceError() {
$apiResult = [
'code' => API::RESPONSE_CODE_GATEWAY_TIMEOUT,
'status' => API::SENDING_STATUS_SEND_ERROR,
'message' => 'Service is temporary unavailable',
];
$error = $this->mapper->getErrorForResult($apiResult, $this->subscribers);
expect($error)->isInstanceOf(MailerError::class);
expect($error->getRetryInterval())->equals(MailPoetMapper::TEMPORARY_UNAVAILABLE_RETRY_INTERVAL);
expect($error->getOperation())->equals(MailerError::OPERATION_SEND);
expect($error->getLevel())->equals(MailerError::LEVEL_HARD);
expect($error->getMessage())->equals('Email service is temporarily not available, please try again in a few minutes.');
}
}