From f010c96c2d06a56debafb53f861861cb1a78c6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Wed, 29 Apr 2020 10:25:03 +0200 Subject: [PATCH] Use private method for building view-in-browser URL [MAILPOET-2646] --- lib/API/JSON/v1/Newsletters.php | 39 ++++++++++++++------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index 31394850c6..c449ca4273 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -10,6 +10,7 @@ use MailPoet\Config\AccessControl; use MailPoet\Cron\CronHelper; use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask; use MailPoet\DI\ContainerWrapper; +use MailPoet\Entities\NewsletterEntity; use MailPoet\Listing; use MailPoet\Mailer\Mailer as MailerFactory; use MailPoet\Mailer\MetaInfo; @@ -125,15 +126,9 @@ class Newsletters extends APIEndpoint { NewslettersResponseBuilder::RELATION_OPTIONS, NewslettersResponseBuilder::RELATION_QUEUE, ]); - $previewUrl = NewsletterUrl::getViewInBrowserUrl( - (object)[ - 'id' => $newsletter->getId(), - 'hash' => $newsletter->getHash(), - ] - ); $response = $this->wp->applyFilters('mailpoet_api_newsletters_get_after', $response); - return $this->successResponse($response, ['preview_url' => $previewUrl]); + return $this->successResponse($response, ['preview_url' => $this->getViewInBrowserUrl($newsletter)]); } else { return $this->errorResponse([ APIError::NOT_FOUND => __('This email does not exist.', 'mailpoet'), @@ -154,12 +149,7 @@ class Newsletters extends APIEndpoint { NewslettersResponseBuilder::RELATION_STATISTICS, ]); $response = $this->wp->applyFilters('mailpoet_api_newsletters_get_after', $response); - $response['preview_url'] = NewsletterUrl::getViewInBrowserUrl( - (object)[ - 'id' => $newsletter->getId(), - 'hash' => $newsletter->getHash(), - ] - ); + $response['preview_url'] = $this->getViewInBrowserUrl($newsletter); return $this->successResponse($response); } else { return $this->errorResponse([ @@ -442,16 +432,7 @@ class Newsletters extends APIEndpoint { $this->newslettersRepository->flush(); $response = $this->newslettersResponseBuilder->build($newsletter); - $previewUrl = NewsletterUrl::getViewInBrowserUrl( - (object)[ - 'id' => $newsletter->getId(), - 'hash' => $newsletter->getHash(), - ] - ); - - // strip protocol to avoid mix content error - $previewUrl = preg_replace('{^https?:}i', '', $previewUrl); - return $this->successResponse($response, ['preview_url' => $previewUrl]); + return $this->successResponse($response, ['preview_url' => $this->getViewInBrowserUrl($newsletter)]); } public function sendPreview($data = []) { @@ -634,4 +615,16 @@ class Newsletters extends APIEndpoint { ); } } + + private function getViewInBrowserUrl(NewsletterEntity $newsletter): string { + $url = NewsletterUrl::getViewInBrowserUrl( + (object)[ + 'id' => $newsletter->getId(), + 'hash' => $newsletter->getHash(), + ] + ); + + // strip protocol to avoid mix content error + return preg_replace('/^https?:/i', '', $url); + } }