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