mirror of
https://codeberg.org/vlw/vlw.se.git
synced 2025-09-13 21:13:40 +02:00
Replaces this section on the `/about` page:  with:  I will replace and fix the colors of the buttons after #15 is merged. Reviewed-on: https://codeberg.org/vlw/vlw.se/pulls/14
51 lines
No EOL
1.2 KiB
PHP
51 lines
No EOL
1.2 KiB
PHP
<?php
|
|
|
|
use Reflect\Call;
|
|
use Reflect\Path;
|
|
use Reflect\Response;
|
|
use ReflectRules\Type;
|
|
use ReflectRules\Rules;
|
|
use ReflectRules\Ruleset;
|
|
|
|
use VLW\API\Endpoints;
|
|
|
|
require_once Path::root("src/Endpoints.php");
|
|
|
|
const PARM_FORCE_RECACHE = "force_recache";
|
|
|
|
class GET_AboutLanguages {
|
|
protected Ruleset $ruleset;
|
|
|
|
public function __construct() {
|
|
$this->ruleset = new Ruleset(strict: true);
|
|
|
|
$this->ruleset->GET([
|
|
(new Rules(PARM_FORCE_RECACHE))
|
|
->type(Type::BOOLEAN)
|
|
->default(false)
|
|
]);
|
|
|
|
$this->ruleset->validate_or_exit();
|
|
}
|
|
|
|
private static function cache_exists(): bool {
|
|
return file_exists($_ENV["forgejo_languages"]["cache_file"]);
|
|
}
|
|
|
|
private static function load_cache(): array {
|
|
return json_decode(file_get_contents($_ENV["forgejo_languages"]["cache_file"]), true);
|
|
}
|
|
|
|
public function main(): Response {
|
|
// Delete cache file if force flag is set
|
|
if ($_GET[PARM_FORCE_RECACHE]) {
|
|
(new Call(Endpoints::ABOUT_LANGUAGES->value))->delete();
|
|
}
|
|
|
|
return self::cache_exists()
|
|
// Return languages from cache
|
|
? new Response(self::load_cache())
|
|
// Fetch and return languages (and generate cache file if enabled)
|
|
: new Response((new Call(Endpoints::ABOUT_LANGUAGES->value))->post());
|
|
}
|
|
} |