diff --git a/src/Api/Templates.php b/src/Api/Templates.php index d3356059..47f536c3 100644 --- a/src/Api/Templates.php +++ b/src/Api/Templates.php @@ -14,7 +14,7 @@ use Exception; use Mailgun\Assert; use Mailgun\Model\Templates\CreateResponse; -use Mailgun\Model\Templates\GetResponse; +use Mailgun\Model\Templates\IndexResponse; use Mailgun\Model\Templates\ShowResponse; use Psr\Http\Client\ClientExceptionInterface; use Psr\Http\Message\ResponseInterface; @@ -37,11 +37,11 @@ class Templates extends HttpApi * @param string $page * @param string $pivot * @param array $requestHeaders - * @return GetResponse|ResponseInterface + * @return IndexResponse|ResponseInterface * @throws ClientExceptionInterface * @throws Exception */ - public function get(string $domain, int $limit, string $page, string $pivot, array $requestHeaders = []) + public function index(string $domain, int $limit, string $page, string $pivot, array $requestHeaders = []) { Assert::inArray($page, [self::PAGE_LAST, self::PAGE_FIRST, self::PAGE_PREVIOUS, self::PAGE_NEXT]); @@ -53,7 +53,7 @@ public function get(string $domain, int $limit, string $page, string $pivot, arr $response = $this->httpGet(sprintf('/v3/%s/templates', $domain), $params, $requestHeaders); - return $this->hydrateResponse($response, GetResponse::class); + return $this->hydrateResponse($response, IndexResponse::class); } /** @@ -134,4 +134,18 @@ public function create( return $this->hydrateResponse($response, CreateResponse::class); } + + /** + * @param string $domain + * @param string $templateName + * @param array $requestHeaders + * @return mixed|ResponseInterface + * @throws ClientExceptionInterface + */ + public function deleteTemplate(string $domain, string $templateName, array $requestHeaders = []) + { + $response = $this->httpDelete(sprintf('/v3/%s/templates/%s', $domain, $templateName), [] , $requestHeaders); + + return $this->hydrateResponse($response, ShowResponse::class); + } } diff --git a/src/Model/Templates/CreateResponse.php b/src/Model/Templates/CreateResponse.php index 97dc1b38..3faeedcb 100644 --- a/src/Model/Templates/CreateResponse.php +++ b/src/Model/Templates/CreateResponse.php @@ -16,6 +16,10 @@ final class CreateResponse implements ApiResponse { private $message; + + /** + * @var Template $template + */ private $template; /** @@ -26,7 +30,9 @@ public static function create(array $data): self { $model = new self(); $model->message = $data['message'] ?? null; - $model->template = $data['template'] ?? null; + if (isset($data['template'])) { + $model->template = Template::create($data['template']); + } return $model; } @@ -44,9 +50,9 @@ public function getMessage(): ?string } /** - * @return array|null + * @return Template|null */ - public function getTemplate(): ?array + public function getTemplate(): ?Template { return $this->template; } diff --git a/src/Model/Templates/DeleteResponse.php b/src/Model/Templates/DeleteResponse.php new file mode 100644 index 00000000..f09965de --- /dev/null +++ b/src/Model/Templates/DeleteResponse.php @@ -0,0 +1,75 @@ +setMessage($data['message']); + $model->setTemplate(Template::create($template)); + + return $model; + } + + /** + * @return string + */ + public function getMessage(): string + { + return $this->message; + } + + /** + * @param string $message + */ + public function setMessage(string $message): void + { + $this->message = $message; + } + + /** + * @return Template + */ + public function getTemplate(): Template + { + return $this->template; + } + + /** + * @param Template $template + */ + public function setTemplate(Template $template): void + { + $this->template = $template; + } +} diff --git a/src/Model/Templates/GetResponse.php b/src/Model/Templates/IndexResponse.php similarity index 93% rename from src/Model/Templates/GetResponse.php rename to src/Model/Templates/IndexResponse.php index 84f6da78..116d8915 100644 --- a/src/Model/Templates/GetResponse.php +++ b/src/Model/Templates/IndexResponse.php @@ -16,10 +16,7 @@ use Mailgun\Model\PagingProvider; use Psr\Http\Message\StreamInterface; -/** - * @author Tobias Nyholm - */ -final class GetResponse implements ApiResponse, PagingProvider +final class IndexResponse implements ApiResponse, PagingProvider { use PaginationResponse; diff --git a/src/Model/Templates/ShowResponse.php b/src/Model/Templates/ShowResponse.php index cf855c1b..41e4127d 100644 --- a/src/Model/Templates/ShowResponse.php +++ b/src/Model/Templates/ShowResponse.php @@ -13,9 +13,6 @@ use Mailgun\Model\ApiResponse; -/** - * @author Tobias Nyholm - */ final class ShowResponse extends Template implements ApiResponse { } diff --git a/src/Model/Templates/Template.php b/src/Model/Templates/Template.php index 09a14262..3e500480 100644 --- a/src/Model/Templates/Template.php +++ b/src/Model/Templates/Template.php @@ -40,7 +40,7 @@ public static function create(array $data): self $template = $data['template'] ?? $data; $model = new self(); - $model->setId($template['id']); + $model->setId($template['id'] ?? null); $model->setName($template['name']); $model->setDescription($template['description'] ?? ''); $model->setCreatedAt($template['createdAt'] ?? ''); @@ -50,17 +50,17 @@ public static function create(array $data): self } /** - * @return string + * @return string|null */ - public function getId(): string + public function getId(): ?string { return $this->id; } /** - * @param string $id + * @param string|null $id */ - public function setId(string $id): void + public function setId(?string $id): void { $this->id = $id; }