Skip to content
This repository has been archived by the owner on May 21, 2021. It is now read-only.

Commit

Permalink
More work on example requests
Browse files Browse the repository at this point in the history
  • Loading branch information
sanmai committed Oct 25, 2020
1 parent 0f1b669 commit 8f6088a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 31 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"psr/log": "^1.0",
"sanmai/json-serializer": "^0.2.2",
"sanmai/pipeline": "^5",
"sanmai/sdk-common": "^0.2.7",
"sanmai/sdk-common": "^0.2.8",
"sanmai/version-info": "^0.2.0",
"symfony/http-foundation": "^4.4.7 || ^5.0.7"
},
Expand Down
18 changes: 15 additions & 3 deletions examples/110_CreateAndSubmitOrder.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,16 @@

include_once 'vendor/autoload.php';

$logger = new DebuggingLogger();

$builder = new \YDeliverySDK\ClientBuilder();
$builder->setToken($_SERVER['YANDEX_DELIVERY_TOKEN'] ?? '');
$builder->setLogger(new DebuggingLogger());
$builder->setLogger($logger);
/** @var \YDeliverySDK\Client $client */
$client = $builder->build();

/**
* Получим данные по адресу.
* Получим данные по адресу получателя.
*/
$response = $client->makeLocationRequest('Новосибирская область, Новосибирск');

Expand Down Expand Up @@ -75,6 +77,7 @@

$request->senderId = $_SERVER['YANDEX_SHOP_ID'];

$request->from->geoId = $_SERVER['YANDEX_SENDER_GEOID'];
$request->to->location = 'Новосибирск, ул. Державина, 5';

$request->dimensions->length = $length = 10;
Expand All @@ -88,12 +91,15 @@
$request->shipment->date = new DateTime('next Monday');
$request->shipment->type = $request->shipment::TYPE_WITHDRAW;

$request->cost->assessedValue = 500;
$request->cost->assessedValue = 1000;
$request->cost->itemsSum = 1000;
$request->cost->fullyPrepaid = true;

// $request->tariffId = 333333333;

$logger->addFile('delivery-options-request.json');
$logger->addFile('delivery-options-response.json');

$response = $client->sendDeliveryOptionsRequest($request);

if (!\count($response)) {
Expand Down Expand Up @@ -164,6 +170,9 @@
$contact->firstName = 'Василий';
$contact->lastName = 'Юрочкин';

$logger->addFile('create-order-request.json');
$logger->addFile('create-order-response.json');

$response = $client->sendCreateOrderRequest($request);

if ($response->hasErrors()) {
Expand All @@ -181,6 +190,9 @@
$request = new SubmitOrderRequest();
$request->orderIds = [$response->id];

$logger->addFile('submit-order-request.json');
$logger->addFile('submit-order-response.json');

$response = $client->sendSubmitOrderRequest($request);

if ($response->hasErrors()) {
Expand Down
39 changes: 12 additions & 27 deletions tests/Integration/DebuggingLogger.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,8 @@ final class DebuggingLogger implements LoggerInterface
{
use LoggerTrait;

/**
* Если нужна запись в файл, то нужно скопировать этот файл себе в проект, заменив namespace, и поменять константу ниже на true.
* Лог будет записан в delivery-requests.log в корне проекта.
*
* @var bool
*/
private const WRITE_LOG_TO_FILE = false;
/** @var string[] */
private $filename = [];

/**
* @param mixed $level
Expand All @@ -56,38 +51,28 @@ public function log($level, $message, array $context = [])
$message = \strtr($message, \iterator_to_array(self::context2replacements($context), true));
}

if (!self::WRITE_LOG_TO_FILE && \strpos($message, 'WITHDRAW') !== false) {
if (\strpos($message, 'WITHDRAW') !== false) {
// Заявка на Забор (WITHDRAW) тарифицируется сразу же как была подтверждена службой доставки.
\trigger_error('Forbidden request', E_USER_ERROR);
}

// В целях отладки приведём JSON в читаемый вид
if (\strpos($message, '{') === 0 || \strpos($message, '[') === 0) {
$message = \json_encode(\json_decode($message), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

if ($this->filename !== []) {
$saveTo = \array_shift($this->filename);
\file_put_contents($saveTo, $message);
\fwrite(\STDERR, "\n\n(Saved below message to $saveTo)");
}
}

\fwrite(self::WRITE_LOG_TO_FILE ? $this->getLogFileHandle() : \STDERR, "\n{$message}\n\n");
\fwrite(\STDERR, "\n{$message}\n\n");
}

private const LOG_FILE = 'delivery-requests.log';

/**
* Возвращает указатель на открытый файл delivery-requests.log в корне проекта.
*
* @return resource
*/
private static function getLogFileHandle()
public function addFile(string $filename): void
{
static $fh;

if (!$fh) {
$reflection = new \ReflectionClass(\Composer\Autoload\ClassLoader::class);
$fh = \fopen(\dirname((string) $reflection->getFileName(), 3).DIRECTORY_SEPARATOR.self::LOG_FILE, 'a');
}

\assert(\is_resource($fh));

return $fh;
$this->filename[] = $filename;
}

/**
Expand Down

0 comments on commit 8f6088a

Please sign in to comment.