diff --git a/src/Api/MailingList/Member.php b/src/Api/MailingList/Member.php index 742687b..5968c9e 100644 --- a/src/Api/MailingList/Member.php +++ b/src/Api/MailingList/Member.php @@ -100,7 +100,7 @@ class Member extends HttpApi $params = [ 'address' => $address, 'name' => $name, - 'vars' => $vars, + 'vars' => \json_encode($vars), 'subscribed' => $subscribed ? 'yes' : 'no', 'upsert' => $upsert ? 'yes' : 'no', ]; @@ -144,19 +144,21 @@ class Member extends HttpApi Assert::isArray($data); - foreach ($data as $field => $value) { + foreach ($data as $field => &$value) { switch ($field) { case 'address': Assert::stringNotEmpty($value); break; + case 'vars': + if (is_array($value)) { + $value = json_encode($value); + } + // We should assert that "vars"'s $value is a string. + // no break case 'name': Assert::string($value); - break; - case 'vars': - Assert::isArray($value); - break; case 'subscribed': Assert::oneOf($value, ['yes', 'no']); @@ -195,14 +197,16 @@ class Member extends HttpApi foreach ($parameters as $field => $value) { switch ($field) { + case 'vars': + if (is_array($value)) { + $value = json_encode($value); + } + // We should assert that "vars"'s $value is a string. + // no break case 'address': case 'name': Assert::stringNotEmpty($value); - break; - case 'vars': - Assert::isArray($value); - break; case 'subscribed': Assert::oneOf($value, ['yes', 'no']); diff --git a/src/Api/Route.php b/src/Api/Route.php index 859a6c2..8081a2c 100644 --- a/src/Api/Route.php +++ b/src/Api/Route.php @@ -80,7 +80,7 @@ class Route extends HttpApi Assert::isArray($actions); $params = [ - 'priority' => $priority, + 'priority' => (string) $priority, 'expression' => $expression, 'action' => $actions, 'description' => $description, @@ -129,7 +129,7 @@ class Route extends HttpApi } if (!empty($priority)) { - $params['priority'] = $priority; + $params['priority'] = (string) $priority; } $response = $this->httpPut(sprintf('/v3/routes/%s', $routeId), $params); diff --git a/src/HttpClient/RequestBuilder.php b/src/HttpClient/RequestBuilder.php index ed0c1d4..827ad5f 100644 --- a/src/HttpClient/RequestBuilder.php +++ b/src/HttpClient/RequestBuilder.php @@ -53,7 +53,7 @@ class RequestBuilder public function create(string $method, string $uri, array $headers = [], $body = null): RequestInterface { if (!is_array($body)) { - $stream = $this->getStreamFactory()->createStream($body); + $stream = $this->getStreamFactory()->createStream((string) $body); return $this->createRequest($method, $uri, $headers, $stream); } diff --git a/src/Mailgun.php b/src/Mailgun.php index 75a2362..ae12b7a 100644 --- a/src/Mailgun.php +++ b/src/Mailgun.php @@ -23,7 +23,7 @@ use Psr\Http\Client\ClientInterface; /** * This class is the base class for the Mailgun SDK. */ -final class Mailgun +class Mailgun { /** * @var string|null diff --git a/tests/Api/MailingList/MemberTest.php b/tests/Api/MailingList/MemberTest.php index 9157468..8f5f3a6 100644 --- a/tests/Api/MailingList/MemberTest.php +++ b/tests/Api/MailingList/MemberTest.php @@ -70,7 +70,7 @@ class MemberTest extends TestCase $data = [ 'address' => 'foo@example.com', 'name' => 'Foo', - 'vars' => [], + 'vars' => \json_encode([]), 'subscribed' => 'yes', 'upsert' => 'no', ]; @@ -162,9 +162,9 @@ class MemberTest extends TestCase public function testUpdate() { $data = [ - 'vars' => [ + 'vars' => \json_encode([ 'foo' => 'bar', - ], + ]), 'subscribed' => 'yes', ]; @@ -182,7 +182,7 @@ class MemberTest extends TestCase $this->expectException(InvalidArgumentException::class); $data = [ - 'vars' => 'foo=bar', + 'vars' => 4711, 'subscribed' => 'yes', ]; diff --git a/tests/Api/RouteTest.php b/tests/Api/RouteTest.php index b5e547f..b91d18a 100644 --- a/tests/Api/RouteTest.php +++ b/tests/Api/RouteTest.php @@ -63,7 +63,7 @@ class RouteTest extends TestCase 'expression' => 'catch_all()', 'action' => 'forward("mailbox@myapp.com")', 'description' => 'example', - 'priority' => 100, + 'priority' => '100', ]); $api = $this->getApiInstance();