Update UrlRequests with patch, admin test page for it
Also update delete to have optional body (content)
This commit is contained in:
35
www/admin/UrlReqeusts.target.php
Normal file
35
www/admin/UrlReqeusts.target.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// url requests target test
|
||||||
|
require 'config.php';
|
||||||
|
use CoreLibs\Convert\Json;
|
||||||
|
$LOG_FILE_ID = 'classTest-urlrequests-target';
|
||||||
|
$log = new CoreLibs\Logging\Logging([
|
||||||
|
'log_folder' => BASE . LOG,
|
||||||
|
'log_file_id' => $LOG_FILE_ID,
|
||||||
|
'log_per_date' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$http_headers = array_filter($_SERVER, function ($value, $key) {
|
||||||
|
if (str_starts_with($key, 'HTTP_')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}, ARRAY_FILTER_USE_BOTH);
|
||||||
|
|
||||||
|
$file_get = file_get_contents('php://input');
|
||||||
|
// str_replace('\"', '"', trim($file_get, '"'));
|
||||||
|
|
||||||
|
$log->debug('SERVER', $log->prAr($_SERVER));
|
||||||
|
$log->debug('HEADERS', $log->prAr($http_headers));
|
||||||
|
$log->debug('POST', $log->prAr($_POST));
|
||||||
|
$log->debug('PHP-INPUT', $log->prAr($file_get));
|
||||||
|
|
||||||
|
print Json::jsonConvertArrayTo([
|
||||||
|
'HTTP_HEADERS' => $http_headers,
|
||||||
|
"_GET" => $_GET,
|
||||||
|
"_POST" => Json::jsonConvertToArray($file_get),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$log->debug('[END]', '=========================================>');
|
||||||
|
|
||||||
|
// __END__
|
||||||
@@ -35,13 +35,88 @@ print "<body>";
|
|||||||
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
|
|
||||||
$url = 'https://soba.egplusww.jp';
|
print "<hr>";
|
||||||
|
$data = $client->requestGet(
|
||||||
$data = $client->requestGet($url, []);
|
'https://soba.egplusww.jp/developers/clemens/core_data/php_libraries/trunk/www/admin/UrlReqeusts.target.php'
|
||||||
|
. '?other=get_a',
|
||||||
|
['test-header: ABC', 'request-type: _GET'],
|
||||||
|
['foo' => 'BAR']
|
||||||
|
);
|
||||||
|
print "_GET RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
||||||
|
|
||||||
print "<hr>";
|
print "<hr>";
|
||||||
print "RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
$data = $client->requestPost(
|
||||||
|
'https://soba.egplusww.jp/developers/clemens/core_data/php_libraries/trunk/www/admin/UrlReqeusts.target.php'
|
||||||
|
. '?other=post_a',
|
||||||
|
['payload' => 'data post'],
|
||||||
|
[
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Accept: application/json',
|
||||||
|
'test-header: ABC',
|
||||||
|
'info-request-type: _POST'
|
||||||
|
],
|
||||||
|
['foo' => 'BAR post'],
|
||||||
|
);
|
||||||
|
print "_POST RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
||||||
|
|
||||||
print "<hr>";
|
print "<hr>";
|
||||||
|
$data = $client->requestPut(
|
||||||
|
'https://soba.egplusww.jp/developers/clemens/core_data/php_libraries/trunk/www/admin/UrlReqeusts.target.php'
|
||||||
|
. '?other=put_a',
|
||||||
|
['payload' => 'data put'],
|
||||||
|
[
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Accept: application/json',
|
||||||
|
'test-header: ABC',
|
||||||
|
'info-request-type: _PUT'
|
||||||
|
],
|
||||||
|
['foo' => 'BAR put'],
|
||||||
|
);
|
||||||
|
print "_PUT RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
||||||
|
|
||||||
|
print "<hr>";
|
||||||
|
$data = $client->requestPatch(
|
||||||
|
'https://soba.egplusww.jp/developers/clemens/core_data/php_libraries/trunk/www/admin/UrlReqeusts.target.php'
|
||||||
|
. '?other=patch_a',
|
||||||
|
['payload' => 'data patch'],
|
||||||
|
[
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Accept: application/json',
|
||||||
|
'test-header: ABC',
|
||||||
|
'info-request-type: _PATCH'
|
||||||
|
],
|
||||||
|
['foo' => 'BAR patch'],
|
||||||
|
);
|
||||||
|
print "_PATCH RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
||||||
|
|
||||||
|
print "<hr>";
|
||||||
|
$data = $client->requestDelete(
|
||||||
|
'https://soba.egplusww.jp/developers/clemens/core_data/php_libraries/trunk/www/admin/UrlReqeusts.target.php'
|
||||||
|
. '?other=delete_no_body_a',
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Accept: application/json',
|
||||||
|
'test-header: ABC',
|
||||||
|
'info-request-type: _DELETE'
|
||||||
|
],
|
||||||
|
['foo' => 'BAR delete'],
|
||||||
|
);
|
||||||
|
print "_DELETE RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
||||||
|
$data = $client->requestDelete(
|
||||||
|
'https://soba.egplusww.jp/developers/clemens/core_data/php_libraries/trunk/www/admin/UrlReqeusts.target.php'
|
||||||
|
. '?other=delete_body_a',
|
||||||
|
['payload' => 'data delete'],
|
||||||
|
[
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Accept: application/json',
|
||||||
|
'test-header: ABC',
|
||||||
|
'info-request-type: _DELETE'
|
||||||
|
],
|
||||||
|
['foo' => 'BAR delete'],
|
||||||
|
);
|
||||||
|
print "_DELETE RESPONSE: <pre>" . print_r($data, true) . "</pre>";
|
||||||
|
|
||||||
|
|
||||||
print "</body></html>";
|
print "</body></html>";
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,11 @@ use CoreLibs\Convert\Json;
|
|||||||
class Curl implements Interface\RequestsInterface
|
class Curl implements Interface\RequestsInterface
|
||||||
{
|
{
|
||||||
/** @var array<string> all the valid request type */
|
/** @var array<string> all the valid request type */
|
||||||
private const VALID_REQUEST_TYPES = ["get", "post", "put", "delete"];
|
private const VALID_REQUEST_TYPES = ["get", "post", "put", "patch", "delete"];
|
||||||
|
/** @var array<string> list of requests type that are set as custom in the curl options */
|
||||||
|
private const CUSTOM_REQUESTS = ["put", "patch", "delete"];
|
||||||
|
/** @var array<string> list of requests types that have _POST type fields */
|
||||||
|
private const HAVE_POST_FIELDS = ["post", "put", "patch", "delete"];
|
||||||
/** @var int error bad request */
|
/** @var int error bad request */
|
||||||
public const HTTP_BAD_REQUEST = 400;
|
public const HTTP_BAD_REQUEST = 400;
|
||||||
/** @var int error not authorized Request */
|
/** @var int error not authorized Request */
|
||||||
@@ -143,10 +147,10 @@ class Curl implements Interface\RequestsInterface
|
|||||||
// for post we set POST option
|
// for post we set POST option
|
||||||
if ($type == "post") {
|
if ($type == "post") {
|
||||||
curl_setopt($handle, CURLOPT_POST, true);
|
curl_setopt($handle, CURLOPT_POST, true);
|
||||||
} elseif (in_array($type, ["put", "delete"])) {
|
} elseif (in_array($type, self::CUSTOM_REQUESTS)) {
|
||||||
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, strtoupper($type));
|
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, strtoupper($type));
|
||||||
}
|
}
|
||||||
if (in_array($type, ["post", "put"]) && !empty($params)) {
|
if (in_array($type, self::HAVE_POST_FIELDS) && !empty($params)) {
|
||||||
curl_setopt($handle, CURLOPT_POSTFIELDS, $params);
|
curl_setopt($handle, CURLOPT_POSTFIELDS, $params);
|
||||||
}
|
}
|
||||||
// run curl execute
|
// run curl execute
|
||||||
@@ -386,19 +390,55 @@ class Curl implements Interface\RequestsInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes an request to the target url via curl: DELETE
|
* Makes an request to the target url via curl: PATCH
|
||||||
* Returns result as string (json)
|
* Returns result as string (json)
|
||||||
*
|
*
|
||||||
* @param string $url The URL being requested,
|
* @param string $url The URL being requested,
|
||||||
* including domain and protocol
|
* including domain and protocol
|
||||||
|
* @param string|array<string,mixed> $payload String to pass on as POST
|
||||||
|
* @param array<string> $headers [default=[]] Headers to be used in the request
|
||||||
|
* @param null|string|array<string,mixed> $query [default=null] Optinal query parameters, array will be converted
|
||||||
|
* @return array{code:string,content:string} Result code and content as array, content is json
|
||||||
|
*/
|
||||||
|
public function requestPatch(
|
||||||
|
string $url,
|
||||||
|
string|array $payload,
|
||||||
|
array $headers = [],
|
||||||
|
null|string|array $query = null
|
||||||
|
): array {
|
||||||
|
return $this->curlRequest(
|
||||||
|
"patch",
|
||||||
|
$this->convertQuery($url, $query),
|
||||||
|
$headers,
|
||||||
|
$this->convertPayloadData($payload)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Makes an request to the target url via curl: DELETE
|
||||||
|
* Returns result as string (json)
|
||||||
|
* Note that DELETE payload is optional
|
||||||
|
*
|
||||||
|
* @param string $url The URL being requested,
|
||||||
|
* including domain and protocol
|
||||||
|
* @param null|string|array<string,mixed> $payload [default=null] Data to pass on as POST
|
||||||
* @param array<string> $headers [default=[]] Headers to be used in the request
|
* @param array<string> $headers [default=[]] Headers to be used in the request
|
||||||
* @param null|string|array<string,mixed> $query [default=null] String to pass on as GET,
|
* @param null|string|array<string,mixed> $query [default=null] String to pass on as GET,
|
||||||
* if array will be converted
|
* if array will be converted
|
||||||
* @return array{code:string,content:string} Result code and content as array, content is json
|
* @return array{code:string,content:string} Result code and content as array, content is json
|
||||||
*/
|
*/
|
||||||
public function requestDelete(string $url, array $headers = [], null|string|array $query = null): array
|
public function requestDelete(
|
||||||
{
|
string $url,
|
||||||
return $this->curlRequest("delete", $this->convertQuery($url, $query), $headers);
|
null|string|array $payload = null,
|
||||||
|
array $headers = [],
|
||||||
|
null|string|array $query = null
|
||||||
|
): array {
|
||||||
|
return $this->curlRequest(
|
||||||
|
"delete",
|
||||||
|
$this->convertQuery($url, $query),
|
||||||
|
$headers,
|
||||||
|
$payload !== null ? $this->convertPayloadData($payload) : null
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,15 +63,22 @@ interface RequestsInterface
|
|||||||
/**
|
/**
|
||||||
* Makes an request to the target url via curl: DELETE
|
* Makes an request to the target url via curl: DELETE
|
||||||
* Returns result as string (json)
|
* Returns result as string (json)
|
||||||
|
* Note that DELETE payload is optional
|
||||||
*
|
*
|
||||||
* @param string $url The URL being requested,
|
* @param string $url The URL being requested,
|
||||||
* including domain and protocol
|
* including domain and protocol
|
||||||
|
* @param null|string|array<string,mixed> $payload [default=null] Data to pass on as POST
|
||||||
* @param array<string> $headers [default=[]] Headers to be used in the request
|
* @param array<string> $headers [default=[]] Headers to be used in the request
|
||||||
* @param null|string|array<string,mixed> $query [default=null] String to pass on as GET,
|
* @param null|string|array<string,mixed> $query [default=null] String to pass on as GET,
|
||||||
* if array will be converted
|
* if array will be converted
|
||||||
* @return array{code:string,content:string} Result code and content as array, content is json
|
* @return array{code:string,content:string} Result code and content as array, content is json
|
||||||
*/
|
*/
|
||||||
public function requestDelete(string $url, array $headers = [], null|string|array $query = null): array;
|
public function requestDelete(
|
||||||
|
string $url,
|
||||||
|
null|string|array $payload = null,
|
||||||
|
array $headers = [],
|
||||||
|
null|string|array $query = null
|
||||||
|
): array;
|
||||||
}
|
}
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
Reference in New Issue
Block a user