Several important fixes
This commit is contained in:
parent
ec3bd1b293
commit
02a45d8272
@ -94,7 +94,17 @@ class Client
|
|||||||
if ($arrayOfObjects) {
|
if ($arrayOfObjects) {
|
||||||
return new ListResponse($responseType, $data);
|
return new ListResponse($responseType, $data);
|
||||||
} else {
|
} else {
|
||||||
return new $responseType($data);
|
$obj = Serializer::deserialize($data, $responseType, Serializer::S_ARRAY);
|
||||||
|
|
||||||
|
if ($response->getStatusCode() >= 400
|
||||||
|
&& method_exists($obj, 'setErrors')
|
||||||
|
&& method_exists($obj, 'getErrors')
|
||||||
|
&& count(call_user_func([$obj, 'getErrors'])) == 0
|
||||||
|
) {
|
||||||
|
call_user_func_array([$obj, 'setErrors'], [['Status Code ' . $response->getStatusCode()]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $obj;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new InvalidJsonException('Received invalid JSON', 1);
|
throw new InvalidJsonException('Received invalid JSON', 1);
|
||||||
@ -251,7 +261,7 @@ class Client
|
|||||||
HttpClient::METHOD_PUT,
|
HttpClient::METHOD_PUT,
|
||||||
$request,
|
$request,
|
||||||
static::getResponseClass(self::ERROR_ONLY_RESPONSE),
|
static::getResponseClass(self::ERROR_ONLY_RESPONSE),
|
||||||
true
|
Serializer::S_JSON
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ class HttpClient
|
|||||||
*/
|
*/
|
||||||
private function validateRequest($class)
|
private function validateRequest($class)
|
||||||
{
|
{
|
||||||
if (method_exists($class, 'validate')) {
|
if (!is_string($class) && method_exists($class, 'validate')) {
|
||||||
$errors = $class->validate();
|
$errors = $class->validate();
|
||||||
} else {
|
} else {
|
||||||
$validator = Validation::createValidatorBuilder()
|
$validator = Validation::createValidatorBuilder()
|
||||||
@ -213,7 +213,7 @@ class HttpClient
|
|||||||
$errors = $validator->validate($class);
|
$errors = $validator->validate($class);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((is_object($errors) && $errors->count() > 0) || is_string($errors)) {
|
if ((is_object($errors) && call_user_func([$errors, 'count']) > 0) || is_string($errors)) {
|
||||||
$message = (string) $errors;
|
$message = (string) $errors;
|
||||||
throw new InvalidArgumentException($message);
|
throw new InvalidArgumentException($message);
|
||||||
}
|
}
|
||||||
|
@ -73,17 +73,17 @@ class ChatLastMessage
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return \DateTime
|
||||||
*/
|
*/
|
||||||
public function getTime(): string
|
public function getTime(): \DateTime
|
||||||
{
|
{
|
||||||
return $this->time;
|
return $this->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $time
|
* @param \DateTime $time
|
||||||
*/
|
*/
|
||||||
public function setTime(string $time)
|
public function setTime(\DateTime $time)
|
||||||
{
|
{
|
||||||
$this->time = $time;
|
$this->time = $time;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@ namespace RetailCrm\Mg\Bot\Model\Request;
|
|||||||
use JMS\Serializer\Annotation\Accessor;
|
use JMS\Serializer\Annotation\Accessor;
|
||||||
use JMS\Serializer\Annotation\SkipWhenEmpty;
|
use JMS\Serializer\Annotation\SkipWhenEmpty;
|
||||||
use JMS\Serializer\Annotation\Type;
|
use JMS\Serializer\Annotation\Type;
|
||||||
|
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageOrder;
|
||||||
|
use RetailCrm\Mg\Bot\Model\Entity\Message\MessageProduct;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
use RetailCrm\Mg\Bot\Model\Entity\Order;
|
use RetailCrm\Mg\Bot\Model\Entity\Order;
|
||||||
use RetailCrm\Mg\Bot\Model\Entity\Product;
|
use RetailCrm\Mg\Bot\Model\Entity\Product;
|
||||||
@ -52,7 +54,7 @@ class MessageSendRequest
|
|||||||
private $content;
|
private $content;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Product $product
|
* @var MessageProduct $product
|
||||||
*
|
*
|
||||||
* @Type("Product")
|
* @Type("Product")
|
||||||
* @Accessor(getter="getProduct",setter="setProduct")
|
* @Accessor(getter="getProduct",setter="setProduct")
|
||||||
@ -61,7 +63,7 @@ class MessageSendRequest
|
|||||||
private $product;
|
private $product;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Order $order
|
* @var MessageOrder $order
|
||||||
*
|
*
|
||||||
* @Type("Order")
|
* @Type("Order")
|
||||||
* @Accessor(getter="getOrder",setter="setOrder")
|
* @Accessor(getter="getOrder",setter="setOrder")
|
||||||
@ -174,7 +176,7 @@ class MessageSendRequest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Product
|
* @return MessageProduct
|
||||||
*/
|
*/
|
||||||
public function getProduct()
|
public function getProduct()
|
||||||
{
|
{
|
||||||
@ -182,15 +184,15 @@ class MessageSendRequest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Product $product
|
* @param MessageProduct $product
|
||||||
*/
|
*/
|
||||||
public function setProduct(Product $product)
|
public function setProduct(MessageProduct $product)
|
||||||
{
|
{
|
||||||
$this->product = $product;
|
$this->product = $product;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Order
|
* @return MessageOrder
|
||||||
*/
|
*/
|
||||||
public function getOrder()
|
public function getOrder()
|
||||||
{
|
{
|
||||||
@ -198,9 +200,9 @@ class MessageSendRequest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Order $order
|
* @param MessageOrder $order
|
||||||
*/
|
*/
|
||||||
public function setOrder(Order $order)
|
public function setOrder(MessageOrder $order)
|
||||||
{
|
{
|
||||||
$this->order = $order;
|
$this->order = $order;
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ trait CommonFields
|
|||||||
*/
|
*/
|
||||||
public function getErrors(): array
|
public function getErrors(): array
|
||||||
{
|
{
|
||||||
return $this->errors;
|
return is_null($this->errors) ? [] : $this->errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,6 +59,6 @@ trait CommonFields
|
|||||||
*/
|
*/
|
||||||
public function isSuccessful()
|
public function isSuccessful()
|
||||||
{
|
{
|
||||||
return (bool) empty($this->getErrors());
|
return empty($this->errors);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,8 @@ class ListResponse implements \Iterator, \ArrayAccess, \Countable {
|
|||||||
/**
|
/**
|
||||||
* ListResponse constructor.
|
* ListResponse constructor.
|
||||||
*
|
*
|
||||||
* @param $responseType
|
* @param string $responseType
|
||||||
* @param $data
|
* @param array $data
|
||||||
*/
|
*/
|
||||||
public function __construct($responseType, $data)
|
public function __construct($responseType, $data)
|
||||||
{
|
{
|
||||||
@ -149,7 +149,7 @@ class ListResponse implements \Iterator, \ArrayAccess, \Countable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $name
|
* @param mixed $name
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
* @internal
|
* @internal
|
||||||
|
@ -62,8 +62,8 @@ class Serializer
|
|||||||
/**
|
/**
|
||||||
* Deserialize given array or JSON to object
|
* Deserialize given array or JSON to object
|
||||||
*
|
*
|
||||||
* @param $data
|
* @param mixed $data
|
||||||
* @param $entityType
|
* @param string self::normalizeNamespace($entityType)
|
||||||
* @param string $from
|
* @param string $from
|
||||||
*
|
*
|
||||||
* @return array|object|null
|
* @return array|object|null
|
||||||
@ -76,10 +76,10 @@ class Serializer
|
|||||||
|
|
||||||
switch ($from) {
|
switch ($from) {
|
||||||
case self::S_ARRAY:
|
case self::S_ARRAY:
|
||||||
$deserialized = $serializer->fromArray(array_filter($data), $entityType, $context);
|
$deserialized = $serializer->fromArray(array_filter($data), self::normalizeNamespace($entityType), $context);
|
||||||
break;
|
break;
|
||||||
case self::S_JSON:
|
case self::S_JSON:
|
||||||
$deserialized = $serializer->deserialize($data, $entityType, $from, $context);
|
$deserialized = $serializer->deserialize($data, self::normalizeNamespace($entityType), $from, $context);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,4 +103,18 @@ class Serializer
|
|||||||
|
|
||||||
return $context;
|
return $context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $namespace
|
||||||
|
*
|
||||||
|
* @return bool|string
|
||||||
|
*/
|
||||||
|
private static function normalizeNamespace(string $namespace)
|
||||||
|
{
|
||||||
|
if (substr($namespace, 0, 1) == '\\') {
|
||||||
|
return substr($namespace, 1);
|
||||||
|
} else {
|
||||||
|
return $namespace;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ class CommandsTest extends TestCase
|
|||||||
$response = $client->commandEdit($request);
|
$response = $client->commandEdit($request);
|
||||||
|
|
||||||
self::assertTrue($response instanceof ErrorOnlyResponse);
|
self::assertTrue($response instanceof ErrorOnlyResponse);
|
||||||
self::assertTrue(!$response->isError());
|
self::assertTrue($response->isSuccessful());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -108,6 +108,6 @@ class CommandsTest extends TestCase
|
|||||||
|
|
||||||
$response = $client->commandDelete("show_payment_types");
|
$response = $client->commandDelete("show_payment_types");
|
||||||
|
|
||||||
self::assertTrue($response->isError() == false);
|
self::assertTrue($response->isSuccessful() == true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ class MessagesTest extends TestCase
|
|||||||
|
|
||||||
$response = $client->messageSend($request);
|
$response = $client->messageSend($request);
|
||||||
|
|
||||||
self::assertTrue($response->isError());
|
self::assertTrue(!$response->isSuccessful());
|
||||||
self::assertEquals(1, count($response->getErrors()));
|
self::assertEquals(1, count($response->getErrors()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user