Skip to content
Snippets Groups Projects

Issue #3279838: Improve error handling

1 file
+ 71
25
Compare changes
  • Side-by-side
  • Inline
+ 71
25
@@ -110,17 +110,21 @@ class API implements APIInterface {
* {@inheritdoc}
*/
public function getSubAccounts(): array {
$accounts = [];
$result = [];
try {
if ($mailchimp_transactional = $this->getApiObject()) {
$accounts = $mailchimp_transactional->subaccounts->list();
$result = $mailchimp_transactional->subaccounts->list();
if ($result instanceof RequestException) {
$this->log->error($result->getMessage());
return [];
}
}
}
catch (\Exception $e) {
$this->messenger->addError($this->t('Mailchimp Transactional: %message', ['%message' => $e->getMessage()]));
$this->log->error($e->getMessage());
}
return $accounts;
return $result;
}
/**
@@ -130,7 +134,13 @@ class API implements APIInterface {
$user = NULL;
try {
if ($mailchimp_transactional = $this->getApiObject()) {
$user = $mailchimp_transactional->users->info();
$result = $mailchimp_transactional->users->info();
if ($result instanceof RequestException) {
$this->log->error($result->getMessage());
}
else {
$user = $result;
}
}
}
catch (RequestException $e) {
@@ -148,6 +158,10 @@ class API implements APIInterface {
try {
if ($mailchimp_transactional = $this->getApiObject()) {
$data = $mailchimp_transactional->tags->allTimeSeries();
if ($data instanceof RequestException) {
$this->log->error($data->getMessage());
return [];
}
}
}
catch (RequestException $e) {
@@ -177,24 +191,40 @@ class API implements APIInterface {
return $response;
}
/**
/**
* {@inheritdoc}
*/
public function sendTemplate(array $message, $template_id, array $template_content): array {
$result = NULL;
try {
if ($mailchimp_transactional = $this->getApiObject()) {
$result = $mailchimp_transactional->messages->sendTemplate([
'message' => $message,
'template_name' => $template_id,
'template_content' => $template_content,
]);
}
$mailer = $this->getApiObject();
if ($mailer === FALSE) {
return [
(object) [
'status' => 'error',
'email' => $message['message']['to'][0]['email'] ?? 'recipient',
'message' => 'Failed to instantiate the Mailchimp Transactional API client. Check the logs for more information.',
]
];
}
catch (RequestException $e) {
$this->messenger->addError($this->t('Mailchimp Transactional: %message', ['%message' => $e->getMessage()]));
$this->log->error($e->getMessage());
$result = $mailer->messages->sendTemplate([
'message' => $message,
'template_name' => $template_id,
'template_content' => $template_content,
]);
if ($result instanceof RequestException) {
$this->messenger->addError($this->t('Mailchimp Transactional: %message', ['%message' => $result->getMessage()]));
$this->log->error($result->getMessage());
return [
(object) [
'status' => 'error',
'email' => $message['message']['to'][0]['email'] ?? 'recipient',
'message' => $result->getMessage()
]
];
}
return $result;
}
@@ -202,16 +232,32 @@ class API implements APIInterface {
* {@inheritdoc}
*/
public function send(array $message): array {
$result = NULL;
try {
if ($mailer = $this->getApiObject()) {
$result = $mailer->messages->send($message);
}
$mailer = $this->getApiObject();
if ($mailer === FALSE) {
return [
(object) [
'status' => 'error',
'email' => $message['message']['to'][0]['email'] ?? 'recipient',
'message' => 'Failed to instantiate the Mailchimp Transactional API client. Check the logs for more information.',
]
];
}
catch (RequestException $e) {
$this->messenger->addError($this->t('Could not load Mailchimp Transactional API: %message', ['%message' => $e->getMessage()]));
$this->log->error($e->getMessage());
$result = $mailer->messages->send($message);
if ($result instanceof RequestException) {
$this->messenger->addError($this->t('Could not load Mailchimp Transactional API: %message', ['%message' => $result->getMessage()]));
$this->log->error($result->getMessage());
return [
(object) [
'status' => 'error',
'email' => $message['message']['to'][0]['email'] ?? 'recipient',
'message' => $result->getMessage()
]
];
}
return $result;
}
Loading