Response/Params

* so we can't directly use BackedEnum::tryFrom as validator, because if
   the Enum is of <int> and the string is not what php considers numeric,
   we get a straight TypeError Exception instead of null for failing the tryFrom.
This commit is contained in:
Sarjuuk
2025-10-06 16:55:29 +02:00
parent e37620c01b
commit 05f5b0ed34
4 changed files with 10 additions and 3 deletions

View File

@@ -9,7 +9,7 @@ if (!defined('AOWOW_REVISION'))
class DataBaseResponse extends TextResponse
{
protected array $expectedGET = array(
'locale' => ['filter' => FILTER_CALLBACK, 'options' => [Locale::class, 'tryFrom'] ],
'locale' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkLocale' ]],
't' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkTextLine' ]],
'catg' => ['filter' => FILTER_VALIDATE_INT ],
'skill' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkSkill' ]],

View File

@@ -45,7 +45,7 @@ class GuideEditResponse extends TemplateResponse
'description' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkDescription'] ],
'changelog' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkTextBlob'] ],
'body' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkTextBlob'] ],
'locale' => ['filter' => FILTER_CALLBACK, 'options' => [Locale::class, 'tryFrom'] ],
'locale' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkLocale'] ],
'category' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_value' => 1, 'max_value' => 9] ],
'specId' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_value' => -1, 'max_value' => 2, 'default' => -1]],
'classId' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_value' => 1, 'max_value' => 11, 'default' => 0]]

View File

@@ -9,7 +9,7 @@ if (!defined('AOWOW_REVISION'))
class LocaleBaseResponse extends TextResponse
{
protected array $expectedGET = array(
'locale' => ['filter' => FILTER_CALLBACK, 'options' => [Locale::class, 'tryFrom']]
'locale' => ['filter' => FILTER_CALLBACK, 'options' => [self::class, 'checkLocale']]
);
protected function generate() : void

View File

@@ -645,6 +645,13 @@ abstract class BaseResponse
return preg_replace('/ +/', ' ', trim($str));
}
protected static function checkLocale(string $localeId) : ?Locale
{
if (Util::checkNumeric($localeId, NUM_CAST_INT))
return Locale::tryFrom($localeId);
return null;
}
/********************/
/* child implements */