organic: Enhance external apis

This commit is contained in:
2025-12-22 16:56:23 +01:00
parent 551ddd3c11
commit 0cd3b3de8e
10 changed files with 350 additions and 110 deletions

45
www/organic/external/index.php vendored Normal file
View File

@@ -0,0 +1,45 @@
<?php
$APIS = [
'bioc' => ['id' => 'bioc', 'endpoints' => ['https://elwig.at/organic/external/bioc/operators']],
'bioqs' => ['id' => 'bioqs', 'endpoints' => ['https://elwig.at/organic/external/bioqs/operators', 'https://elwig.at/organic/external/bioqs/attachments']],
'easy-cert' => ['id' => 'easy-cert', 'endpoints' => ['https://elwig.at/organic/external/easy-cert/operators']],
'lkv' => ['id' => 'lkv', 'endpoints' => ['https://elwig.at/organic/external/lkv/operators']],
];
function jenc($data): string {
return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
}
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json; charset=UTF-8');
if ($_SERVER['REQUEST_METHOD'] !== 'GET' && $_SERVER['REQUEST_METHOD'] !== 'HEAD') {
header('Status: 405');
header('Content-Length: 56');
header('Allow: GET, HEAD');
echo "{\"error\":\"method not allowed\",\"allow\":[\"GET\",\"HEAD\"]}\n";
exit;
}
if ($_SERVER['PATH_INFO'] !== '') {
$code = rtrim(substr($_SERVER['PATH_INFO'], 1), '/');
header('Content-Type: application/json; charset=UTF-8');
if (array_key_exists($code, $APIS)) {
echo jenc($APIS[$code]);
echo "\n";
exit;
}
header('Status: 404');
header('Content-Length: 22');
echo "{\"error\":\"not found\"}\n";
}
echo "{\"apis\":[\n";
$first = true;
foreach ($APIS as $api) {
if (!$first) echo ",\n";
echo " " . jenc($api);
$first = false;
}
echo "\n]}\n";