parent
3a11453dd1
commit
f9eb6c4095
@ -0,0 +1,2 @@ |
|||||||
|
*~ |
||||||
|
node_modules/ |
||||||
@ -0,0 +1,55 @@ |
|||||||
|
<?php |
||||||
|
class Redirect { |
||||||
|
__construct($endpoint, $apiKey) { |
||||||
|
$this->endpoint = $endpoint; |
||||||
|
$this->apiKey = $apiKey; |
||||||
|
} |
||||||
|
function _call() { |
||||||
|
$ch = curl_init($endpoint); |
||||||
|
|
||||||
|
curl_setopt_array($ch, [ |
||||||
|
CURLOPT_RETURNTRANSFER => true, |
||||||
|
CURLOPT_HTTPHEADER => [ |
||||||
|
'Accept: application/json', |
||||||
|
'Content-Type: application/json', |
||||||
|
"X-API-Key: $apikey", |
||||||
|
], |
||||||
|
]); |
||||||
|
|
||||||
|
$response = curl_exec($ch); |
||||||
|
|
||||||
|
if (curl_errno($ch)) { |
||||||
|
curl_close($ch); |
||||||
|
throw new Exception(curl_error($ch)); |
||||||
|
} else { |
||||||
|
curl_close($ch); |
||||||
|
print_r($httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
||||||
|
return (object)[ 'status' => httpCode, 'response' => json_decode($response)]; |
||||||
|
} |
||||||
|
function add($payload) { |
||||||
|
$ch = curl_init($endpoint); |
||||||
|
|
||||||
|
curl_setopt_array($ch, [ |
||||||
|
CURLOPT_RETURNTRANSFER => true, |
||||||
|
CURLOPT_POST => true, |
||||||
|
CURLOPT_HTTPHEADER => [ |
||||||
|
'Accept: application/json', |
||||||
|
'Content-Type: application/json', |
||||||
|
"X-API-Key: $apikey", |
||||||
|
], |
||||||
|
CURLOPT_POSTFIELDS => json_encode($payload), |
||||||
|
]); |
||||||
|
|
||||||
|
$response = curl_exec($ch); |
||||||
|
|
||||||
|
if (curl_errno($ch)) { |
||||||
|
curl_close($ch); |
||||||
|
throw new Exception(curl_error($ch)); |
||||||
|
} else { |
||||||
|
curl_close($ch); |
||||||
|
print_r($httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
||||||
|
return (object)[ 'status' => httpCode, 'response' => json_decode($response)]; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,74 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* |
||||||
|
* New PHP REST Framework |
||||||
|
* |
||||||
|
* Using Following SPECS |
||||||
|
* - HTTP Status Codes https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status |
||||||
|
* - HTTP Methods https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods |
||||||
|
* - REST API https://restfulapi.net/http-methods/ |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* Determines whether the incoming request has a JSON-based Content-Type. |
||||||
|
* |
||||||
|
* @param string|null $contentType Optional override for testing or CLI use. |
||||||
|
* @return bool True if the Content-Type indicates JSON. |
||||||
|
*/ |
||||||
|
function req_isjson(?string $contentType = null): bool { |
||||||
|
// Get the header from the server if not provided |
||||||
|
$type = $contentType ?? ($_SERVER['CONTENT_TYPE'] ?? ''); |
||||||
|
|
||||||
|
// Normalize and strip parameters like "; charset=utf-8" |
||||||
|
$type = strtolower(trim(explode(';', $type)[0])); |
||||||
|
|
||||||
|
// Known JSON-based media types |
||||||
|
$jsonTypes = [ |
||||||
|
'application/json', |
||||||
|
'application/ld+json', |
||||||
|
'application/vnd.api+json', // JSON:API spec |
||||||
|
'text/json', // Rare but occasionally seen |
||||||
|
]; |
||||||
|
|
||||||
|
return in_array($type, $jsonTypes, true); |
||||||
|
} |
||||||
|
|
||||||
|
function req_method($supported = ['GET','PUT','POST','DELETE','HEAD','OPTIONS'],?string $method = null): string { |
||||||
|
// Get the header from the server if not provided |
||||||
|
$method = $method ?? ($_SERVER['REQUEST_METHOD'] ?? ''); |
||||||
|
if (!in_array($_SERVER['REQUEST_METHOD'], $supported)) { |
||||||
|
http_response_code(405); |
||||||
|
header('Allow: '. join(',',$supported)); |
||||||
|
exit; |
||||||
|
} |
||||||
|
return $method; |
||||||
|
} |
||||||
|
|
||||||
|
if (req_isjson()) { |
||||||
|
$raw = file_get_contents('php://input'); |
||||||
|
|
||||||
|
$post =json_decode($raw,true,1000,JSON_INVALID_UTF8_IGNORE); |
||||||
|
|
||||||
|
if (json_last_error() !== JSON_ERROR_NONE) { |
||||||
|
throw new JSONException('JSON: '.json_last_error_msg()); |
||||||
|
} |
||||||
|
} else { |
||||||
|
$post = $_REQUEST; |
||||||
|
} |
||||||
|
var_dump($_POST); |
||||||
|
$req = (object)[ |
||||||
|
'isjson' => req_isjson(), |
||||||
|
'method' => req_method(['GET','POST']), |
||||||
|
'path' => $_SERVER['PATH_INFO'] ?? '/', |
||||||
|
'post' => $post, |
||||||
|
]; |
||||||
|
|
||||||
|
$res = (object)[ |
||||||
|
'result' => 'ok', |
||||||
|
'req' => $req, |
||||||
|
]; |
||||||
|
|
||||||
|
|
||||||
|
header('Content-Type: application/json'); |
||||||
|
echo json_encode([$res], JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT); |
||||||
|
|
||||||
Loading…
Reference in new issue