<?php

if ($_SERVER['REQUEST_METHOD'] !== 'GET' && $_SERVER['REQUEST_METHOD'] !== 'HEAD') {
    header('Status: 405');
    header('Content-Length: 0');
    header('Allow: GET, HEAD');
    exit;
}

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

$parts = explode('/', $info);
if (str_starts_with($info, '/certificates/')) {
    $id = $parts[2];
    if (str_ends_with($id, '.txt')) {
        $id = substr($id, 0, -4);
    }
    if (str_contains($id, '/') || !file_exists("certificates/$id.pdf")) {
        header('Content-Length: 0');
        header('Status: 404');
        exit;
    }
    if (str_ends_with($parts[2], '.txt')) {
        $mode = '-layout';
        if (isset($_GET['raw']) && strtolower($_GET['raw']) === 'true') {
            $mode = '-raw';
        }
        header('Content-Type: text/plain; charset=UTF-8');
        system("pdftotext $mode 'certificates/$id.pdf' -");
        exit;
    }

    if (str_ends_with($id, '.appendix')) {
        header('Status: 303');
        header('Location: ' . substr($id, 0, -9));;
        exit;
    }

    $cert = shell_exec("pdftotext -raw 'certificates/$id.pdf' -");
    $appendix = shell_exec("pdftotext -raw 'certificates/$id.appendix.pdf' -");

    $p1 = strpos($cert, "\nI.3 ");
    $p2 = strpos($cert, "\nI.4 ");
    echo substr($cert, $p1 + 5, $p2 - $p1 - 5);

    exit;
} else if ($info === '/authorities') {
    header('Content-Type: application/json; charset=UTF-8');
    echo <<<EOF
{"data":[
  {"id":"AT-BIO-301","countryCode":"AT","handle":"ABG","name":"Austria Bio Garantie GmbH","website":"https://www.bio-garantie.at/","apis":["easy-cert"]},
  {"id":"AT-BIO-302","countryCode":"AT","handle":"ABG-LW","name":"Austria Bio Garantie – Landwirtschaft GmbH","website":"https://www.bio-garantie.at/","apis":["easy-cert"]},
  {"id":"AT-BIO-401","countryCode":"AT","handle":"BIOS","name":"BIOS – Biokontrollservice Österreich GmbH","website":"https://www.bios-kontrolle.at/","apis":["bioqs"]},
  {"id":"AT-BIO-402","countryCode":"AT","handle":"LACON","name":"LACON GmbH ","website":"https://www.lacon-institut.com/","apis":["easy-cert"]},
  {"id":"AT-BIO-501","countryCode":"AT","handle":"SLK","name":"SLK GesmbH","website":"https://slk.at/","apis":["bioc"]},
  {"id":"AT-BIO-901","countryCode":"AT","handle":"LVA","name":"LVA GmbH","website":"https://www.lva.at/","apis":[]},
  {"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"]},
  {"id":"AT-BIO-903","countryCode":"AT","handle":"LKV","name":"LKV Austria Gemeinnützige GmbH","website":"https://www.lkv.at/","apis":["bioc","lkv"]}
]}

EOF;
    exit;
} else if (str_starts_with($info, '/authorities/')) {
    $code = $parts[2];
    header('Content-Type: text/plain; charset=UTF-8');
    echo "Control Authority Code: $code\n";
    exit;
} else if ($info === '/operators') {
    header('Status: 501');

    exit;
} else if (str_starts_with($info, '/operators/')) {
    $ooid = $parts[2];
    header('Content-Type: text/plain; charset=UTF-8');
    echo "Organic Operator Id: $ooid\n";
    exit;
}

header('Content-Length: 0');
header('Status: 404');
