mirror of
https://github.com/retailcrm/mailgun-php.git
synced 2024-11-22 20:46:03 +03:00
parent
20b9fbfe5d
commit
0da5f410a9
@ -10,15 +10,15 @@
|
|||||||
namespace Mailgun\Api;
|
namespace Mailgun\Api;
|
||||||
|
|
||||||
use Mailgun\Assert;
|
use Mailgun\Assert;
|
||||||
|
use Mailgun\Resource\Api\Domain\ConnectionResponse;
|
||||||
use Mailgun\Resource\Api\Domain\CreateCredentialResponse;
|
use Mailgun\Resource\Api\Domain\CreateCredentialResponse;
|
||||||
use Mailgun\Resource\Api\Domain\CreateResponse;
|
use Mailgun\Resource\Api\Domain\CreateResponse;
|
||||||
|
use Mailgun\Resource\Api\Domain\CredentialResponse;
|
||||||
use Mailgun\Resource\Api\Domain\DeleteCredentialResponse;
|
use Mailgun\Resource\Api\Domain\DeleteCredentialResponse;
|
||||||
use Mailgun\Resource\Api\Domain\DeleteResponse;
|
use Mailgun\Resource\Api\Domain\DeleteResponse;
|
||||||
use Mailgun\Resource\Api\Domain\ShowResponse;
|
|
||||||
use Mailgun\Resource\Api\Domain\CredentialResponse;
|
|
||||||
use Mailgun\Resource\Api\Domain\ConnectionResponse;
|
|
||||||
use Mailgun\Resource\Api\Domain\UpdateConnectionResponse;
|
|
||||||
use Mailgun\Resource\Api\Domain\IndexResponse;
|
use Mailgun\Resource\Api\Domain\IndexResponse;
|
||||||
|
use Mailgun\Resource\Api\Domain\ShowResponse;
|
||||||
|
use Mailgun\Resource\Api\Domain\UpdateConnectionResponse;
|
||||||
use Mailgun\Resource\Api\Domain\UpdateCredentialResponse;
|
use Mailgun\Resource\Api\Domain\UpdateCredentialResponse;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ class Domain extends HttpApi
|
|||||||
|
|
||||||
$response = $this->httpGet('/v3/domains', $params);
|
$response = $this->httpGet('/v3/domains', $params);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, IndexResponse::class);
|
return $this->deserializer->deserialize($response, IndexResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,7 +65,7 @@ class Domain extends HttpApi
|
|||||||
|
|
||||||
$response = $this->httpGet(sprintf('/v3/domains/%s', $domain));
|
$response = $this->httpGet(sprintf('/v3/domains/%s', $domain));
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, ShowResponse::class);
|
return $this->deserializer->deserialize($response, ShowResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,7 +95,7 @@ class Domain extends HttpApi
|
|||||||
'wildcard' => $wildcard,
|
'wildcard' => $wildcard,
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->postMultipart('/v3/domains', $params);
|
$response = $this->httpPostMultipart('/v3/domains', $params);
|
||||||
|
|
||||||
return $this->safeDeserialize($response, CreateResponse::class);
|
return $this->safeDeserialize($response, CreateResponse::class);
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ class Domain extends HttpApi
|
|||||||
|
|
||||||
$response = $this->httpDelete(sprintf('/v3/domains/%s', $domain));
|
$response = $this->httpDelete(sprintf('/v3/domains/%s', $domain));
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, DeleteResponse::class);
|
return $this->deserializer->deserialize($response, DeleteResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -163,9 +163,9 @@ class Domain extends HttpApi
|
|||||||
'password' => $password,
|
'password' => $password,
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->postMultipart(sprintf('/v3/domains/%s/credentials', $domain), $params);
|
$response = $this->httpPostMultipart(sprintf('/v3/domains/%s/credentials', $domain), $params);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, CreateCredentialResponse::class);
|
return $this->deserializer->deserialize($response, CreateCredentialResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -188,7 +188,7 @@ class Domain extends HttpApi
|
|||||||
'password' => $pass,
|
'password' => $pass,
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->putMultipart(
|
$response = $this->httpPutMultipart(
|
||||||
sprintf(
|
sprintf(
|
||||||
'/v3/domains/%s/credentials/%s',
|
'/v3/domains/%s/credentials/%s',
|
||||||
$domain,
|
$domain,
|
||||||
@ -197,7 +197,7 @@ class Domain extends HttpApi
|
|||||||
$params
|
$params
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, UpdateCredentialResponse::class);
|
return $this->deserializer->deserialize($response, UpdateCredentialResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -213,7 +213,7 @@ class Domain extends HttpApi
|
|||||||
Assert::stringNotEmpty($domain);
|
Assert::stringNotEmpty($domain);
|
||||||
Assert::stringNotEmpty($login);
|
Assert::stringNotEmpty($login);
|
||||||
|
|
||||||
$response = $this->delete(
|
$response = $this->httpDelete(
|
||||||
sprintf(
|
sprintf(
|
||||||
'/v3/domains/%s/credentials/%s',
|
'/v3/domains/%s/credentials/%s',
|
||||||
$domain,
|
$domain,
|
||||||
@ -221,7 +221,7 @@ class Domain extends HttpApi
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, DeleteCredentialResponse::class);
|
return $this->deserializer->deserialize($response, DeleteCredentialResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -237,7 +237,7 @@ class Domain extends HttpApi
|
|||||||
|
|
||||||
$response = $this->httpGet(sprintf('/v3/domains/%s/connection', $domain));
|
$response = $this->httpGet(sprintf('/v3/domains/%s/connection', $domain));
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, ConnectionResponse::class);
|
return $this->deserializer->deserialize($response, ConnectionResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -266,8 +266,8 @@ class Domain extends HttpApi
|
|||||||
$params['skip_verification'] = $noVerify ? 'true' : 'false';
|
$params['skip_verification'] = $noVerify ? 'true' : 'false';
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->putMultipart(sprintf('/v3/domains/%s/connection', $domain), $params);
|
$response = $this->httpPutMultipart(sprintf('/v3/domains/%s/connection', $domain), $params);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, UpdateConnectionResponse::class);
|
return $this->deserializer->deserialize($response, UpdateConnectionResponse::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
namespace Mailgun\Api;
|
namespace Mailgun\Api;
|
||||||
|
|
||||||
use Http\Client\Common\HttpMethodsClient;
|
use Http\Client\Common\HttpMethodsClient;
|
||||||
use Http\Client\HttpClient;
|
|
||||||
use Http\Client\Exception as HttplugException;
|
use Http\Client\Exception as HttplugException;
|
||||||
|
use Http\Client\HttpClient;
|
||||||
use Http\Discovery\MessageFactoryDiscovery;
|
use Http\Discovery\MessageFactoryDiscovery;
|
||||||
use Http\Discovery\StreamFactoryDiscovery;
|
use Http\Discovery\StreamFactoryDiscovery;
|
||||||
use Http\Message\RequestFactory;
|
|
||||||
use Http\Message\MultipartStream\MultipartStreamBuilder;
|
use Http\Message\MultipartStream\MultipartStreamBuilder;
|
||||||
|
use Http\Message\RequestFactory;
|
||||||
use Mailgun\Assert;
|
use Mailgun\Assert;
|
||||||
|
use Mailgun\Deserializer\ResponseDeserializer;
|
||||||
use Mailgun\Exception\HttpServerException;
|
use Mailgun\Exception\HttpServerException;
|
||||||
use Mailgun\Serializer\ResponseDeserializer;
|
use Mailgun\Resource\Api\ErrorResponse;
|
||||||
use Mailgun\Resource\Api\SimpleResponse;
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,10 +37,10 @@ abstract class HttpApi
|
|||||||
* @param RequestFactory $requestFactory
|
* @param RequestFactory $requestFactory
|
||||||
* @param ResponseDeserializer $serializer
|
* @param ResponseDeserializer $serializer
|
||||||
*/
|
*/
|
||||||
public function __construct(HttpClient $httpClient, RequestFactory $requestFactory, ResponseDeserializer $serializer)
|
public function __construct(HttpClient $httpClient, RequestFactory $requestFactory, ResponseDeserializer $deserializer)
|
||||||
{
|
{
|
||||||
$this->httpClient = new HttpMethodsClient($httpClient, $requestFactory);
|
$this->httpClient = new HttpMethodsClient($httpClient, $requestFactory);
|
||||||
$this->serializer = $serializer;
|
$this->deserializer = $deserializer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,9 +56,9 @@ abstract class HttpApi
|
|||||||
protected function safeDeserialize(ResponseInterface $response, $className)
|
protected function safeDeserialize(ResponseInterface $response, $className)
|
||||||
{
|
{
|
||||||
if ($response->getStatusCode() !== 200) {
|
if ($response->getStatusCode() !== 200) {
|
||||||
return $this->serializer->deserialize($response, SimpleResponse::class);
|
return $this->deserializer->deserialize($response, ErrorResponse::class);
|
||||||
} else {
|
} else {
|
||||||
return $this->serializer->deserialize($response, $className);
|
return $this->deserializer->deserialize($response, $className);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ abstract class HttpApi
|
|||||||
*
|
*
|
||||||
* @return ResponseInterface
|
* @return ResponseInterface
|
||||||
*/
|
*/
|
||||||
protected function postMultipart($path, array $parameters = [], array $requestHeaders = [])
|
protected function httpPostMultipart($path, array $parameters = [], array $requestHeaders = [])
|
||||||
{
|
{
|
||||||
return $this->doMultipart('POST', $path, $parameters, $requestHeaders);
|
return $this->doMultipart('POST', $path, $parameters, $requestHeaders);
|
||||||
}
|
}
|
||||||
@ -163,7 +163,7 @@ abstract class HttpApi
|
|||||||
*
|
*
|
||||||
* @return ResponseInterface
|
* @return ResponseInterface
|
||||||
*/
|
*/
|
||||||
protected function putMultipart($path, array $parameters = [], array $requestHeaders = [])
|
protected function httpPutMultipart($path, array $parameters = [], array $requestHeaders = [])
|
||||||
{
|
{
|
||||||
return $this->doMultipart('PUT', $path, $parameters, $requestHeaders);
|
return $this->doMultipart('PUT', $path, $parameters, $requestHeaders);
|
||||||
}
|
}
|
||||||
@ -197,7 +197,7 @@ abstract class HttpApi
|
|||||||
*
|
*
|
||||||
* @return ResponseInterface
|
* @return ResponseInterface
|
||||||
*/
|
*/
|
||||||
protected function deleteMultipart($path, array $parameters = [], array $requestHeaders = [])
|
protected function httpDeleteMultipart($path, array $parameters = [], array $requestHeaders = [])
|
||||||
{
|
{
|
||||||
return $this->doMultipart('DELETE', $path, $parameters, $requestHeaders);
|
return $this->doMultipart('DELETE', $path, $parameters, $requestHeaders);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ class Stats extends HttpApi
|
|||||||
|
|
||||||
$response = $this->httpGet(sprintf('/v3/%s/stats/total', rawurlencode($domain)), $params);
|
$response = $this->httpGet(sprintf('/v3/%s/stats/total', rawurlencode($domain)), $params);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, TotalResponse::class);
|
return $this->deserializer->deserialize($response, TotalResponse::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,6 +40,6 @@ class Stats extends HttpApi
|
|||||||
|
|
||||||
$response = $this->httpGet(sprintf('/v3/%s/stats', rawurlencode($domain)), $params);
|
$response = $this->httpGet(sprintf('/v3/%s/stats', rawurlencode($domain)), $params);
|
||||||
|
|
||||||
return $this->serializer->deserialize($response, AllResponse::class);
|
return $this->deserializer->deserialize($response, AllResponse::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Mailgun\Serializer;
|
namespace Mailgun\Deserializer;
|
||||||
|
|
||||||
use Mailgun\Exception\SerializeException;
|
use Mailgun\Exception\DeserializeException;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,7 +10,7 @@ use Psr\Http\Message\ResponseInterface;
|
|||||||
*
|
*
|
||||||
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
||||||
*/
|
*/
|
||||||
class ArraySerializer implements ResponseDeserializer
|
class ArrayDeserializer implements ResponseDeserializer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param ResponseInterface $response
|
* @param ResponseInterface $response
|
||||||
@ -22,12 +22,12 @@ class ArraySerializer implements ResponseDeserializer
|
|||||||
{
|
{
|
||||||
$body = $response->getBody()->__toString();
|
$body = $response->getBody()->__toString();
|
||||||
if (strpos($response->getHeaderLine('Content-Type'), 'application/json') !== 0) {
|
if (strpos($response->getHeaderLine('Content-Type'), 'application/json') !== 0) {
|
||||||
throw new SerializeException('The ArraySerializer cannot deserialize response with Content-Type:'.$response->getHeaderLine('Content-Type'));
|
throw new DeserializeException('The ArrayDeserializer cannot deserialize response with Content-Type:'.$response->getHeaderLine('Content-Type'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$content = json_decode($body, true);
|
$content = json_decode($body, true);
|
||||||
if (JSON_ERROR_NONE !== json_last_error()) {
|
if (JSON_ERROR_NONE !== json_last_error()) {
|
||||||
throw new SerializeException(sprintf('Error (%d) when trying to json_decode response', json_last_error()));
|
throw new DeserializeException(sprintf('Error (%d) when trying to json_decode response', json_last_error()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $content;
|
return $content;
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Mailgun\Serializer;
|
namespace Mailgun\Deserializer;
|
||||||
|
|
||||||
use Mailgun\Exception\SerializeException;
|
use Mailgun\Exception\DeserializeException;
|
||||||
use Mailgun\Resource\ApiResponse;
|
use Mailgun\Resource\ApiResponse;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ use Psr\Http\Message\ResponseInterface;
|
|||||||
*
|
*
|
||||||
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
||||||
*/
|
*/
|
||||||
class ModelSerializer implements ResponseDeserializer
|
class ModelDeserializer implements ResponseDeserializer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param ResponseInterface $response
|
* @param ResponseInterface $response
|
||||||
@ -23,12 +23,12 @@ class ModelSerializer implements ResponseDeserializer
|
|||||||
{
|
{
|
||||||
$body = $response->getBody()->__toString();
|
$body = $response->getBody()->__toString();
|
||||||
if (strpos($response->getHeaderLine('Content-Type'), 'application/json') !== 0) {
|
if (strpos($response->getHeaderLine('Content-Type'), 'application/json') !== 0) {
|
||||||
throw new SerializeException('The ModelSerializer cannot deserialize response with Content-Type:'.$response->getHeaderLine('Content-Type'));
|
throw new DeserializeException('The ModelDeserializer cannot deserialize response with Content-Type:'.$response->getHeaderLine('Content-Type'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = json_decode($body, true);
|
$data = json_decode($body, true);
|
||||||
if (JSON_ERROR_NONE !== json_last_error()) {
|
if (JSON_ERROR_NONE !== json_last_error()) {
|
||||||
throw new SerializeException(sprintf('Error (%d) when trying to json_decode response', json_last_error()));
|
throw new DeserializeException(sprintf('Error (%d) when trying to json_decode response', json_last_error()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_subclass_of($class, ApiResponse::class)) {
|
if (is_subclass_of($class, ApiResponse::class)) {
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Mailgun\Serializer;
|
namespace Mailgun\Deserializer;
|
||||||
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ use Psr\Http\Message\ResponseInterface;
|
|||||||
*
|
*
|
||||||
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
||||||
*/
|
*/
|
||||||
class PSR7Serializer implements ResponseDeserializer
|
class PSR7Deserializer implements ResponseDeserializer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param ResponseInterface $response
|
* @param ResponseInterface $response
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Mailgun\Serializer;
|
namespace Mailgun\Deserializer;
|
||||||
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
9
src/Mailgun/Exception/DeserializeException.php
Normal file
9
src/Mailgun/Exception/DeserializeException.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Mailgun\Exception;
|
||||||
|
|
||||||
|
use Mailgun\Exception;
|
||||||
|
|
||||||
|
class DeserializeException extends \RuntimeException implements Exception
|
||||||
|
{
|
||||||
|
}
|
@ -1,9 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Mailgun\Exception;
|
|
||||||
|
|
||||||
use Mailgun\Exception;
|
|
||||||
|
|
||||||
class SerializeException extends \RuntimeException implements Exception
|
|
||||||
{
|
|
||||||
}
|
|
@ -19,8 +19,8 @@ use Mailgun\Lists\OptInHandler;
|
|||||||
use Mailgun\Messages\BatchMessage;
|
use Mailgun\Messages\BatchMessage;
|
||||||
use Mailgun\Messages\Exceptions;
|
use Mailgun\Messages\Exceptions;
|
||||||
use Mailgun\Messages\MessageBuilder;
|
use Mailgun\Messages\MessageBuilder;
|
||||||
use Mailgun\Serializer\ModelSerializer;
|
use Mailgun\Deserializer\ModelDeserializer;
|
||||||
use Mailgun\Serializer\ResponseDeserializer;
|
use Mailgun\Deserializer\ResponseDeserializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the base class for the Mailgun SDK.
|
* This class is the base class for the Mailgun SDK.
|
||||||
@ -47,7 +47,7 @@ class Mailgun
|
|||||||
/**
|
/**
|
||||||
* @var ResponseDeserializer
|
* @var ResponseDeserializer
|
||||||
*/
|
*/
|
||||||
private $serializer;
|
private $deserializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var RequestFactory
|
* @var RequestFactory
|
||||||
@ -58,14 +58,14 @@ class Mailgun
|
|||||||
* @param string|null $apiKey
|
* @param string|null $apiKey
|
||||||
* @param HttpClient|null $httpClient
|
* @param HttpClient|null $httpClient
|
||||||
* @param string $apiEndpoint
|
* @param string $apiEndpoint
|
||||||
* @param ResponseDeserializer|null $serializer
|
* @param ResponseDeserializer|null $deserializer
|
||||||
* @param HttpClientConfigurator|null $clientConfigurator
|
* @param HttpClientConfigurator|null $clientConfigurator
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
$apiKey = null,
|
$apiKey = null,
|
||||||
HttpClient $httpClient = null, /* Deprecated, will be removed in 3.0 */
|
HttpClient $httpClient = null, /* Deprecated, will be removed in 3.0 */
|
||||||
$apiEndpoint = 'api.mailgun.net', /* Deprecated, will be removed in 3.0 */
|
$apiEndpoint = 'api.mailgun.net', /* Deprecated, will be removed in 3.0 */
|
||||||
ResponseDeserializer $serializer = null,
|
ResponseDeserializer $deserializer = null,
|
||||||
HttpClientConfigurator $clientConfigurator = null
|
HttpClientConfigurator $clientConfigurator = null
|
||||||
) {
|
) {
|
||||||
$this->apiKey = $apiKey;
|
$this->apiKey = $apiKey;
|
||||||
@ -89,7 +89,7 @@ class Mailgun
|
|||||||
|
|
||||||
$this->httpClient = $clientConfigurator->createConfiguredClient();
|
$this->httpClient = $clientConfigurator->createConfiguredClient();
|
||||||
$this->requestFactory = MessageFactoryDiscovery::find();
|
$this->requestFactory = MessageFactoryDiscovery::find();
|
||||||
$this->serializer = $serializer ?: new ModelSerializer();
|
$this->deserializer = $deserializer ?: new ModelDeserializer();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -258,7 +258,7 @@ class Mailgun
|
|||||||
*/
|
*/
|
||||||
public function getStatsApi()
|
public function getStatsApi()
|
||||||
{
|
{
|
||||||
return new Api\Stats($this->httpClient, $this->requestFactory, $this->serializer);
|
return new Api\Stats($this->httpClient, $this->requestFactory, $this->deserializer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -266,6 +266,6 @@ class Mailgun
|
|||||||
*/
|
*/
|
||||||
public function getDomainApi()
|
public function getDomainApi()
|
||||||
{
|
{
|
||||||
return new Api\Domain($this->httpClient, $this->requestFactory, $this->serializer);
|
return new Api\Domain($this->httpClient, $this->requestFactory, $this->deserializer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ namespace Mailgun\Resource\Api\Domain;
|
|||||||
|
|
||||||
use Mailgun\Assert;
|
use Mailgun\Assert;
|
||||||
use Mailgun\Resource\ApiResponse;
|
use Mailgun\Resource\ApiResponse;
|
||||||
|
use Mailgun\Resource\Api\ErrorResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sean Johnson <sean@mailgun.com>
|
* @author Sean Johnson <sean@mailgun.com>
|
||||||
@ -34,16 +35,17 @@ final class CredentialResponse implements ApiResponse
|
|||||||
*/
|
*/
|
||||||
public static function create(array $data)
|
public static function create(array $data)
|
||||||
{
|
{
|
||||||
|
if (array_key_exists('items', $data) && array_key_exists('total_count', $data)) {
|
||||||
$items = [];
|
$items = [];
|
||||||
|
|
||||||
Assert::keyExists($data, 'total_count');
|
|
||||||
Assert::keyExists($data, 'items');
|
|
||||||
|
|
||||||
foreach ($data['items'] as $item) {
|
foreach ($data['items'] as $item) {
|
||||||
$items[] = CredentialResponseItem::create($item);
|
$items[] = CredentialResponseItem::create($item);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new self($data['total_count'], $items);
|
return new self($data['total_count'], $items);
|
||||||
|
} else {
|
||||||
|
return ErrorResponse::create($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +56,7 @@ final class CredentialResponse implements ApiResponse
|
|||||||
{
|
{
|
||||||
Assert::integer($totalCount);
|
Assert::integer($totalCount);
|
||||||
Assert::isArray($items);
|
Assert::isArray($items);
|
||||||
Assert::allIsInstanceOf($items, 'Mailgun\Resource\Api\Domain\Credential');
|
Assert::allIsInstanceOf($items, 'Mailgun\Resource\Api\Domain\CredentialResponseItem');
|
||||||
|
|
||||||
$this->totalCount = $totalCount;
|
$this->totalCount = $totalCount;
|
||||||
$this->items = $items;
|
$this->items = $items;
|
||||||
|
@ -14,6 +14,11 @@ final class DeleteCredentialResponse implements ApiResponse
|
|||||||
*/
|
*/
|
||||||
private $message;
|
private $message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var error
|
||||||
|
*/
|
||||||
|
private $error;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
@ -22,9 +27,10 @@ final class DeleteCredentialResponse implements ApiResponse
|
|||||||
/**
|
/**
|
||||||
* @param string $message
|
* @param string $message
|
||||||
*/
|
*/
|
||||||
private function __construct($message, $spec)
|
private function __construct($message, $error, $spec)
|
||||||
{
|
{
|
||||||
$this->message = $message;
|
$this->message = $message;
|
||||||
|
$this->error = $error;
|
||||||
$this->spec = $spec;
|
$this->spec = $spec;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +41,11 @@ final class DeleteCredentialResponse implements ApiResponse
|
|||||||
*/
|
*/
|
||||||
public static function create(array $data)
|
public static function create(array $data)
|
||||||
{
|
{
|
||||||
return new self($data['message'], $data['spec']);
|
return new self(
|
||||||
|
isset($data['message']) ? $data['message'] : null,
|
||||||
|
isset($data['error']) ? $data['error'] : null,
|
||||||
|
isset($data['spec']) ? $data['spec'] : null
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,6 +56,14 @@ final class DeleteCredentialResponse implements ApiResponse
|
|||||||
return $this->message;
|
return $this->message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getError()
|
||||||
|
{
|
||||||
|
return $this->error;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
@ -14,12 +14,18 @@ final class DeleteResponse implements ApiResponse
|
|||||||
*/
|
*/
|
||||||
private $message;
|
private $message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $error;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $message
|
* @param string $message
|
||||||
*/
|
*/
|
||||||
private function __construct($message)
|
private function __construct($message, $error)
|
||||||
{
|
{
|
||||||
$this->message = $message;
|
$this->message = $message;
|
||||||
|
$this->error = $error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +35,10 @@ final class DeleteResponse implements ApiResponse
|
|||||||
*/
|
*/
|
||||||
public static function create(array $data)
|
public static function create(array $data)
|
||||||
{
|
{
|
||||||
return new self($data['message']);
|
return new self(
|
||||||
|
isset($data['message']) ? $data['message'] : null,
|
||||||
|
isset($data['error']) ? $data['error'] : null
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,4 +48,12 @@ final class DeleteResponse implements ApiResponse
|
|||||||
{
|
{
|
||||||
return $this->message;
|
return $this->message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getError()
|
||||||
|
{
|
||||||
|
return $this->error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ final class IndexResponse implements ApiResponse
|
|||||||
{
|
{
|
||||||
Assert::integer($totalCount);
|
Assert::integer($totalCount);
|
||||||
Assert::isArray($items);
|
Assert::isArray($items);
|
||||||
Assert::allIsInstanceOf($items, 'Mailgun\Resource\Api\Domain\SimpleDomain');
|
Assert::allIsInstanceOf($items, 'Mailgun\Resource\Api\Domain\Domain');
|
||||||
|
|
||||||
$this->totalCount = $totalCount;
|
$this->totalCount = $totalCount;
|
||||||
$this->items = $items;
|
$this->items = $items;
|
||||||
|
62
src/Mailgun/Resource/Api/ErrorResponse.php
Normal file
62
src/Mailgun/Resource/Api/ErrorResponse.php
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2013-2016 Mailgun.
|
||||||
|
*
|
||||||
|
* This software may be modified and distributed under the terms
|
||||||
|
* of the MIT license. See the LICENSE file for details.
|
||||||
|
*/
|
||||||
|
namespace Mailgun\Resource\Api;
|
||||||
|
|
||||||
|
use Mailgun\Resource\ApiResponse;
|
||||||
|
|
||||||
|
final class ErrorResponse implements ApiResponse
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $error;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $error
|
||||||
|
*/
|
||||||
|
private function __construct($message, $error)
|
||||||
|
{
|
||||||
|
$this->message = $message;
|
||||||
|
$this->error = $error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array data
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function create(array $data)
|
||||||
|
{
|
||||||
|
return new self(
|
||||||
|
isset($data['message']) ? $data['message'] : null,
|
||||||
|
isset($data['error']) ? $data['error'] : null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMessage()
|
||||||
|
{
|
||||||
|
return $this->message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getError()
|
||||||
|
{
|
||||||
|
return $this->error;
|
||||||
|
}
|
||||||
|
}
|
@ -51,7 +51,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
->setMethods(['createRequest', 'createResponse'])
|
->setMethods(['createRequest', 'createResponse'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
$serializer = $this->getMockBuilder('Mailgun\Serializer\ResponseDeserializer')
|
$deserializer = $this->getMockBuilder('Mailgun\Deserializer\ResponseDeserializer')
|
||||||
->setMethods(['deserialize'])
|
->setMethods(['deserialize'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
'httPut', 'putMultipart',
|
'httPut', 'putMultipart',
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
->setConstructorArgs([$httpClient, $requestClient, $serializer])
|
->setConstructorArgs([$httpClient, $requestClient, $deserializer])
|
||||||
->getMock();
|
->getMock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,16 +10,17 @@
|
|||||||
namespace Mailgun\Tests\Integration;
|
namespace Mailgun\Tests\Integration;
|
||||||
|
|
||||||
use Mailgun\Api\Domain;
|
use Mailgun\Api\Domain;
|
||||||
|
use Mailgun\Resource\Api\ErrorResponse;
|
||||||
use Mailgun\Resource\Api\Domain\CreateCredentialResponse;
|
use Mailgun\Resource\Api\Domain\CreateCredentialResponse;
|
||||||
use Mailgun\Resource\Api\Domain\CreateResponse;
|
|
||||||
use Mailgun\Resource\Api\Domain\DeleteCredentialResponse;
|
use Mailgun\Resource\Api\Domain\DeleteCredentialResponse;
|
||||||
use Mailgun\Resource\Api\Domain\DeleteResponse;
|
use Mailgun\Resource\Api\Domain\DeleteResponse;
|
||||||
use Mailgun\Resource\Api\Domain\UpdateCredentialResponse;
|
use Mailgun\Resource\Api\Domain\Domain as DomainObject;
|
||||||
use Mailgun\Tests\Api\TestCase;
|
|
||||||
use Mailgun\Resource\Api\Domain\CredentialResponseItem;
|
use Mailgun\Resource\Api\Domain\CredentialResponseItem;
|
||||||
use Mailgun\Resource\Api\Domain\CredentialResponse;
|
use Mailgun\Resource\Api\Domain\CredentialResponse;
|
||||||
use Mailgun\Resource\Api\Domain\ConnectionResponse;
|
use Mailgun\Resource\Api\Domain\ConnectionResponse;
|
||||||
use Mailgun\Resource\Api\Domain\UpdateConnectionResponse;
|
use Mailgun\Resource\Api\Domain\UpdateConnectionResponse;
|
||||||
|
use Mailgun\Resource\Api\Domain\UpdateCredentialResponse;
|
||||||
|
use Mailgun\Tests\Api\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sean Johnson <sean@mailgun.com>
|
* @author Sean Johnson <sean@mailgun.com>
|
||||||
@ -28,7 +29,7 @@ class DomainApiTest extends TestCase
|
|||||||
{
|
{
|
||||||
protected function getApiClass()
|
protected function getApiClass()
|
||||||
{
|
{
|
||||||
return 'Mailgun\Api\Domains';
|
return 'Mailgun\Api\Domain';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,7 +48,7 @@ class DomainApiTest extends TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->assertContainsOnlyInstancesOf(Domain::class, $domainList->getDomains());
|
$this->assertContainsOnlyInstancesOf(DomainObject::class, $domainList->getDomains());
|
||||||
$this->assertTrue($found);
|
$this->assertTrue($found);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +71,7 @@ class DomainApiTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Performs `DELETE /v3/domains/<domain>` on a non-existent domain.
|
* Performs `DELETE /v3/domains/<domain>` on a non-existent domain.
|
||||||
*/
|
*/
|
||||||
public function testRemoveDomain_NoExist()
|
public function testRemoveDomainNoExist()
|
||||||
{
|
{
|
||||||
$mg = $this->getMailgunClient();
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
@ -104,7 +105,7 @@ class DomainApiTest extends TestCase
|
|||||||
* Performs `POST /v3/domains` to attempt to create a domain with duplicate
|
* Performs `POST /v3/domains` to attempt to create a domain with duplicate
|
||||||
* values.
|
* values.
|
||||||
*/
|
*/
|
||||||
public function testDomainCreate_DuplicateValues()
|
public function testDomainCreateDuplicateValues()
|
||||||
{
|
{
|
||||||
$mg = $this->getMailgunClient();
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ class DomainApiTest extends TestCase
|
|||||||
false // wildcard domain?
|
false // wildcard domain?
|
||||||
);
|
);
|
||||||
$this->assertNotNull($domain);
|
$this->assertNotNull($domain);
|
||||||
$this->assertInstanceOf(CreateResponse::class, $domain);
|
$this->assertInstanceOf(ErrorResponse::class, $domain);
|
||||||
$this->assertEquals('This domain name is already taken', $domain->getMessage());
|
$this->assertEquals('This domain name is already taken', $domain->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +147,7 @@ class DomainApiTest extends TestCase
|
|||||||
'Password.01!'
|
'Password.01!'
|
||||||
);
|
);
|
||||||
$this->assertNotNull($ret);
|
$this->assertNotNull($ret);
|
||||||
$this->assertInstanceOf(CreateResponse::class, $ret);
|
$this->assertInstanceOf(CreateCredentialResponse::class, $ret);
|
||||||
$this->assertEquals('Created 1 credentials pair(s)', $ret->getMessage());
|
$this->assertEquals('Created 1 credentials pair(s)', $ret->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,7 +221,7 @@ class DomainApiTest extends TestCase
|
|||||||
|
|
||||||
$ret = $mg->getDomainApi()->credentials('mailgun.org');
|
$ret = $mg->getDomainApi()->credentials('mailgun.org');
|
||||||
$this->assertNotNull($ret);
|
$this->assertNotNull($ret);
|
||||||
$this->assertInstanceOf(CredentialResponse::class, $ret);
|
$this->assertInstanceOf(ErrorResponse::class, $ret);
|
||||||
$this->assertEquals('Domain not found: mailgun.org', $ret->getMessage());
|
$this->assertEquals('Domain not found: mailgun.org', $ret->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user