rosavox/source/backend/main.php

104 lines
2 KiB
PHP
Raw Normal View History

2025-05-23 07:33:29 +00:00
<?php
require_once('lib/alveolata/definitions.php');
require_once(DIR_ALVEOLATA . '/log/functions.php');
require_once(DIR_ALVEOLATA . '/http/types.php');
require_once(DIR_ALVEOLATA . '/cgi/functions.php');
require_once(DIR_ALVEOLATA . '/rest/functions.php');
require_once(DIR_ALVEOLATA . '/list/functions.php');
require_once('services/doc.php');
/**
*/
function main() : void
{
// init
\alveolata\cgi\setup();
\rosavox\services\doc\init();
// setup api
$rest = \alveolata\rest\make(
[
'name' => 'rosavox',
]
);
\alveolata\rest\register(
$rest,
\alveolata\http\enum_method::get,
'meta/ping',
[
'execution' => function ($version, $path_parameters, $headers, $input) {
return [
'status_code' => 200,
'data' => 'pong',
];
},
]
);
\alveolata\rest\register(
$rest,
\alveolata\http\enum_method::get,
'doc',
[
'execution' => function ($version, $path_parameters, $headers, $input) {
return [
'status_code' => 200,
'data' => \alveolata\list_\map(
\rosavox\services\doc\dump(),
function ($entry) {
return [
'id' => $entry['id'],
'doc' => [
'title' => $entry['value']->title
]
];
}
),
];
},
]
);
\alveolata\rest\register(
$rest,
\alveolata\http\enum_method::get,
'doc/{id}',
[
'execution' => function ($version, $path_parameters, $headers, $input) {
\alveolata\log\info('req', ['path_parameters' => $path_parameters]);
$id = \intval($path_parameters['id']);
$doc = \rosavox\services\doc\get($id);
return [
'status_code' => 200,
'data' => [
'title' => $doc->title,
],
];
},
]
);
// exec
$http_request = \alveolata\cgi\get_http_request();
\alveolata\log\info(
'http_request',
[
'http_request' => $http_request,
]
);
$http_response = \alveolata\rest\call($rest, $http_request);
\alveolata\log\info(
'http_response',
[
'http_response' => $http_response,
]
);
\alveolata\cgi\put_http_response($http_response);
}
main();
?>