Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
d5f4955070 |
@@ -51,7 +51,7 @@ final class request
|
||||
*/
|
||||
public method $method {
|
||||
// Write
|
||||
set (method|string $value) {
|
||||
set(method|string $value) {
|
||||
if (isset($this->{__PROPERTY__})) {
|
||||
// The property is already initialized
|
||||
|
||||
@@ -61,23 +61,23 @@ final class request
|
||||
|
||||
if ($value instanceof method) {
|
||||
// Received implementation of the method
|
||||
|
||||
|
||||
// Writing
|
||||
$this->method = $value;
|
||||
} else {
|
||||
// Received a string literal (excected name of the method)
|
||||
|
||||
|
||||
// Initializing implementator of the method
|
||||
$method = method::{strtolower($value)};
|
||||
|
||||
if ($method instanceof method) {
|
||||
// Initialized implementator of the method
|
||||
|
||||
|
||||
// Writing
|
||||
$this->method = $method;
|
||||
} else {
|
||||
// Not initialized implementator of the method
|
||||
|
||||
|
||||
// Exit (fail)
|
||||
throw new exception_domain('Failed to recognize method: ' . $value, status::not_implemented->value);
|
||||
}
|
||||
@@ -96,7 +96,7 @@ final class request
|
||||
*/
|
||||
public string $uri {
|
||||
// Write
|
||||
set (string $value) {
|
||||
set(string $value) {
|
||||
if (isset($this->{__PROPERTY__})) {
|
||||
// The property is already initialized
|
||||
|
||||
@@ -121,7 +121,7 @@ final class request
|
||||
*/
|
||||
public protocol $protocol {
|
||||
// Write
|
||||
set (protocol|string $value) {
|
||||
set(protocol|string $value) {
|
||||
if (isset($this->{__PROPERTY__})) {
|
||||
// The property is already initialized
|
||||
|
||||
@@ -131,23 +131,23 @@ final class request
|
||||
|
||||
if ($value instanceof protocol) {
|
||||
// Received implementation of HTTP version
|
||||
|
||||
|
||||
// Writing
|
||||
$this->protocol = $value;
|
||||
} else {
|
||||
// Received a string literal (excected name of HTTP version)
|
||||
|
||||
|
||||
// Initializing implementator of HTTP version
|
||||
$protocol = protocol::tryFrom($value);
|
||||
|
||||
if ($protocol instanceof protocol) {
|
||||
// Initialized implementator of HTTP version
|
||||
|
||||
|
||||
// Writing
|
||||
$this->protocol = $protocol;
|
||||
} else {
|
||||
// Not initialized implementator of HTTP version
|
||||
|
||||
|
||||
// Exit (fail)
|
||||
throw new exception_domain('Failed to recognize HTTP version: ' . $value, status::http_version_not_supported->value);
|
||||
}
|
||||
@@ -187,16 +187,16 @@ final class request
|
||||
*/
|
||||
public array $parameters {
|
||||
// Write
|
||||
set (array $value) {
|
||||
set(array $value) {
|
||||
if (isset($this->{__PROPERTY__})) {
|
||||
// The property is already initialized
|
||||
|
||||
// Exit (fail)
|
||||
throw new exception_runtime('The property is already initialized: ' . __PROPERTY__, status::internal_server_error->value);
|
||||
}
|
||||
|
||||
|
||||
// Writing
|
||||
$this->parameters = $value;
|
||||
$this->parameters = $value;
|
||||
}
|
||||
|
||||
// Read
|
||||
@@ -222,7 +222,7 @@ final class request
|
||||
*/
|
||||
public array $files {
|
||||
// Write
|
||||
set (array $value) {
|
||||
set(array $value) {
|
||||
if (isset($this->{__PROPERTY__})) {
|
||||
// The property is already initialized
|
||||
|
||||
@@ -233,14 +233,14 @@ final class request
|
||||
if (isset($this->method)) {
|
||||
// Initialized method
|
||||
|
||||
if ($this->method->body()) {
|
||||
if ($this->method->body()) {
|
||||
// Request with this method can has body
|
||||
|
||||
// Writing
|
||||
$this->files = $value;
|
||||
$this->files = $value;
|
||||
} else {
|
||||
// Request with this method can not has body
|
||||
|
||||
|
||||
// Exit (fail)
|
||||
throw new exception_logic('Request with ' . $this->method->value . ' method can not has body therefore can not has files', status::internal_server_error->value);
|
||||
}
|
||||
@@ -270,7 +270,7 @@ final class request
|
||||
*/
|
||||
public array $options {
|
||||
// Write
|
||||
set (array $value) {
|
||||
set(array $value) {
|
||||
if (isset($this->{__PROPERTY__})) {
|
||||
// The property is already initialized
|
||||
|
||||
@@ -334,7 +334,7 @@ final class request
|
||||
|
||||
if (isset($headers)) {
|
||||
// Received headers
|
||||
|
||||
|
||||
// Declaring the buffer of headers
|
||||
$buffer = [];
|
||||
|
||||
@@ -346,10 +346,10 @@ final class request
|
||||
|
||||
if (empty($name)) {
|
||||
// Not normalized name of header
|
||||
|
||||
|
||||
// Exit (fail)
|
||||
throw new exception_domain('Failed to normalize name of header', status::internal_server_error->value);
|
||||
}
|
||||
}
|
||||
|
||||
// Writing into the buffer of headers
|
||||
$buffer[$name] = $value;
|
||||
@@ -382,7 +382,7 @@ final class request
|
||||
|
||||
if (!isset($headers)) {
|
||||
// Received headers
|
||||
|
||||
|
||||
// Declaring the buffer of headers
|
||||
$buffer = [];
|
||||
|
||||
@@ -394,10 +394,10 @@ final class request
|
||||
|
||||
if (empty($name)) {
|
||||
// Not normalized name of header
|
||||
|
||||
|
||||
// Exit (fail)
|
||||
throw new exception_domain('Failed to normalize name of header', status::internal_server_error->value);
|
||||
}
|
||||
}
|
||||
|
||||
// Writing into the buffer of headers
|
||||
$buffer[$name] = $value;
|
||||
@@ -410,7 +410,7 @@ final class request
|
||||
unset($buffer);
|
||||
}
|
||||
|
||||
if ($this->headers['content-type'] === content::json->value) {
|
||||
if (str_starts_with($this->headers['content-type'], content::json->value)) {
|
||||
// The body contains "application/json"
|
||||
|
||||
// Initializing data from the input buffer
|
||||
@@ -438,10 +438,13 @@ final class request
|
||||
|
||||
// Writing files from environment into the property
|
||||
$this->files = $_FILES ?? [];
|
||||
} else if ($this->method->body()) {
|
||||
} else if ($this->method->body()) {
|
||||
// Non POST method and can has body
|
||||
|
||||
if (match($this->headers['content-type']) { content::form->value, content::encoded->value => true, default => false }) {
|
||||
if (
|
||||
str_starts_with($this->headers['content-type'], content::form->value) ||
|
||||
str_starts_with($this->headers['content-type'], content::encoded->value)
|
||||
) {
|
||||
// Non POST method and the body content type is "multipart/form-data" or "application/x-www-form-urlencoded"
|
||||
|
||||
// Writing parameters and files from environment into the properties
|
||||
@@ -475,13 +478,13 @@ final class request
|
||||
*
|
||||
* @return response Reponse for request
|
||||
*/
|
||||
public function response(): response
|
||||
public function response(): response
|
||||
{
|
||||
// Exit (success)
|
||||
return new response(protocol: $this->protocol, status: status::ok);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Header
|
||||
*
|
||||
* Write a header to the headers property
|
||||
@@ -493,7 +496,7 @@ final class request
|
||||
*
|
||||
* @return self The instance from which the method was called (fluent interface)
|
||||
*/
|
||||
public function header(string $name, string $value): self
|
||||
public function header(string $name, string $value): self
|
||||
{
|
||||
// Normalizing name of header and writing to the headers property (https://www.rfc-editor.org/rfc/rfc7540#section-8.1.2)
|
||||
$this->headers[mb_strtolower($name, 'UTF-8')] = $value;
|
||||
|
Reference in New Issue
Block a user