Skip to content

Commit e917ad3

Browse files
committed
CodemashEmail.
1 parent f8fedef commit e917ad3

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

src/CodemashEmail.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace Codemash;
4+
5+
use Codemash\Exceptions\RequestValidationException;
6+
use Codemash\Params\CodemashEmailParams;
7+
use GuzzleHttp\Exception\GuzzleException;
8+
9+
class CodemashEmail
10+
{
11+
private CodemashClient $client;
12+
private string $uriPrefix = 'v2/';
13+
14+
public function __construct(CodemashClient $client)
15+
{
16+
$this->client = $client;
17+
}
18+
19+
/**
20+
* @throws GuzzleException
21+
* @throws RequestValidationException
22+
*/
23+
public function send(array $params): string
24+
{
25+
$params = CodemashEmailParams::prepSendParams($params);
26+
27+
$response = $this->client->request('POST', $this->uriPrefix . 'notifications/email', [
28+
'headers' => [
29+
'Accept' => 'application/json',
30+
'Content-Type' => 'application/json',
31+
],
32+
'body' => toJson($params),
33+
]);
34+
35+
return $response['result'];
36+
}
37+
}

src/Params/CodemashEmailParams.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace Codemash\Params;
4+
5+
use Codemash\Exceptions\RequestValidationException;
6+
7+
class CodemashEmailParams
8+
{
9+
/**
10+
* @throws RequestValidationException
11+
*/
12+
public static function prepSendParams(array $params): array
13+
{
14+
$required = ['templateId'];
15+
16+
if (empty($params['emails'])) {
17+
$required[] = 'users';
18+
}
19+
20+
validateRequiredRequestParams($required, $params);
21+
22+
return [
23+
'templateId' => $params['templateId'],
24+
'cultureCode' => $params['cultureCode'] ?? null,
25+
'forceRequestLanguage' => $params['forceRequestLanguage'] ?? null,
26+
'roles' => $params['roles'] ?? null,
27+
'emails' => $params['emails'] ?? null,
28+
'users' => $params['users'] ?? null,
29+
'ccEmails' => $params['ccEmails'] ?? null,
30+
'ccUsers' => $params['ccUsers'] ?? null,
31+
'bccEmails' => $params['bccEmails'] ?? null,
32+
'bccUsers' => $params['bccUsers'] ?? null,
33+
'tokens' => $params['tokens'] ?? null,
34+
'postpone' => $params['postpone'] ?? null,
35+
'respectTimeZone' => $params['respectTimeZone'] ?? false,
36+
];
37+
}
38+
}

0 commit comments

Comments
 (0)