* @copyright 2021 DIGITAL RETAIL TECHNOLOGIES SL * @license https://opensource.org/licenses/MIT The MIT License * * Don't forget to prefix your containers with your own identifier * to avoid any conflicts with others containers. */ class RetailcrmLoggerMiddleware implements RetailcrmMiddlewareInterface { /** * {@inheritDoc} */ public function __invoke(RetailcrmApiRequest $request, callable $next = null) { $method = $request->getMethod(); if (null !== $method) { RetailcrmLogger::writeDebug($method, print_r($request->getData(), true)); } /** @var RetailcrmApiResponse $response */ $response = $next($request); if (null === $response) { RetailcrmLogger::writeCaller($method, 'Response is null'); return $response; } if ($response->isSuccessful()) { // Don't print long lists in debug logs (errors while calling this will be easy to detect anyway) if (in_array($method, ['statusesList', 'paymentTypesList', 'deliveryTypesList'])) { RetailcrmLogger::writeDebug($method, '[request was successful, but response is omitted]'); } else { RetailcrmLogger::writeDebug($method, $response->getRawResponse()); } } else { if ($response->offsetExists('errorMsg')) { RetailcrmLogger::writeCaller($method, $response['errorMsg']); } if ($response->offsetExists('errors')) { RetailcrmApiErrors::set($response['errors'], $response->getStatusCode()); $error = RetailcrmLogger::reduceErrors($response['errors']); RetailcrmLogger::writeNoCaller($error); } } return $response; } }