Skip to content

Commit

Permalink
Merge pull request #15 from ppavlovic/master
Browse files Browse the repository at this point in the history
Added a Smarthost feature for the MailerQ
  • Loading branch information
ppavlovic committed Jun 2, 2022
2 parents 9ace7b6 + 29eb851 commit 7adc7a2
Showing 1 changed file with 43 additions and 19 deletions.
62 changes: 43 additions & 19 deletions src/Message/MailerQ/Rest/MessageFacade.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,27 @@ class MessageFacade
{
const HEADER_MAILERQ_LOGID = 'x-nd-mailerlogid';
const HEADER_LIST_UNSUBSCRIBE = 'List-Unsubscribe';

const BCC = 'bcc';
const CC = 'cc';
const CONTENT = 'content';
const ENVELOPE = 'envelope';
const FEEDBACK_ID = 'Feedback-ID';
const FROM = 'from';
const HEADERS = 'headers';
const INLINECSS = 'inlinecss';
const MIME = 'mime';
const PARAMS = 'params';
const RECIPIENT = 'recipient';
const REPLY_TO = 'replyTo';
const SMARTHOST = 'smarthost';
const SUBJECT = 'subject';
const TAGS = 'tags';
const TEXT = 'text';
const TO = 'to';
const TOKEN = 'token';
const URL = 'url';
const X_NZ_TAGS = 'X-NZ-Tags';

/**
* @param \G4\Mailer\Message $message
Expand All @@ -16,43 +36,47 @@ class MessageFacade
public static function convert(\G4\Mailer\Message $message, array $options)
{
$body = [
'envelope' => self::getEnvelope($message->getFrom()),
'recipient' => is_array($message->getTo())? $message->getTo()[0] : $message->getTo(),
'tags' => self::getTags($message->getHeaders()),
'inlinecss' => true,
'mime' => [
'from' => $message->getFrom(),
'to' => $message->getTo(),
'subject' => $message->getSubject(),
'text' => $message->getTextBody(),
'cc' => $message->getCc(),
'bcc' => $message->getBcc(),
'replyTo' => $message->getReplyTo(),
'content' => $message->getHtmlBody(),
self::ENVELOPE => self::getEnvelope($message->getFrom()),
self::RECIPIENT => is_array($message->getTo())? $message->getTo()[0] : $message->getTo(),
self::TAGS => self::getTags($message->getHeaders()),
self::INLINECSS => true,
self::MIME => [
self::FROM => $message->getFrom(),
self::TO => $message->getTo(),
self::SUBJECT => $message->getSubject(),
self::TEXT => $message->getTextBody(),
self::CC => $message->getCc(),
self::BCC => $message->getBcc(),
self::REPLY_TO => $message->getReplyTo(),
self::CONTENT => $message->getHtmlBody(),
]
];

if (isset($options[self::PARAMS][self::SMARTHOST])) {
$body[self::MIME][self::SMARTHOST] = $options[self::PARAMS][self::SMARTHOST];
}

if ($message->getLogId()) {
$body['mime']['headers'][self::HEADER_MAILERQ_LOGID] = $message->getLogId();
$body[self::MIME][self::HEADERS][self::HEADER_MAILERQ_LOGID] = $message->getLogId();
}

if ($message->getListUnsubscribe()) {
$body['mime']['headers'][self::HEADER_LIST_UNSUBSCRIBE] = $message->getListUnsubscribe();
$body[self::MIME][self::HEADERS][self::HEADER_LIST_UNSUBSCRIBE] = $message->getListUnsubscribe();
}

$messageHeaders = $message->getHeaders();

if (array_key_exists(self::FEEDBACK_ID, $messageHeaders)) {
$body['mime']['headers'][self::FEEDBACK_ID] = $messageHeaders[self::FEEDBACK_ID];
$body[self::MIME][self::HEADERS][self::FEEDBACK_ID] = $messageHeaders[self::FEEDBACK_ID];
}

$headers = [
'Content-Type: application/json',
'Content-Length: ' . strlen(json_encode($body)),
'Authorization: Bearer ' . $options['params']['token'],
'Authorization: Bearer ' . $options[self::PARAMS][self::TOKEN],
];

$url = $options['params']['url'];
$url = $options[self::PARAMS][self::URL];

return new Message($body, $headers, $url);
}
Expand All @@ -66,7 +90,7 @@ private static function getEnvelope($string)
private static function getTags($headers)
{
try {
return explode(",", $headers['X-NZ-Tags']);
return explode(',', $headers[self::X_NZ_TAGS]);
}catch (\Exception $exception) {
throw new \RuntimeException(sprintf('Tags are not resolved. Reason: %s', $exception->getMessage()));
}
Expand Down

0 comments on commit 7adc7a2

Please sign in to comment.