Catch and verify put and patch input values.

This commit is contained in:
KJ 2024-08-13 10:22:44 -04:00
parent 05cd83fd10
commit daf7250882

View File

@ -15,6 +15,8 @@ namespace Libs;
class Request extends Neuron { class Request extends Neuron {
public Neuron $get; public Neuron $get;
public Neuron $post; public Neuron $post;
public Neuron $put;
public Neuron $patch;
public Neuron $json; public Neuron $json;
public Neuron $params; public Neuron $params;
public string $path; public string $path;
@ -31,14 +33,21 @@ class Request extends Neuron {
$this->path = Router::currentPath(); $this->path = Router::currentPath();
$this->get = new Neuron($_GET); $this->get = new Neuron($_GET);
$this->post = new Neuron($_POST); $this->post = new Neuron($_POST);
$this->put = new Neuron();
$this->patch = new Neuron();
$contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : ''; $contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';
if ($contentType === "application/json") if ($contentType === "application/json")
$this->json = new Neuron( $this->json = new Neuron(
(object) json_decode(trim(file_get_contents("php://input")), false) (object) json_decode(trim(file_get_contents("php://input")), false)
); );
else else {
$this->json = new Neuron(); $this->json = new Neuron();
if (in_array($_SERVER['REQUEST_METHOD'], ['PUT', 'PATCH'])) {
parse_str(file_get_contents("php://input"), $input_vars);
$this->{strtolower($_SERVER['REQUEST_METHOD'])} = new Neuron($input_vars);
}
}
$this->params = new Neuron(); $this->params = new Neuron();
} }
@ -50,10 +59,10 @@ class Request extends Neuron {
*/ */
public function validate(): mixed public function validate(): mixed
{ {
if ($_SERVER['REQUEST_METHOD'] == 'GET') $actual = match($_SERVER['REQUEST_METHOD']) {
$actual = $this->get; 'GET', 'DELETE' => $this->get,
else default => $this->{strtolower($_SERVER['REQUEST_METHOD'])}
$actual = $this->post; };
if (Validator::validateList(static::paramRules(), $this->params) && if (Validator::validateList(static::paramRules(), $this->params) &&
Validator::validateList(static::getRules(), $this->get ) && Validator::validateList(static::getRules(), $this->get ) &&