[WIP] Mounts TOML + XML parsers

This commit is contained in:
slawkens
2026-02-26 19:48:16 +01:00
parent 8a5823a69c
commit f975bd2f2a
3 changed files with 112 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
<?php
namespace MyAAC\Server;
use MyAAC\Cache\Cache;
class Mounts
{
public static function get()
{
return Cache::remember('mounts', 10 * 60, function () {
if (file_exists(config('server_path') . TOML\Mounts::FILE)) {
$mounts = new TOML\Mounts();
}
else {
$mounts = new XML\Mounts();
}
$mounts->load();
return $mounts->get();
});
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace MyAAC\Server\TOML;
use Devium\Toml\Toml;
class Mounts
{
private array $mounts = [];
const FILE = 'config/mounts.toml';
public function load(): void
{
$file = config('server_path') . self::FILE;
if(!@file_exists($file)) {
return;
}
$toml = file_get_contents($file);
$mounts = Toml::decode($toml, asArray: true);
foreach ($mounts as $name => $mount)
{
$this->mounts[] = [
'id' => $mount['id'],
'client_id' => $mount['clientid'] ?? false,
'name' => $name,
'speed' => $mount['speed'] ?? 0,
'premium' => $mount['premium'] ?? false,
];
}
}
public function get(): array {
return $this->mounts;
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace MyAAC\Server\XML;
class Mounts
{
private array $mounts = [];
const FILE = 'XML/mounts.xml';
public function load(): void
{
$file = config('data_path') . self::FILE;
if(!@file_exists($file)) {
return;
}
$xml = new \DOMDocument();
$xml->load($file);
foreach ($xml->getElementsByTagName('mount') as $mount) {
$this->mounts[] = $this->parseMountNode($mount);
}
}
private function parseMountNode($node): array
{
$id = (int)$node->getAttribute('id');
$client_id = (int)$node->getAttribute('clientid');
$name = $node->getAttribute('name');
$speed = (int)$node->getAttribute('speed');
$premium = getBoolean($node->getAttribute('premium'));
$type = $node->getAttribute('type');
return [
'id' => $id,
'client_id' => $client_id,
'name' => $name,
'speed' => $speed,
'premium' => $premium,
'type' => $type
];
}
public function get(): array {
return $this->mounts;
}
}