From 5c6113aabd57ffce5ecde40de96364c437e1666c Mon Sep 17 00:00:00 2001 From: Akrilla <18756865+Akrilla@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:32:14 +0100 Subject: [PATCH] Add missing query parameters to Domain::index() methods --- src/Api/Domain.php | 37 ++++++++++++++++++++++++++++--------- src/Api/DomainV4.php | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/Api/Domain.php b/src/Api/Domain.php index 547c8bd5..d20f60be 100644 --- a/src/Api/Domain.php +++ b/src/Api/Domain.php @@ -45,20 +45,39 @@ class Domain extends HttpApi /** * Returns a list of domains on the account. - * @param int $limit - * @param int $skip - * @param array $requestHeaders + * @param array $params + * @param array $requestHeaders * @return IndexResponse|array * @throws ClientExceptionInterface */ - public function index(int $limit = 100, int $skip = 0, array $requestHeaders = []) + public function index(array $params = [], array $requestHeaders = []) { - Assert::range($limit, 1, 1000); + $params = array_merge([ + 'limit' => 100, + 'skip' => 0, + ], $params); - $params = [ - 'limit' => $limit, - 'skip' => $skip, - ]; + if (isset($params['limit'])) { + Assert::range($params['limit'], 1, 1000, 'Limit must be between 1 and 1000'); + } + + if (isset($params['skip'])) { + Assert::greaterThanEq($params['skip'], 0, 'Skip must be non-negative'); + } + + if (isset($params['state'])) { + Assert::oneOf($params['state'], ['active', 'unverified', 'disabled'], + 'State must be one of: active, unverified, disabled'); + } + + if (isset($params['sort'])) { + Assert::oneOf($params['sort'], ['name', 'name:asc', 'name:desc'], + 'Sort must be one of: name, name:asc, name:desc'); + } + + $params = array_filter($params, function ($value) { + return !is_null($value) && $value !== ''; + }); $response = $this->httpGet('/v3/domains', $params, $requestHeaders); diff --git a/src/Api/DomainV4.php b/src/Api/DomainV4.php index 9b06cefc..d43acb4e 100644 --- a/src/Api/DomainV4.php +++ b/src/Api/DomainV4.php @@ -42,20 +42,40 @@ class DomainV4 extends HttpApi /** * Returns a list of domains on the account. - * @param int $limit - * @param int $skip - * @param array $requestHeaders + * @link https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/domains/get-v4-domains#domains/get-v4-domains/request + * @param array $params + * @param array $requestHeaders * @return IndexResponse|array * @throws ClientExceptionInterface */ - public function index(int $limit = 100, int $skip = 0, array $requestHeaders = []) + public function index(array $params = [], array $requestHeaders = []) { - Assert::range($limit, 1, 1000); + $params = array_merge([ + 'limit' => 100, + 'skip' => 0, + ], $params); - $params = [ - 'limit' => $limit, - 'skip' => $skip, - ]; + if (isset($params['limit'])) { + Assert::range($params['limit'], 1, 1000, 'Limit must be between 1 and 1000'); + } + + if (isset($params['skip'])) { + Assert::greaterThanEq($params['skip'], 0, 'Skip must be non-negative'); + } + + if (isset($params['state'])) { + Assert::oneOf($params['state'], ['active', 'unverified', 'disabled'], + 'State must be one of: active, unverified, disabled'); + } + + if (isset($params['sort'])) { + Assert::oneOf($params['sort'], ['name', 'name:asc', 'name:desc'], + 'Sort must be one of: name, name:asc, name:desc'); + } + + $params = array_filter($params, function ($value) { + return !is_null($value) && $value !== ''; + }); $response = $this->httpGet('/v4/domains', $params, $requestHeaders);