1
0
mirror of synced 2024-11-25 06:46:07 +03:00

API client updates

This commit is contained in:
Pavel 2023-10-03 11:09:27 +03:00 committed by GitHub
commit b497e37c8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 336 additions and 2 deletions

View File

@ -32,7 +32,7 @@ jobs:
target_directory: 'src'
phpstan:
name: PHPStan
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
steps:
- name: Check out code into the workspace
uses: actions/checkout@v2

View File

@ -116,4 +116,12 @@ class SerializedLoyaltyOrder
* @JMS\SerializedName("items")
*/
public $items;
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("currency")
*/
public $currency;
}

View File

@ -0,0 +1,45 @@
<?php
/**
* PHP version 7.3
*
* @category LinkedOrder
* @package RetailCrm\Api\Model\Entity\Orders
*/
namespace RetailCrm\Api\Model\Entity\Orders;
use RetailCrm\Api\Component\Serializer\Annotation as JMS;
/**
* Class LinkedOrder
*
* @category LinkedOrder
* @package RetailCrm\Api\Model\Entity\Orders
*/
class LinkedOrder
{
/**
* @var int
*
* @JMS\Type("int")
* @JMS\SerializedName("id")
*/
public $id;
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("externalId")
*/
public $externalId;
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("number")
*/
public $number;
}

View File

@ -416,6 +416,14 @@ class Order
*/
public $payments;
/**
* @var \RetailCrm\Api\Model\Entity\Orders\OrderLink[]
*
* @JMS\Type("array<RetailCrm\Api\Model\Entity\Orders\OrderLink>")
* @JMS\SerializedName("links")
*/
public $links;
/**
* @var bool
*

View File

@ -0,0 +1,46 @@
<?php
/**
* PHP version 7.3
*
* @category OrderLink
* @package RetailCrm\Api\Model\Entity\Orders
*/
namespace RetailCrm\Api\Model\Entity\Orders;
use DateTime;
use RetailCrm\Api\Component\Serializer\Annotation as JMS;
/**
* Class OrderLink
*
* @category OrderLink
* @package RetailCrm\Api\Model\Entity\Orders
*/
class OrderLink
{
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("comment")
*/
public $comment;
/**
* @var \RetailCrm\Api\Model\Entity\Orders\LinkedOrder
*
* @JMS\Type("array<RetailCrm\Api\Model\Entity\Delivery\SerializedEntityOrder>")
* @JMS\SerializedName("order")
*/
public $order;
/**
* @var DateTime
*
* @JMS\Type("DateTime<'Y-m-d H:i:s'>")
* @JMS\SerializedName("createdAt")
*/
public $createdAt;
}

View File

@ -75,6 +75,14 @@ class PriceType
*/
public $filterExpression;
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("currency")
*/
public $currency;
/**
* @var \RetailCrm\Api\Model\Entity\References\GeoHierarchyRow[]
*

View File

@ -42,4 +42,12 @@ class OfferPrice
* @JMS\SerializedName("ordering")
*/
public $ordering;
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("currency")
*/
public $currency;
}

View File

