Fix UrlRequests Interface name, fix header build
Header default build was not done well, pass original headers inside and set them. On new default start with empty array. Switch to CoreLibs Json calls, because we use this libarary anyway already
This commit is contained in:
@@ -18,10 +18,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace CoreLibs\UrlRequests;
|
||||
|
||||
use RuntimeException;
|
||||
use CoreLibs\Convert\Json;
|
||||
|
||||
/** @package CoreLibs\UrlRequests */
|
||||
class Curl implements Interface\RequestsInterface
|
||||
{
|
||||
// all general calls: get/post/put/patch/delete
|
||||
@@ -404,11 +402,11 @@ class Curl implements Interface\RequestsInterface
|
||||
* Authorization
|
||||
* User-Agent
|
||||
*
|
||||
* @return array<string,string>
|
||||
* @param array<string,string|array<string>> $headers already set headers
|
||||
* @return array<string,string|array<string>>
|
||||
*/
|
||||
private function buildDefaultHeaders(): array
|
||||
private function buildDefaultHeaders($headers = []): array
|
||||
{
|
||||
$headers = [];
|
||||
// add auth header if set
|
||||
if (!empty($this->auth_basic_header)) {
|
||||
$headers['Authorization'] = $this->auth_basic_header;
|
||||
@@ -449,7 +447,7 @@ class Curl implements Interface\RequestsInterface
|
||||
$headers[$key] = $this->config['headers'][$key];
|
||||
}
|
||||
}
|
||||
$headers = array_merge($headers, $this->buildDefaultHeaders());
|
||||
$headers = $this->buildDefaultHeaders($headers);
|
||||
return $headers;
|
||||
}
|
||||
|
||||
@@ -481,8 +479,8 @@ class Curl implements Interface\RequestsInterface
|
||||
$this->url = $this->buildQuery($url, $query);
|
||||
$this->headers = $this->convertHeaders($this->buildHeaders($headers));
|
||||
if (!in_array($type, self::VALID_REQUEST_TYPES)) {
|
||||
throw new RuntimeException(
|
||||
json_encode([
|
||||
throw new \RuntimeException(
|
||||
Json::jsonConvertArrayTo([
|
||||
'status' => 'ERROR',
|
||||
'code' => 'R002',
|
||||
'type' => 'InvalidRequestType',
|
||||
@@ -492,7 +490,7 @@ class Curl implements Interface\RequestsInterface
|
||||
'url' => $this->url,
|
||||
'headers' => $this->headers,
|
||||
],
|
||||
]) ?: '',
|
||||
]),
|
||||
0,
|
||||
);
|
||||
}
|
||||
@@ -544,8 +542,8 @@ class Curl implements Interface\RequestsInterface
|
||||
return $handle;
|
||||
}
|
||||
// throw Error here with all codes
|
||||
throw new RuntimeException(
|
||||
json_encode([
|
||||
throw new \RuntimeException(
|
||||
Json::jsonConvertArrayTo([
|
||||
'status' => 'FAILURE',
|
||||
'code' => 'C001',
|
||||
'type' => 'CurlInitError',
|
||||
@@ -553,7 +551,7 @@ class Curl implements Interface\RequestsInterface
|
||||
'context' => [
|
||||
'url' => $url,
|
||||
],
|
||||
]) ?: '',
|
||||
]),
|
||||
0,
|
||||
);
|
||||
}
|
||||
@@ -591,11 +589,13 @@ class Curl implements Interface\RequestsInterface
|
||||
$timeout_requires_no_signal = false;
|
||||
// if we have a timeout signal
|
||||
if (!empty($this->config['timeout'])) {
|
||||
$timeout_requires_no_signal |= $this->config['timeout'] < 1;
|
||||
$timeout_requires_no_signal = $timeout_requires_no_signal ||
|
||||
$this->config['timeout'] < 1;
|
||||
curl_setopt($handle, CURLOPT_TIMEOUT_MS, $this->config['timeout'] * 1000);
|
||||
}
|
||||
if (!empty($this->config['connection_timeout'])) {
|
||||
$timeout_requires_no_signal |= $this->config['connection_timeout'] < 1;
|
||||
$timeout_requires_no_signal = $timeout_requires_no_signal ||
|
||||
$this->config['connection_timeout'] < 1;
|
||||
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT_MS, $this->config['connection_timeout'] * 1000);
|
||||
}
|
||||
if ($timeout_requires_no_signal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
@@ -665,8 +665,8 @@ class Curl implements Interface\RequestsInterface
|
||||
}
|
||||
|
||||
// throw an error like in the normal reqeust, but set to CURL error
|
||||
throw new RuntimeException(
|
||||
json_encode([
|
||||
throw new \RuntimeException(
|
||||
Json::jsonConvertArrayTo([
|
||||
'status' => 'FAILURE',
|
||||
'code' => 'C002',
|
||||
'type' => 'CurlExecError',
|
||||
@@ -676,7 +676,7 @@ class Curl implements Interface\RequestsInterface
|
||||
'errno' => $errno,
|
||||
'message' => $message,
|
||||
],
|
||||
]) ?: '',
|
||||
]),
|
||||
$errno
|
||||
);
|
||||
}
|
||||
@@ -708,8 +708,8 @@ class Curl implements Interface\RequestsInterface
|
||||
// set curl error number
|
||||
$err = curl_errno($handle);
|
||||
// throw Error here with all codes
|
||||
throw new RuntimeException(
|
||||
json_encode([
|
||||
throw new \RuntimeException(
|
||||
Json::jsonConvertArrayTo([
|
||||
'status' => 'ERROR',
|
||||
'code' => 'H' . (string)$http_response,
|
||||
'type' => $http_response < 500 ? 'ClientError' : 'ServerError',
|
||||
@@ -717,13 +717,13 @@ class Curl implements Interface\RequestsInterface
|
||||
'context' => [
|
||||
'http_response' => $http_response,
|
||||
// extract all the error content if returned
|
||||
'result' => json_decode((string)$http_result, true),
|
||||
'result' => Json::jsonConvertToArray($http_result),
|
||||
// curl internal error number
|
||||
'curl_errno' => $err,
|
||||
// the full curl info block
|
||||
'curl_info' => curl_getinfo($handle),
|
||||
],
|
||||
]) ?: '',
|
||||
]),
|
||||
$err
|
||||
);
|
||||
}
|
||||
@@ -766,7 +766,7 @@ class Curl implements Interface\RequestsInterface
|
||||
if (array_key_exists($_key, $return_headers)) {
|
||||
// raise exception if key already exists
|
||||
throw new \UnexpectedValueException(
|
||||
json_encode([
|
||||
Json::jsonConvertArrayTo([
|
||||
'status' => 'ERROR',
|
||||
'code' => 'R001',
|
||||
'type' => 'DuplicatedArrayKey',
|
||||
@@ -776,7 +776,7 @@ class Curl implements Interface\RequestsInterface
|
||||
'headers' => $headers,
|
||||
'return_headers' => $return_headers,
|
||||
],
|
||||
]) ?: '',
|
||||
]),
|
||||
1
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user