rosavox/lib/alveolata/cgi/functions.php
2025-05-23 07:33:29 +00:00

79 lines
1.5 KiB
PHP

<?php
namespace alveolata\cgi;
// require_once(DIR_ALVEOLATA . '/definitions.php');
require_once(DIR_ALVEOLATA . '/cookie/functions.php');
require_once(DIR_ALVEOLATA . '/http/types.php');
/**
* @author Christian Fraß <frass@greenscale.de>
*/
function get_http_request(
): \alveolata\http\struct_request
{
/*
\alveolata\log\debug(
'superglobals',
[
'server' => $_SERVER,
'cookie' => \json_encode($_COOKIE),
]
);
*/
$cookiedata = (
isset($_SERVER['HTTP_COOKIE'])
? \alveolata\cookie\decode($_SERVER['HTTP_COOKIE'])
: null
);
$request = new \alveolata\http\struct_request(
$_SERVER['SERVER_PROTOCOL'],
($_SERVER['REQUEST_METHOD'] ?? 'POST'),
$_SERVER['REQUEST_URI'],
\array_merge(
\getallheaders(),
[
'Cookie' => ($_SERVER['HTTP_COOKIE'] ?? null),
'Content-Type' => ($_SERVER['CONTENT_TYPE'] ?? 'application/json'),
],
),
\file_get_contents('php://input')
);
return $request;
}
/**
* @author Christian Fraß <frass@greenscale.de>
*/
function setup(
): void
{
while (ob_get_level() >= 1) {
ob_end_clean();
}
ob_start();
}
/**
* @author Christian Fraß <frass@greenscale.de>
*/
function put_http_response(
\alveolata\http\struct_response $response
): void
{
while (ob_get_level() >= 1) {
ob_end_clean();
}
ob_start();
foreach ($response->headers as $key => $value) {
\header(\sprintf('%s: %s', $key, $value));
}
\http_response_code($response->statuscode);
\file_put_contents('php://output', $response->body);
ob_end_flush();
}
?>