@ -76,6 +76,14 @@ class User
*/
public $patronymic;
/**
* @var string
*
* @JMS\Type("string")
* @JMS\SerializedName("position")
*/
public $position;
/**
* @var string
*

View File

@ -512,6 +512,14 @@ class OrderFilter
*/
public $deliveryTypes;
/**
* @var string[]
*
* @Form\Type("string[]")
* @Form\SerializedName("deliveryServices")
*/
public $deliveryServices;
/**
* @var string[]
*

View File

@ -22,7 +22,7 @@ use RetailCrm\Api\Model\Entity\References\Currency;
class CurrenciesCreateRequest implements RequestInterface
{
/**
* @var \RetailCrm\Api\Model\Entity\References\Currency
* @var \RetailCrm\Api\Model\Entity\References\Currency|null
*
* @Form\Type("RetailCrm\Api\Model\Entity\References\Currency")
* @Form\SerializedName("currency")

View File

@ -26,6 +26,56 @@ use RetailCrm\Api\Model\Response\WebAnalytics\SourcesUploadResponse;
class WebAnalytics extends AbstractApiResourceGroup
{
/**
*
* Makes POST "/api/v5/web-analytics/client-ids/upload" request.
*
* Example:
* ```php
* use RetailCrm\Api\Factory\SimpleClientFactory;
* use RetailCrm\Api\Interfaces\ApiExceptionInterface;
* use RetailCrm\Api\Model\Entity\WebAnalytics\Customer;
* use RetailCrm\Api\Model\Entity\WebAnalytics\Order;
* use RetailCrm\Api\Model\Entity\WebAnalytics\Source;
* use RetailCrm\Api\Model\Request\WebAnalytics\SourcesUploadRequest;
*
* $client = SimpleClientFactory::createClient('https://test.retailcrm.pro', 'apiKey');
*
* $entity = new Source();
* $entity->source = "sourse";
* $entity->medium = "medium";
* $entity->campaign = "campaign";
* $entity->keyword = "keyword";
* $entity->content = "content";
* $entity->clientId = "10";
* $entity->order = new Order();
* $entity->order->id = 10;
* $entity->order->externalId = "externalId";
* $entity->order->number = "number";
* $entity->customer = new Customer();
* $entity->customer->id = 10;
* $entity->customer->externalId = 'externalId';
*
* $request = new SourcesUploadRequest([$entity]);
*
* try {
* $response = $client->webAnalytics->sourcesUpload($request);
* } catch (ApiExceptionInterface $exception) {
* echo sprintf(
* 'Error from RetailCRM API (status code: %d): %s',
* $exception->getStatusCode(),
* $exception->getMessage()
* );
*
* if (count($exception->getErrorResponse()->errors) > 0) {
* echo PHP_EOL . 'Errors: ' . implode(', ', $exception->getErrorResponse()->errors);
* }
*
* return;
* }
*
* echo 'Upload is successful';
* ```
*
* @param \RetailCrm\Api\Model\Request\WebAnalytics\SourcesUploadRequest $request
*
* @return \RetailCrm\Api\Model\Response\WebAnalytics\SourcesUploadResponse
@ -53,6 +103,51 @@ class WebAnalytics extends AbstractApiResourceGroup
}
/**
*
* Makes POST "/api/v5/web-analytics/client-ids/upload" request.
*
* Example:
* ```php
* use RetailCrm\Api\Factory\SimpleClientFactory;
* use RetailCrm\Api\Interfaces\ApiExceptionInterface;
* use RetailCrm\Api\Model\Entity\WebAnalytics\ClientId;
* use RetailCrm\Api\Model\Entity\WebAnalytics\Customer;
* use RetailCrm\Api\Model\Entity\WebAnalytics\Order;
* use RetailCrm\Api\Model\Request\WebAnalytics\ClientIdUploadRequest;
*
* $client = SimpleClientFactory::createClient('https://test.retailcrm.pro', 'apiKey');
*
* $entity = new ClientId();
* $entity->value = 'value';
* $entity->order = new Order();
* $entity->order->id = 10;
* $entity->order->externalId = 'externalId';
* $entity->order->number = 'number';
* $entity->customer = new Customer();
* $entity->customer->id = 10;
* $entity->customer->externalId = 'externalId';
*
* $request = new ClientIdUploadRequest([$entity]);
*
* try {
* $response = $client->webAnalytics->clientIdsUpload($request);
* } catch (ApiExceptionInterface $exception) {
* echo sprintf(
* 'Error from RetailCRM API (status code: %d): %s',
* $exception->getStatusCode(),
* $exception->getMessage()
* );
*
* if (count($exception->getErrorResponse()->errors) > 0) {
* echo PHP_EOL . 'Errors: ' . implode(', ', $exception->getErrorResponse()->errors);
* }
*
* return;
* }
*
* echo 'Upload is successful';
* ```
*
* @param \RetailCrm\Api\Model\Request\WebAnalytics\ClientIdUploadRequest $request
*
* @return \RetailCrm\Api\Model\Response\WebAnalytics\ClientIdUploadResponse

View File

@ -0,0 +1,100 @@
<?php
/**
* PHP version 7.3
*
* @category WebAnalyticsTest
* @package RetailCrm\Tests\ResourceGroup
*/
namespace RetailCrm\Tests\ResourceGroup;
use RetailCrm\Api\Enum\RequestMethod;
use RetailCrm\Api\Factory\SimpleClientFactory;
use RetailCrm\Api\Interfaces\ApiExceptionInterface;
use RetailCrm\Api\Model\Entity\WebAnalytics\ClientId;
use RetailCrm\Api\Model\Entity\WebAnalytics\Customer;
use RetailCrm\Api\Model\Entity\WebAnalytics\Order;
use RetailCrm\Api\Model\Entity\WebAnalytics\Source;
use RetailCrm\Api\Model\Request\WebAnalytics\ClientIdUploadRequest;
use RetailCrm\Api\Model\Request\WebAnalytics\SourcesUploadRequest;
use RetailCrm\TestUtils\Factory\TestClientFactory;
use RetailCrm\TestUtils\TestCase\AbstractApiResourceGroupTestCase;
/**
* Class WebAnalyticsTest
*
* @category WebAnalyticsTest
* @package RetailCrm\Tests\ResourceGroup
*/
class WebAnalyticsTest extends AbstractApiResourceGroupTestCase
{
public function testClientIdsUpload(): void
{
$json = <<<'EOF'
{
"success": true
}
EOF;
$entity = new ClientId();
$entity->value = 'value';
$entity->order = new Order();
$entity->order->id = 10;
$entity->order->externalId = 'externalId';
$entity->order->number = 'number';
$entity->customer = new Customer();
$entity->customer->id = 10;
$entity->customer->externalId = 'externalId';
$request = new ClientIdUploadRequest([$entity]);
$mock = static::createApiMockBuilder('web-analytics/client-ids/upload');
$mock->matchMethod(RequestMethod::POST)
->matchBody(self::encodeForm($request))
->reply(201)
->withBody($json);
$client = TestClientFactory::createClient($mock->getClient());
$response = $client->webAnalytics->clientIdsUpload($request);
self::assertModelEqualsToResponse($json, $response);
}
public function testSourcesUpload(): void
{
$json = <<<'EOF'
{
"success": true
}
EOF;
$entity = new Source();
$entity->source = "sourse";
$entity->medium = "medium";
$entity->campaign = "campaign";
$entity->keyword = "keyword";
$entity->content = "content";
$entity->clientId = "10";
$entity->order = new Order();
$entity->order->id = 10;
$entity->order->externalId = "externalId";
$entity->order->number = "number";
$entity->customer = new Customer();
$entity->customer->id = 10;
$entity->customer->externalId = 'externalId';
$request = new SourcesUploadRequest([$entity]);
$mock = static::createApiMockBuilder('web-analytics/sources/upload');
$mock->matchMethod(RequestMethod::POST)
->matchBody(self::encodeForm($request))
->reply(201)
->withBody($json);
$client = TestClientFactory::createClient($mock->getClient());
$response = $client->webAnalytics->sourcesUpload($request);
self::assertModelEqualsToResponse($json, $response);
}
}