add logger and request/response logging for http client
This commit is contained in:
parent
5b91648590
commit
b4ec498f32
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace RetailCrm;
|
namespace RetailCrm;
|
||||||
|
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
use RetailCrm\Client\ApiVersion3;
|
use RetailCrm\Client\ApiVersion3;
|
||||||
use RetailCrm\Client\ApiVersion4;
|
use RetailCrm\Client\ApiVersion4;
|
||||||
use RetailCrm\Client\ApiVersion5;
|
use RetailCrm\Client\ApiVersion5;
|
||||||
@ -67,4 +68,14 @@ class ApiClient
|
|||||||
{
|
{
|
||||||
return $this->version;
|
return $this->version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set logger
|
||||||
|
*
|
||||||
|
* @param LoggerInterface|null $logger
|
||||||
|
*/
|
||||||
|
public function setLogger($logger = null)
|
||||||
|
{
|
||||||
|
$this->request->setLogger($logger);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace RetailCrm\Client;
|
namespace RetailCrm\Client;
|
||||||
|
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
use RetailCrm\Http\Client;
|
use RetailCrm\Http\Client;
|
||||||
use RetailCrm\Http\RequestOptions;
|
use RetailCrm\Http\RequestOptions;
|
||||||
|
|
||||||
@ -142,6 +143,16 @@ abstract class AbstractLoader
|
|||||||
return $this->siteCode;
|
return $this->siteCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set logger
|
||||||
|
*
|
||||||
|
* @param LoggerInterface|null $logger
|
||||||
|
*/
|
||||||
|
public function setLogger($logger)
|
||||||
|
{
|
||||||
|
$this->client->setLogger($logger);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Getting the list of available api versions
|
* Getting the list of available api versions
|
||||||
*
|
*
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace RetailCrm\Http;
|
namespace RetailCrm\Http;
|
||||||
|
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
use RetailCrm\Exception\CurlException;
|
use RetailCrm\Exception\CurlException;
|
||||||
use RetailCrm\Exception\InvalidJsonException;
|
use RetailCrm\Exception\InvalidJsonException;
|
||||||
use RetailCrm\Exception\LimitException;
|
use RetailCrm\Exception\LimitException;
|
||||||
@ -34,6 +35,11 @@ class Client
|
|||||||
protected $defaultParameters;
|
protected $defaultParameters;
|
||||||
protected $options;
|
protected $options;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var LoggerInterface|null $logger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client constructor.
|
* Client constructor.
|
||||||
*
|
*
|
||||||
@ -116,6 +122,8 @@ class Client
|
|||||||
curl_setopt($curlHandler, CURLOPT_HTTPHEADER, $this->options->getHttpHeaders());
|
curl_setopt($curlHandler, CURLOPT_HTTPHEADER, $this->options->getHttpHeaders());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->logRequest($url, $method, $parameters);
|
||||||
|
|
||||||
if (self::METHOD_POST === $method) {
|
if (self::METHOD_POST === $method) {
|
||||||
curl_setopt($curlHandler, CURLOPT_POST, true);
|
curl_setopt($curlHandler, CURLOPT_POST, true);
|
||||||
|
|
||||||
@ -166,6 +174,16 @@ class Client
|
|||||||
$this->options = $options;
|
$this->options = $options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set logger
|
||||||
|
*
|
||||||
|
* @param LoggerInterface|null $logger
|
||||||
|
*/
|
||||||
|
public function setLogger($logger = null)
|
||||||
|
{
|
||||||
|
$this->logger = $logger;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $curlHandler
|
* @param $curlHandler
|
||||||
* @param $method
|
* @param $method
|
||||||
@ -178,6 +196,8 @@ class Client
|
|||||||
$statusCode = curl_getinfo($curlHandler, CURLINFO_HTTP_CODE);
|
$statusCode = curl_getinfo($curlHandler, CURLINFO_HTTP_CODE);
|
||||||
$contentType = curl_getinfo($curlHandler, CURLINFO_CONTENT_TYPE);
|
$contentType = curl_getinfo($curlHandler, CURLINFO_CONTENT_TYPE);
|
||||||
|
|
||||||
|
$this->logResponse($responseBody, $statusCode);
|
||||||
|
|
||||||
if (503 === $statusCode) {
|
if (503 === $statusCode) {
|
||||||
throw new LimitException("Service temporary unavailable");
|
throw new LimitException("Service temporary unavailable");
|
||||||
}
|
}
|
||||||
@ -200,4 +220,39 @@ class Client
|
|||||||
|
|
||||||
return [$statusCode, $responseBody];
|
return [$statusCode, $responseBody];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $url
|
||||||
|
* @param string $method
|
||||||
|
* @param array $params
|
||||||
|
*/
|
||||||
|
private function logRequest($url, $method, $params)
|
||||||
|
{
|
||||||
|
if (null === $this->logger) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$message = 'Send request: ' . $method . ' ' . $url;
|
||||||
|
|
||||||
|
if (!empty($params)) {
|
||||||
|
$message .= ' with params: ' . json_encode($params);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger->info($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $responseBody
|
||||||
|
* @param int $statusCode
|
||||||
|
*/
|
||||||
|
private function logResponse($responseBody, $statusCode)
|
||||||
|
{
|
||||||
|
if (null === $this->logger) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$message = 'Response with code ' . $statusCode . ' received with body: ' . $responseBody;
|
||||||
|
|
||||||
|
$this->logger->info($message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user