restructurized models list, ExpressionLanguage for property exclusion, tests for excluded properties and inline JSON
This commit is contained in:
parent
95b7c27e6c
commit
c378ad5385
@ -31,7 +31,8 @@
|
|||||||
"php-http/httplug": "^2.2",
|
"php-http/httplug": "^2.2",
|
||||||
"php-http/message-factory": "^1.0",
|
"php-http/message-factory": "^1.0",
|
||||||
"php-http/discovery": "^1.12",
|
"php-http/discovery": "^1.12",
|
||||||
"php-http/multipart-stream-builder": "^1.1"
|
"php-http/multipart-stream-builder": "^1.1",
|
||||||
|
"symfony/expression-language": "^5.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.3",
|
"phpunit/phpunit": "^9.3",
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<rule ref="rulesets/naming.xml">
|
<rule ref="rulesets/naming.xml">
|
||||||
<exclude name="ShortVariable" />
|
<exclude name="ShortVariable" />
|
||||||
<exclude name="LongVariable" />
|
<exclude name="LongVariable" />
|
||||||
|
<exclude name="LongClassName" />
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="rulesets/cleancode.xml">
|
<rule ref="rulesets/cleancode.xml">
|
||||||
<exclude name="StaticAccess" />
|
<exclude name="StaticAccess" />
|
||||||
@ -42,6 +43,11 @@
|
|||||||
<property name="maximum" value="30" />
|
<property name="maximum" value="30" />
|
||||||
</properties>
|
</properties>
|
||||||
</rule>
|
</rule>
|
||||||
|
<rule ref="rulesets/naming.xml/LongClassName">
|
||||||
|
<properties>
|
||||||
|
<property name="maximum" value="80" />
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
|
||||||
<exclude-pattern>tests/*</exclude-pattern>
|
<exclude-pattern>tests/*</exclude-pattern>
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
namespace RetailCrm\Component\Exception;
|
namespace RetailCrm\Component\Exception;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use RetailCrm\Model\Response\Body\ErrorResponseBody;
|
use RetailCrm\Model\Response\ErrorResponseBody;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,7 +41,7 @@ class TopApiException extends Exception
|
|||||||
/**
|
/**
|
||||||
* TopApiException constructor.
|
* TopApiException constructor.
|
||||||
*
|
*
|
||||||
* @param \RetailCrm\Model\Response\Body\ErrorResponseBody $responseBody
|
* @param \RetailCrm\Model\Response\ErrorResponseBody $responseBody
|
||||||
* @param string|null $requestId
|
* @param string|null $requestId
|
||||||
* @param \Throwable|null $previous
|
* @param \Throwable|null $previous
|
||||||
*/
|
*/
|
||||||
|
@ -195,8 +195,9 @@ class JsonDeserializationVisitor extends AbstractVisitor implements Deserializat
|
|||||||
if (in_array('InlineJsonBody', $metadata->groups ?? [])) {
|
if (in_array('InlineJsonBody', $metadata->groups ?? [])) {
|
||||||
if (!array_key_exists($metadata->serializedName, $data)) {
|
if (!array_key_exists($metadata->serializedName, $data)) {
|
||||||
throw new RuntimeException(sprintf(
|
throw new RuntimeException(sprintf(
|
||||||
'Cannot find expected key in the data: %s',
|
'Cannot find expected key "%s" in the collection: %s',
|
||||||
$metadata->serializedName
|
$metadata->serializedName,
|
||||||
|
implode(', ', array_keys($data))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@ use Psr\Container\ContainerInterface;
|
|||||||
use RetailCrm\Component\Constants;
|
use RetailCrm\Component\Constants;
|
||||||
use RetailCrm\Component\JMS\Factory\JsonDeserializationVisitorFactory;
|
use RetailCrm\Component\JMS\Factory\JsonDeserializationVisitorFactory;
|
||||||
use RetailCrm\Interfaces\FactoryInterface;
|
use RetailCrm\Interfaces\FactoryInterface;
|
||||||
|
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
|
||||||
|
use JMS\Serializer\Expression\ExpressionEvaluator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SerializerFactory
|
* Class SerializerFactory
|
||||||
@ -138,6 +140,7 @@ class SerializerFactory implements FactoryInterface
|
|||||||
->setSerializationVisitor('json', new JsonSerializationVisitorFactory())
|
->setSerializationVisitor('json', new JsonSerializationVisitorFactory())
|
||||||
->setDeserializationVisitor('json', new JsonDeserializationVisitorFactory())
|
->setDeserializationVisitor('json', new JsonDeserializationVisitorFactory())
|
||||||
->setSerializationContextFactory(new SerializationContextFactory())
|
->setSerializationContextFactory(new SerializationContextFactory())
|
||||||
|
->setExpressionEvaluator(new ExpressionEvaluator(new ExpressionLanguage()))
|
||||||
->build();
|
->build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
61
src/Model/Entity/CategoryInfo.php
Normal file
61
src/Model/Entity/CategoryInfo.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category CategoryInfo
|
||||||
|
* @package RetailCrm\Model\Entity
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Entity;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class CategoryInfo
|
||||||
|
*
|
||||||
|
* @category CategoryInfo
|
||||||
|
* @package RetailCrm\Model\Entity
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class CategoryInfo
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var int $childrenCategoryId
|
||||||
|
*
|
||||||
|
* @JMS\Type("int")
|
||||||
|
* @JMS\SerializedName("children_category_id")
|
||||||
|
*/
|
||||||
|
public $childrenCategoryId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool $isLeafCategory
|
||||||
|
*
|
||||||
|
* @JMS\Type("bool")
|
||||||
|
* @JMS\SerializedName("is_leaf_category")
|
||||||
|
*/
|
||||||
|
public $isLeafCategory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int $level
|
||||||
|
*
|
||||||
|
* @JMS\Type("int")
|
||||||
|
* @JMS\SerializedName("level")
|
||||||
|
*/
|
||||||
|
public $level;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array $multiLanguageNames
|
||||||
|
*
|
||||||
|
* @JMS\Type("array")
|
||||||
|
* @JMS\SerializedName("multi_language_names")
|
||||||
|
* @JMS\Groups(groups={"InlineJsonBody"})
|
||||||
|
*/
|
||||||
|
public $multiLanguageNames;
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQuery
|
||||||
|
* @package RetailCrm\Model\Request\AliExpressSolution
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Request\AliExpressSolution;
|
||||||
|
|
||||||
|
use RetailCrm\Model\Request\BaseRequest;
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
use RetailCrm\Model\Response\AliExpressSolution\SellerCategoryTreeQueryResponse;
|
||||||
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SellerCategoryTreeQuery
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQuery
|
||||||
|
* @package RetailCrm\Model\Request\AliExpressSolution
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class SellerCategoryTreeQuery extends BaseRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var int $categoryId
|
||||||
|
*
|
||||||
|
* @JMS\Type("int")
|
||||||
|
* @JMS\SerializedName("category_id")
|
||||||
|
* @Assert\NotBlank()
|
||||||
|
* @Assert\PositiveOrZero()
|
||||||
|
*/
|
||||||
|
public $categoryId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool $filterNoPermission
|
||||||
|
*
|
||||||
|
* @JMS\Type("bool")
|
||||||
|
* @JMS\SerializedName("filter_no_permission")
|
||||||
|
* @Assert\NotNull()
|
||||||
|
*/
|
||||||
|
public $filterNoPermission = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getMethod(): string
|
||||||
|
{
|
||||||
|
return 'aliexpress.solution.seller.category.tree.query';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getExpectedResponse(): string
|
||||||
|
{
|
||||||
|
return SellerCategoryTreeQueryResponse::class;
|
||||||
|
}
|
||||||
|
}
|
@ -91,7 +91,7 @@ abstract class BaseRequest
|
|||||||
*
|
*
|
||||||
* @JMS\Type("bool")
|
* @JMS\Type("bool")
|
||||||
* @JMS\SerializedName("simplify")
|
* @JMS\SerializedName("simplify")
|
||||||
* @JMS\Accessor(getter="isSimplify")
|
* @JMS\Exclude(if="!object.simplify")
|
||||||
*/
|
*/
|
||||||
public $simplify = false;
|
public $simplify = false;
|
||||||
|
|
||||||
@ -132,14 +132,6 @@ abstract class BaseRequest
|
|||||||
$this->method = $this->getMethod();
|
$this->method = $this->getMethod();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool|null
|
|
||||||
*/
|
|
||||||
public function isSimplify(): ?bool
|
|
||||||
{
|
|
||||||
return $this->simplify ? true : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $method
|
* @param string $method
|
||||||
*
|
*
|
||||||
|
@ -4,21 +4,22 @@
|
|||||||
* PHP version 7.3
|
* PHP version 7.3
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetRequest
|
* @category HttpDnsGetRequest
|
||||||
* @package RetailCrm\Model\Request
|
* @package RetailCrm\Model\Request\Taobao
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license MIT https://mit-license.org
|
* @license MIT https://mit-license.org
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
namespace RetailCrm\Model\Request;
|
namespace RetailCrm\Model\Request\Taobao;
|
||||||
|
|
||||||
use RetailCrm\Model\Response\HttpDnsGetResponse;
|
use RetailCrm\Model\Request\BaseRequest;
|
||||||
|
use RetailCrm\Model\Response\Taobao\HttpDnsGetResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class HttpDnsGetRequest
|
* Class HttpDnsGetRequest
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetRequest
|
* @category HttpDnsGetRequest
|
||||||
* @package RetailCrm\Model\Request
|
* @package RetailCrm\Model\Request\Taobao
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license MIT https://mit-license.org
|
* @license MIT https://mit-license.org
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQueryResponseData
|
||||||
|
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpressSolution\Data;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SellerCategoryTreeQueryResponseData
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQueryResponseData
|
||||||
|
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class SellerCategoryTreeQueryResponseData
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
|
*
|
||||||
|
* @JMS\Type("RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseDataChildrenCategoryList")
|
||||||
|
* @JMS\SerializedName("children_category_list")
|
||||||
|
*/
|
||||||
|
public $childrenCategoryList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool $isSuccess
|
||||||
|
*
|
||||||
|
* @JMS\Type("bool")
|
||||||
|
* @JMS\SerializedName("is_success")
|
||||||
|
*/
|
||||||
|
public $isSuccess;
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
|
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpressSolution\Data;
|
||||||
|
|
||||||
|
use RetailCrm\Model\Entity\CategoryInfo;
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
|
* @package RetailCrm\Model\Response\AliExpressSolution\Data
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class SellerCategoryTreeQueryResponseDataChildrenCategoryList
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var CategoryInfo[] $categoryInfo
|
||||||
|
*
|
||||||
|
* @JMS\Type("array<RetailCrm\Model\Entity\CategoryInfo>")
|
||||||
|
* @JMS\SerializedName("category_info")
|
||||||
|
*/
|
||||||
|
public $categoryInfo;
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQueryResponse
|
||||||
|
* @package RetailCrm\Model\Response\AliExpressSolution
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Model\Response\AliExpressSolution;
|
||||||
|
|
||||||
|
use RetailCrm\Model\Response\BaseResponse;
|
||||||
|
|
||||||
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SellerCategoryTreeQueryResponse
|
||||||
|
*
|
||||||
|
* @category SellerCategoryTreeQueryResponse
|
||||||
|
* @package RetailCrm\Model\Response\AliExpressSolution
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class SellerCategoryTreeQueryResponse extends BaseResponse
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseData $responseData
|
||||||
|
*
|
||||||
|
* @JMS\Type("RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseData")
|
||||||
|
* @JMS\SerializedName("aliexpress_solution_seller_category_tree_query_response")
|
||||||
|
*/
|
||||||
|
public $responseData;
|
||||||
|
}
|
@ -27,9 +27,9 @@ use JMS\Serializer\Annotation as JMS;
|
|||||||
class BaseResponse implements TopResponseInterface
|
class BaseResponse implements TopResponseInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var \RetailCrm\Model\Response\Body\ErrorResponseBody
|
* @var \RetailCrm\Model\Response\ErrorResponseBody
|
||||||
*
|
*
|
||||||
* @JMS\Type("RetailCrm\Model\Response\Body\ErrorResponseBody")
|
* @JMS\Type("RetailCrm\Model\Response\ErrorResponseBody")
|
||||||
* @JMS\SerializedName("error_response")
|
* @JMS\SerializedName("error_response")
|
||||||
*/
|
*/
|
||||||
public $errorResponse;
|
public $errorResponse;
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
* PHP version 7.3
|
* PHP version 7.3
|
||||||
*
|
*
|
||||||
* @category ErrorResponseBody
|
* @category ErrorResponseBody
|
||||||
* @package RetailCrm\Model\Response\Body
|
* @package RetailCrm\Model\Response
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
namespace RetailCrm\Model\Response\Body;
|
namespace RetailCrm\Model\Response;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ use JMS\Serializer\Annotation as JMS;
|
|||||||
* Class ErrorResponseBody
|
* Class ErrorResponseBody
|
||||||
*
|
*
|
||||||
* @category ErrorResponseBody
|
* @category ErrorResponseBody
|
||||||
* @package RetailCrm\Model\Response\Body
|
* @package RetailCrm\Model\Response
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
@ -4,22 +4,22 @@
|
|||||||
* PHP version 7.3
|
* PHP version 7.3
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetResponseData
|
* @category HttpDnsGetResponseData
|
||||||
* @package RetailCrm\Model\Response\Data
|
* @package RetailCrm\Model\Response\Taobao\Data
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
namespace RetailCrm\Model\Response\Data;
|
namespace RetailCrm\Model\Response\Taobao\Data;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
use RetailCrm\Model\Response\Body\InlineJsonBody\HttpDnsGetResponseResult;
|
use RetailCrm\Model\Response\Taobao\Result\HttpDnsGetResponseResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class HttpDnsGetResponseData
|
* Class HttpDnsGetResponseData
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetResponseData
|
* @category HttpDnsGetResponseData
|
||||||
* @package RetailCrm\Model\Response\Data
|
* @package RetailCrm\Model\Response\Taobao\Data
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
@ -30,7 +30,7 @@ class HttpDnsGetResponseData
|
|||||||
/**
|
/**
|
||||||
* @var HttpDnsGetResponseResult $result
|
* @var HttpDnsGetResponseResult $result
|
||||||
*
|
*
|
||||||
* @JMS\Type("RetailCrm\Model\Response\Body\InlineJsonBody\HttpDnsGetResponseResult")
|
* @JMS\Type("RetailCrm\Model\Response\Taobao\Result\HttpDnsGetResponseResult")
|
||||||
* @JMS\SerializedName("result")
|
* @JMS\SerializedName("result")
|
||||||
* @JMS\Groups(groups={"InlineJsonBody"})
|
* @JMS\Groups(groups={"InlineJsonBody"})
|
||||||
*/
|
*/
|
@ -4,21 +4,22 @@
|
|||||||
* PHP version 7.3
|
* PHP version 7.3
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetResponse
|
* @category HttpDnsGetResponse
|
||||||
* @package RetailCrm\Model\Response
|
* @package RetailCrm\Model\Response\Taobao
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
namespace RetailCrm\Model\Response;
|
namespace RetailCrm\Model\Response\Taobao;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
use RetailCrm\Model\Response\BaseResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class HttpDnsGetResponse
|
* Class HttpDnsGetResponse
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetResponse
|
* @category HttpDnsGetResponse
|
||||||
* @package RetailCrm\Model\Response
|
* @package RetailCrm\Model\Response\Taobao
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
@ -27,9 +28,9 @@ use JMS\Serializer\Annotation as JMS;
|
|||||||
class HttpDnsGetResponse extends BaseResponse
|
class HttpDnsGetResponse extends BaseResponse
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var \RetailCrm\Model\Response\Data\HttpDnsGetResponseData $responseData
|
* @var \RetailCrm\Model\Response\Taobao\Data\HttpDnsGetResponseData $responseData
|
||||||
*
|
*
|
||||||
* @JMS\Type("RetailCrm\Model\Response\Data\HttpDnsGetResponseData")
|
* @JMS\Type("RetailCrm\Model\Response\Taobao\Data\HttpDnsGetResponseData")
|
||||||
* @JMS\SerializedName("httpdns_get_response")
|
* @JMS\SerializedName("httpdns_get_response")
|
||||||
*/
|
*/
|
||||||
public $responseData;
|
public $responseData;
|
@ -4,13 +4,13 @@
|
|||||||
* PHP version 7.3
|
* PHP version 7.3
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetResponseResult
|
* @category HttpDnsGetResponseResult
|
||||||
* @package RetailCrm\Model\Response\Body\InlineJsonBody
|
* @package RetailCrm\Model\Response\Taobao\Result
|
||||||
* @author RetailCRM <integration@retailcrm.ru>
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
||||||
* @see http://help.retailcrm.ru
|
* @see http://help.retailcrm.ru
|
||||||
*/
|
*/
|
||||||
namespace RetailCrm\Model\Response\Body\InlineJsonBody;
|
namespace RetailCrm\Model\Response\Taobao\Result;
|
||||||
|
|
||||||
use JMS\Serializer\Annotation as JMS;
|
use JMS\Serializer\Annotation as JMS;
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ use JMS\Serializer\Annotation as JMS;
|
|||||||
* Class HttpDnsGetResponseResult
|
* Class HttpDnsGetResponseResult
|
||||||
*
|
*
|
||||||
* @category HttpDnsGetResponseResult
|
* @category HttpDnsGetResponseResult
|
||||||
* @package RetailCrm\Model\Response\Body\InlineJsonBody
|
* @package RetailCrm\Model\Response\Taobao\Result
|
||||||
* @author RetailDriver LLC <integration@retailcrm.ru>
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
* @link http://retailcrm.ru
|
* @link http://retailcrm.ru
|
@ -13,13 +13,11 @@ use Psr\Http\Message\ResponseInterface;
|
|||||||
use Psr\Http\Message\StreamInterface;
|
use Psr\Http\Message\StreamInterface;
|
||||||
use RetailCrm\Builder\ContainerBuilder;
|
use RetailCrm\Builder\ContainerBuilder;
|
||||||
use RetailCrm\Component\AppData;
|
use RetailCrm\Component\AppData;
|
||||||
use RetailCrm\Component\Authenticator\TokenAuthenticator;
|
|
||||||
use RetailCrm\Component\Constants;
|
use RetailCrm\Component\Constants;
|
||||||
use RetailCrm\Component\Environment;
|
use RetailCrm\Component\Environment;
|
||||||
use RetailCrm\Component\Logger\StdoutLogger;
|
use RetailCrm\Component\Logger\StdoutLogger;
|
||||||
use RetailCrm\Factory\FileItemFactory;
|
use RetailCrm\Factory\FileItemFactory;
|
||||||
use RetailCrm\Interfaces\AppDataInterface;
|
use RetailCrm\Interfaces\AppDataInterface;
|
||||||
use RetailCrm\Interfaces\AuthenticatorInterface;
|
|
||||||
use RetailCrm\Interfaces\FileItemFactoryInterface;
|
use RetailCrm\Interfaces\FileItemFactoryInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP version 7.4
|
||||||
|
*
|
||||||
|
* @category JsonDeserializationVisitorTest
|
||||||
|
* @package RetailCrm\Tests\Component\JMS\Visitor\Deserialization
|
||||||
|
* @author RetailCRM <integration@retailcrm.ru>
|
||||||
|
* @license http://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see http://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Tests\Component\JMS\Visitor\Deserialization;
|
||||||
|
|
||||||
|
use RetailCrm\Component\Constants;
|
||||||
|
use RetailCrm\Model\Entity\CategoryInfo;
|
||||||
|
use RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseData;
|
||||||
|
use RetailCrm\Model\Response\AliExpressSolution\Data\SellerCategoryTreeQueryResponseDataChildrenCategoryList;
|
||||||
|
use RetailCrm\Model\Response\AliExpressSolution\SellerCategoryTreeQueryResponse;
|
||||||
|
use RetailCrm\Test\TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class JsonDeserializationVisitorTest
|
||||||
|
*
|
||||||
|
* @category JsonDeserializationVisitorTest
|
||||||
|
* @package RetailCrm\Tests\Component\JMS\Visitor\Deserialization
|
||||||
|
* @author RetailDriver LLC <integration@retailcrm.ru>
|
||||||
|
* @license https://retailcrm.ru Proprietary
|
||||||
|
* @link http://retailcrm.ru
|
||||||
|
* @see https://help.retailcrm.ru
|
||||||
|
*/
|
||||||
|
class JsonDeserializationVisitorTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testDeserializeInlineJson()
|
||||||
|
{
|
||||||
|
$json = <<<'EOF'
|
||||||
|
{
|
||||||
|
"aliexpress_solution_seller_category_tree_query_response":{
|
||||||
|
"children_category_list":{
|
||||||
|
"category_info":[
|
||||||
|
{
|
||||||
|
"children_category_id":5090301,
|
||||||
|
"is_leaf_category":true,
|
||||||
|
"level":2,
|
||||||
|
"multi_language_names":"{ \"de\": \"Mobiltelefon\", \"ru\": \"Мобильные телефоны\", \"pt\": \"Telefonia\", \"in\": \"Ponsel\", \"en\": \"Mobile Phones\", \"it\": \"Telefoni cellulari\", \"fr\": \"Smartphones\", \"es\": \"Smartphones\", \"tr\": \"Cep Telefonu\", \"nl\": \"Mobiele telefoons\" }"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"is_success":true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF;
|
||||||
|
$expectedLangs = [
|
||||||
|
'de' => 'Mobiltelefon',
|
||||||
|
'ru' => 'Мобильные телефоны',
|
||||||
|
'pt' => 'Telefonia',
|
||||||
|
'in' => 'Ponsel',
|
||||||
|
'en' => 'Mobile Phones',
|
||||||
|
'it' => 'Telefoni cellulari',
|
||||||
|
'fr' => 'Smartphones',
|
||||||
|
'es' => 'Smartphones',
|
||||||
|
'tr' => 'Cep Telefonu',
|
||||||
|
'nl' => 'Mobiele telefoons'
|
||||||
|
];
|
||||||
|
|
||||||
|
/** @var \JMS\Serializer\SerializerInterface $serializer */
|
||||||
|
$serializer = $this->getContainer()->get(Constants::SERIALIZER);
|
||||||
|
/** @var SellerCategoryTreeQueryResponse $result */
|
||||||
|
$result = $serializer->deserialize($json, SellerCategoryTreeQueryResponse::class, 'json');
|
||||||
|
|
||||||
|
self::assertInstanceOf(SellerCategoryTreeQueryResponseData::class, $result->responseData);
|
||||||
|
self::assertInstanceOf(
|
||||||
|
SellerCategoryTreeQueryResponseDataChildrenCategoryList::class,
|
||||||
|
$result->responseData->childrenCategoryList
|
||||||
|
);
|
||||||
|
self::assertIsArray($result->responseData->childrenCategoryList->categoryInfo);
|
||||||
|
self::assertCount(1, $result->responseData->childrenCategoryList->categoryInfo);
|
||||||
|
|
||||||
|
$info = $result->responseData->childrenCategoryList->categoryInfo[0];
|
||||||
|
|
||||||
|
self::assertInstanceOf(CategoryInfo::class, $info);
|
||||||
|
self::assertEquals(5090301, $info->childrenCategoryId);
|
||||||
|
self::assertTrue($info->isLeafCategory);
|
||||||
|
self::assertEquals(2, $info->level);
|
||||||
|
self::assertIsArray($info->multiLanguageNames);
|
||||||
|
|
||||||
|
foreach ($expectedLangs as $lang => $value) {
|
||||||
|
self::assertArrayHasKey($lang, $info->multiLanguageNames);
|
||||||
|
self::assertEquals($value, $info->multiLanguageNames[$lang]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -42,6 +42,7 @@ class TopRequestFactoryTest extends TestCase
|
|||||||
|
|
||||||
self::assertEmpty($contents);
|
self::assertEmpty($contents);
|
||||||
self::assertNotEmpty($uri->getQuery());
|
self::assertNotEmpty($uri->getQuery());
|
||||||
|
self::assertFalse(stripos($uri->getQuery(), 'simplify'), $uri->getQuery());
|
||||||
self::assertNotFalse(stripos($uri->getQuery(), 'SPAIN_LOCAL_CORREOS'));
|
self::assertNotFalse(stripos($uri->getQuery(), 'SPAIN_LOCAL_CORREOS'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,12 +15,9 @@ namespace RetailCrm\Tests\TopClient;
|
|||||||
use Psr\Http\Message\RequestInterface;
|
use Psr\Http\Message\RequestInterface;
|
||||||
use RetailCrm\Builder\ClientBuilder;
|
use RetailCrm\Builder\ClientBuilder;
|
||||||
use RetailCrm\Component\AppData;
|
use RetailCrm\Component\AppData;
|
||||||
use RetailCrm\Component\Authenticator\TokenAuthenticator;
|
use RetailCrm\Model\Request\Taobao\HttpDnsGetRequest;
|
||||||
use RetailCrm\Component\Constants;
|
|
||||||
use RetailCrm\Component\Exception\TopApiException;
|
|
||||||
use RetailCrm\Model\Request\HttpDnsGetRequest;
|
|
||||||
use RetailCrm\Model\Response\BaseResponse;
|
use RetailCrm\Model\Response\BaseResponse;
|
||||||
use RetailCrm\Model\Response\Body\ErrorResponseBody;
|
use RetailCrm\Model\Response\ErrorResponseBody;
|
||||||
use RetailCrm\Test\ClosureRequestMatcher;
|
use RetailCrm\Test\ClosureRequestMatcher;
|
||||||
use RetailCrm\Test\TestCase;
|
use RetailCrm\Test\TestCase;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user