<?php

$AUTHORITIES = [
    'AT-BIO-301' => [
        'id' => 'AT-BIO-301', 'countryCode' => 'AT', 'handle' => 'ABG',
        'name' => 'Austria Bio Garantie GmbH', 'website' => 'https://www.bio-garantie.at/', 'apis' => ['easy-cert']
    ],
    'AT-BIO-302' => [
        'id' => 'AT-BIO-302', 'countryCode' => 'AT', 'handle' => 'ABG-LW',
        'name' => 'Austria Bio Garantie – Landwirtschaft GmbH', 'website' => 'https://www.bio-garantie.at/', 'apis' => ['easy-cert']
    ],
    'AT-BIO-401' => [
        'id' => 'AT-BIO-401', 'countryCode' => 'AT', 'handle' => 'BIOS',
        'name' => 'BIOS – Biokontrollservice Österreich GmbH', 'website' => 'https://www.bios-kontrolle.at/', 'apis' => ['bioqs']
    ],
    'AT-BIO-402' => [
        'id' => 'AT-BIO-402', 'countryCode' => 'AT', 'handle' => 'LACON',
        'name' => 'LACON GmbH ', 'website' => 'https://www.lacon-institut.com/', 'apis' => ['easy-cert']
    ],
    'AT-BIO-501' => [
        'id' => 'AT-BIO-501', 'countryCode' => 'AT', 'handle' => 'SLK',
        'name' => 'SLK GesmbH', 'website' => 'https://slk.at/', 'apis' => ['bioc']
    ],
    'AT-BIO-901' => [
        'id' => 'AT-BIO-901', 'countryCode' => 'AT', 'handle' => 'LVA',
        'name' => 'LVA GmbH', 'website' => 'https://www.lva.at/', 'apis' => []
    ],
    'AT-BIO-902' => [
        'id' => 'AT-BIO-902', 'countryCode' => 'AT', 'handle' => 'SGS',
        'name' => 'SGS Austria Controll-Co. Ges.m.b.H.', 'website' => 'https://www.sgs.com/de-at ', 'apis' => ['bioc']
    ],
    'AT-BIO-903' => [
        'id' => 'AT-BIO-903', 'countryCode' => 'AT', 'handle' => 'LKV',
        'name' => 'LKV Austria Gemeinnützige GmbH', 'website' => 'https://www.lkv.at/', 'apis' => ['bioc', 'lkv']
    ],
];

header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json; charset=UTF-8');

function jenc($data): string {
    return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
}

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;
}

$info = $_SERVER['PATH_INFO'];
if ($info !== '/' && str_ends_with($info, '/')) {
    header('Status: 303');
    header('Location: /organic/' . substr($info, 0, -1));
    exit;
}

$parts = explode('/', $info);
if ($info === '/authorities') {
    echo "{\"data\":[\n";
    $first = true;
    foreach ($AUTHORITIES as $auth) {
        if (!$first) echo ",\n";
        echo "  " . jenc($auth);
        $first = false;
    }
    echo "\n]}\n";
    exit;
} else if (str_starts_with($info, '/authorities/')) {
    $code = $parts[2];
    if (array_key_exists($code, $AUTHORITIES)) {
        echo jenc($AUTHORITIES[$code]);
        echo "\n";
    } else {
        header('Status: 404');
        header('Content-Length: 22');
        echo "{\"error\":\"not found\"}\n";
    }
    exit;
}

header('Status: 404');
header('Content-Length: 22');
echo "{\"error\":\"not found\"}\n";
