UrlRequests curl: move options set logic to main curl wrapper call

change the curlRequest call to options array and build the options array
there.
Remove any options check + pre build from the get/request calls

Update phpunit tests with string type body return
This commit is contained in:
Clemens Schwaighofer
2024-11-07 11:20:37 +09:00
parent 0c51a3be87
commit 8613e8977b
6 changed files with 151 additions and 79 deletions

View File

@@ -13,16 +13,26 @@ declare(strict_types=1);
* build return json
*
* @param array<string,mixed> $http_headers
* @param string $body
* @param ?string $body
* @return string
*/
function buildContent(array $http_headers, string $body): string
function buildContent(array $http_headers, ?string $body): string
{
if (is_string($body) && !empty($body)) {
$_body = json_decode($body, true);
if (!is_array($_body)) {
$body = [$body];
} else {
$body = $_body;
}
} elseif (is_string($body)) {
$body = [];
}
return json_encode([
'HEADERS' => $http_headers,
"REQUEST_TYPE" => $_SERVER['REQUEST_METHOD'],
"PARAMS" => $_GET,
"BODY" => json_decode($body, true)
"BODY" => $body,
]);
}
@@ -41,11 +51,15 @@ if (!empty($http_headers['HTTP_AUTHORIZATION']) && !empty($http_headers['HTTP_RU
exit;
}
if (($file_get = file_get_contents('php://input')) === false) {
// if server request type is get set file_get to null -> no body
if ($_SERVER['REQUEST_METHOD'] == "GET") {
$file_get = null;
} elseif (($file_get = file_get_contents('php://input')) === false) {
header("HTTP/1.1 404 Not Found");
print buildContent($http_headers, '{"code": 404, "content": {"Error": "file_get_contents failed"}}');
exit;
}
print buildContent($http_headers, $file_get);
// __END__

View File

@@ -768,7 +768,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
'type' => $type,
'options' => null,
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":[],"BODY":null}'
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":[],"BODY":[]}'
];
$provider["basic " . $type . ", query options"] = [
'type' => $type,
@@ -776,7 +776,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
"query" => ["foo" => "bar"],
],
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":{"foo":"bar"},"BODY":null}'
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":{"foo":"bar"},"BODY":[]}'
];
$provider["basic " . $type . ", query/body options"] = [
'type' => $type,
@@ -787,6 +787,22 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":{"foo":"bar"},"BODY":{"foobar":"barbaz"}}'
];
$provider["basic " . $type . ", body options"] = [
'type' => $type,
'options' => [
"body" => ["foobar" => "barbaz"],
],
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":[],"BODY":{"foobar":"barbaz"}}'
];
$provider["basic " . $type . ", body options as string"] = [
'type' => $type,
'options' => [
"body" => "body is a string",
],
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":[],"BODY":["body is a string"]}'
];
}
// MARK: post/put/patch
foreach (['post', 'put', 'patch'] as $type) {
@@ -814,7 +830,24 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":{"foo":"bar"},"BODY":{"foobar":"barbaz"}}'
];
$provider["basic " . $type . ", body options"] = [
'type' => $type,
'options' => [
"body" => ["foobar" => "barbaz"],
],
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":[],"BODY":{"foobar":"barbaz"}}'
];
$provider["basic " . $type . ", body option as string"] = [
'type' => $type,
'options' => [
"body" => "body is a string",
],
'return_code' => "200",
'return_content' => '{"HEADERS":{"HTTP_USER_AGENT":"CoreLibsUrlRequestCurl\/1","HTTP_ACCEPT":"*\/*","HTTP_HOST":"soba.egplusww.jp"},"REQUEST_TYPE":"' . strtoupper($type) . '","PARAMS":[],"BODY":["body is a string"]}'
];
}
// $provider['"basic post']
return $provider;
// phpcs:enable Generic.Files.LineLength
}
@@ -917,7 +950,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
);
}
// TODO: multi requests with same base connection
// MARK: multi requests with same base connection
/**
* Undocumented function
@@ -970,7 +1003,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
. '"HTTP_THIRD_CALL":"delete","HTTP_ACCEPT":"*\/*",'
. '"HTTP_HOST":"soba.egplusww.jp"},'
. '"REQUEST_TYPE":"DELETE",'
. '"PARAMS":[],"BODY":null}',
. '"PARAMS":[],"BODY":[]}',
$response['content'],
'multi call: delete content not matching'
);