1
0
mirror of synced 2025-02-16 15:03:17 +03:00

psr2 & rollback for timeout handle

This commit is contained in:
Alex Lushpai 2015-05-08 18:03:05 +03:00
parent 7ec35c2ad8
commit de6dbdd87f
2 changed files with 40 additions and 38 deletions

View File

@ -288,11 +288,14 @@ class ApiClient
return $this->client->makeRequest( return $this->client->makeRequest(
"/customers/" . $customer[$by] . "/edit", "/customers/" . $customer[$by] . "/edit",
Client::METHOD_POST, Client::METHOD_POST,
$this->fillSite($site, array( $this->fillSite(
$site,
array(
'customer' => json_encode($customer), 'customer' => json_encode($customer),
'by' => $by, 'by' => $by
) )
)); )
);
} }
/** /**
@ -378,9 +381,10 @@ class ApiClient
* @param array $filter (default: array()) * @param array $filter (default: array())
* @param int $page (default: null) * @param int $page (default: null)
* @param int $limit (default: null) * @param int $limit (default: null)
* @param string $site (default: null)
* @return ApiResponse * @return ApiResponse
*/ */
public function storeInventories(array $filter = array(), $page = null, $limit = null) public function storeInventories(array $filter = array(), $page = null, $limit = null, $site = null)
{ {
$parameters = array(); $parameters = array();
@ -394,7 +398,7 @@ class ApiClient
$parameters['limit'] = (int) $limit; $parameters['limit'] = (int) $limit;
} }
return $this->client->makeRequest('/store/inventories', Client::METHOD_GET, $parameters); return $this->client->makeRequest('/store/inventories', Client::METHOD_GET, $this->fillSite($site, $parameters));
} }
/** /**
@ -410,9 +414,11 @@ class ApiClient
throw new \InvalidArgumentException('Parameter `offers` must contains array of the customers'); throw new \InvalidArgumentException('Parameter `offers` must contains array of the customers');
} }
return $this->client->makeRequest("/store/inventories/upload", Client::METHOD_POST, $this->fillSite($site, array( return $this->client->makeRequest(
'offers' => json_encode($offers), "/store/inventories/upload",
))); Client::METHOD_POST,
$this->fillSite($site, array('offers' => json_encode($offers)))
);
} }
/** /**

View File

@ -39,8 +39,14 @@ class Client
* @param bool $debug * @param bool $debug
* @return ApiResponse * @return ApiResponse
*/ */
public function makeRequest($path, $method, array $parameters = array(), $timeout = 30, $verify = false, $debug = false) public function makeRequest(
{ $path,
$method,
array $parameters = array(),
$timeout = 30,
$verify = false,
$debug = false
) {
$allowedMethods = array(self::METHOD_GET, self::METHOD_POST); $allowedMethods = array(self::METHOD_GET, self::METHOD_POST);
if (!in_array($method, $allowedMethods)) { if (!in_array($method, $allowedMethods)) {
throw new \InvalidArgumentException(sprintf( throw new \InvalidArgumentException(sprintf(
@ -53,6 +59,7 @@ class Client
$parameters = array_merge($this->defaultParameters, $parameters); $parameters = array_merge($this->defaultParameters, $parameters);
$path = $this->url . $path; $path = $this->url . $path;
if (self::METHOD_GET === $method && sizeof($parameters)) { if (self::METHOD_GET === $method && sizeof($parameters)) {
$path .= '?' . http_build_query($parameters); $path .= '?' . http_build_query($parameters);
} }
@ -72,10 +79,21 @@ class Client
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters); curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
} }
$responseBody = $this->curlExec($ch, $debug); $responseBody = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$errno = curl_errno($ch); $errno = curl_errno($ch);
$error = curl_error($ch); $error = curl_error($ch);
/*if ($errno && in_array($errno, array(6, 7, 28, 34, 35)) && $this->retry < 3) {
$this->retry += 1;
if ($debug) {
error_log('CURL RETRY #' . $this->retry . PHP_EOL, 4);
}
$this->makeRequest($path, $method, $parameters, $timeout, $verify, $debug);
}*/
curl_close($ch); curl_close($ch);
if ($errno) { if ($errno) {
@ -84,26 +102,4 @@ class Client
return new ApiResponse($statusCode, $responseBody); return new ApiResponse($statusCode, $responseBody);
} }
/**
* @param resource $ch
* @param boolean $debug
* @return mixed
*/
private function curlExec($ch, $debug) {
$exec = curl_exec($ch);
if (curl_errno($ch) && in_array(curl_errno($ch), array(6, 7, 28, 34, 35)) && $this->retry < 3) {
$this->retry += 1;
if ($debug) {
error_log('CURL RETRY #' . $this->retry . PHP_EOL, 4);
}
$this->curlExec($ch, $debug);
}
return $exec;
}
} }