Spaces:
No application file
No application file
File size: 1,384 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<?php
namespace Mautic\NotificationBundle\Api;
use GuzzleHttp\Client;
use Mautic\NotificationBundle\Entity\Notification;
use Mautic\PageBundle\Model\TrackableModel;
use Mautic\PluginBundle\Helper\IntegrationHelper;
use Psr\Http\Message\ResponseInterface;
abstract class AbstractNotificationApi
{
public function __construct(
protected Client $http,
protected TrackableModel $trackableModel,
protected IntegrationHelper $integrationHelper
) {
}
/**
* @param string $endpoint One of "apps", "players", or "notifications"
* @param array $data Array of data to send
*/
abstract public function send(string $endpoint, array $data): ResponseInterface;
/**
* @return ResponseInterface
*/
abstract public function sendNotification($id, Notification $notification);
/**
* Convert a non-tracked url to a tracked url.
*
* @param string $url
*
* @return string
*/
public function convertToTrackedUrl($url, array $clickthrough, Notification $notification)
{
/* @var \Mautic\PageBundle\Entity\Redirect $redirect */
$trackable = $this->trackableModel->getTrackableByUrl($url, 'notification', $clickthrough['notification']);
return $this->trackableModel->generateTrackableUrl($trackable, $clickthrough, [], $notification->getUtmTags());
}
}
|