111
This commit is contained in:
@@ -28,7 +28,6 @@ abstract class Request implements RequestInterface
|
||||
protected string $method;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
@@ -68,6 +67,16 @@ abstract class Request implements RequestInterface
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $method
|
||||
* @return bool
|
||||
*/
|
||||
public function isMethod(string $method): bool
|
||||
{
|
||||
return $this->method == $method;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return UriInterface
|
||||
*/
|
||||
|
||||
@@ -3,12 +3,8 @@
|
||||
namespace Protocol\Message;
|
||||
|
||||
use Http\Context\Context;
|
||||
use Kiri\Core\Xml;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Message\StreamInterface;
|
||||
use Psr\Http\Message\UploadedFileInterface;
|
||||
|
||||
|
||||
/**
|
||||
@@ -98,42 +94,6 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param mixed|null $default
|
||||
* @return mixed
|
||||
*/
|
||||
public function post(string $name, mixed $default = null): mixed
|
||||
{
|
||||
return $this->parsedBody[$name] ?? $default;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param string|null $default
|
||||
* @return string|null
|
||||
*/
|
||||
public function query(string $name, ?string $default = null): ?string
|
||||
{
|
||||
return $this->queryParams[$name] ?? $default;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return \Psr\Http\Message\UploadedFileInterface|null
|
||||
*/
|
||||
public function file(string $name): ?UploadedFileInterface
|
||||
{
|
||||
if (isset($this->parsedBody[$name])) {
|
||||
$files = $this->parsedBody[$name];
|
||||
return new Uploaded($files['tmp_name'], $files['name'], $files['type'], $files['size'], $files['error']);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return null|array
|
||||
*/
|
||||
|
||||
@@ -5,12 +5,17 @@ namespace Server\Constrict;
|
||||
use Http\Context\Context;
|
||||
use Http\IInterface\AuthIdentity;
|
||||
use JetBrains\PhpStorm\Pure;
|
||||
use Kiri\Core\Xml;
|
||||
use Kiri\Kiri;
|
||||
use Protocol\Message\ServerRequest;
|
||||
use Protocol\Message\Stream;
|
||||
use Protocol\Message\Uri;
|
||||
use Protocol\Message\Uploaded;
|
||||
use Psr\Http\Message\StreamInterface;
|
||||
use Psr\Http\Message\UploadedFileInterface;
|
||||
use Psr\Http\Message\UriInterface;
|
||||
use Server\Message\Request as RequestMessage;
|
||||
use Server\Message\Response;
|
||||
use Server\Message\Uploaded;
|
||||
use Server\RequestInterface;
|
||||
use Server\ResponseInterface;
|
||||
|
||||
@@ -20,11 +25,11 @@ class Request implements RequestInterface
|
||||
|
||||
|
||||
/**
|
||||
* @return RequestMessage
|
||||
* @return ServerRequest
|
||||
*/
|
||||
private function __call__(): RequestMessage
|
||||
private function __call__(): ServerRequest
|
||||
{
|
||||
return Context::getContext(RequestInterface::class, new RequestMessage());
|
||||
return Context::getContext(RequestInterface::class, new ServerRequest());
|
||||
}
|
||||
|
||||
|
||||
@@ -45,9 +50,11 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public static function create(\Swoole\Http\Request $request): array
|
||||
{
|
||||
$serverRequest = ServerRequest::createServerRequest($request);
|
||||
|
||||
Context::setContext(ResponseInterface::class, $response = new Response());
|
||||
|
||||
Context::setContext(RequestInterface::class, RequestMessage::parseRequest($request));
|
||||
Context::setContext(RequestInterface::class, $serverRequest);
|
||||
|
||||
return [Kiri::getDi()->get(Request::class), $response];
|
||||
}
|
||||
@@ -232,11 +239,30 @@ class Request implements RequestInterface
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return Uploaded|null
|
||||
* @return UploadedFileInterface|null
|
||||
*/
|
||||
public function file(string $name): ?Uploaded
|
||||
public function file(string $name): ?UploadedFileInterface
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name);
|
||||
$files = $this->__call__()->getParsedBody();
|
||||
if (!isset($files[$name])) {
|
||||
return null;
|
||||
}
|
||||
return new Uploaded($files['tmp_name'], $files['name'], $files['type'], $files['size'], $files['error']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string|null $name
|
||||
* @param mixed|null $default
|
||||
* @return mixed
|
||||
*/
|
||||
private function _getParsedBody(string|null $name = null, mixed $default = null): mixed
|
||||
{
|
||||
$body = $this->__call__()->getParsedBody();
|
||||
if (empty($name)) {
|
||||
return $body;
|
||||
}
|
||||
return $body[$name] ?? $default;
|
||||
}
|
||||
|
||||
|
||||
@@ -245,7 +271,7 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function all(): array
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}();
|
||||
return $this->_getParsedBody();
|
||||
}
|
||||
|
||||
|
||||
@@ -256,7 +282,9 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function query(string $name, bool|int|string|null $default = null): mixed
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $default);
|
||||
$files = $this->__call__()->getQueryParams();
|
||||
|
||||
return $files[$name] ?? $default;
|
||||
}
|
||||
|
||||
|
||||
@@ -267,7 +295,7 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function post(string $name, int|bool|array|string|null $default = null): mixed
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $default);
|
||||
return $this->_getParsedBody($name, $default);
|
||||
}
|
||||
|
||||
|
||||
@@ -275,10 +303,15 @@ class Request implements RequestInterface
|
||||
* @param string $name
|
||||
* @param bool $required
|
||||
* @return int|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function int(string $name, bool $required = false): ?int
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $required);
|
||||
$int = $this->_getParsedBody($name);
|
||||
if (is_null($int) && $required) {
|
||||
throw new \Exception('Required param "' . $name . '"');
|
||||
}
|
||||
return (int)$int;
|
||||
}
|
||||
|
||||
|
||||
@@ -286,10 +319,15 @@ class Request implements RequestInterface
|
||||
* @param string $name
|
||||
* @param bool $required
|
||||
* @return float|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function float(string $name, bool $required = false): ?float
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $required);
|
||||
$int = $this->_getParsedBody($name);
|
||||
if (is_null($int) && $required) {
|
||||
throw new \Exception('Required param "' . $name . '"');
|
||||
}
|
||||
return (float)$int;
|
||||
}
|
||||
|
||||
|
||||
@@ -297,10 +335,15 @@ class Request implements RequestInterface
|
||||
* @param string $name
|
||||
* @param bool $required
|
||||
* @return string|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function date(string $name, bool $required = false): ?string
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $required);
|
||||
$int = $this->_getParsedBody($name);
|
||||
if (is_null($int) && $required) {
|
||||
throw new \Exception('Required param "' . $name . '"');
|
||||
}
|
||||
return (string)$int;
|
||||
}
|
||||
|
||||
|
||||
@@ -308,10 +351,15 @@ class Request implements RequestInterface
|
||||
* @param string $name
|
||||
* @param bool $required
|
||||
* @return int|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function timestamp(string $name, bool $required = false): ?int
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $required);
|
||||
$int = $this->_getParsedBody($name);
|
||||
if (is_null($int) && $required) {
|
||||
throw new \Exception('Required param "' . $name . '"');
|
||||
}
|
||||
return (int)$int;
|
||||
}
|
||||
|
||||
|
||||
@@ -319,10 +367,15 @@ class Request implements RequestInterface
|
||||
* @param string $name
|
||||
* @param bool $required
|
||||
* @return string|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function string(string $name, bool $required = false): ?string
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $required);
|
||||
$int = $this->_getParsedBody($name);
|
||||
if (is_null($int) && $required) {
|
||||
throw new \Exception('Required param "' . $name . '"');
|
||||
}
|
||||
return (string)$int;
|
||||
}
|
||||
|
||||
|
||||
@@ -333,7 +386,11 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function array(string $name, array $default = []): ?array
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $default);
|
||||
$int = $this->_getParsedBody($name);
|
||||
if (is_null($int)) {
|
||||
return $default;
|
||||
}
|
||||
return $int;
|
||||
}
|
||||
|
||||
|
||||
@@ -342,7 +399,7 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function gets(): ?array
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}();
|
||||
return $this->__call__()->getQueryParams();
|
||||
}
|
||||
|
||||
|
||||
@@ -354,7 +411,13 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function offset(string $field = 'page', string $sizeField = 'size', int $max = 100): float|int
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($field, $sizeField, $max);
|
||||
$page = $this->query($field);
|
||||
$size = $this->size($sizeField, $max);
|
||||
$offset = ($page - 1) * $size;
|
||||
if ($offset < 0) {
|
||||
$offset = 0;
|
||||
}
|
||||
return $offset;
|
||||
}
|
||||
|
||||
|
||||
@@ -365,7 +428,11 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function size(string $field = 'size', int $max = 100): int
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($field, $max);
|
||||
$size = $this->query($field);
|
||||
if ($size > $max) {
|
||||
$size = $max;
|
||||
}
|
||||
return $size;
|
||||
}
|
||||
|
||||
|
||||
@@ -376,7 +443,7 @@ class Request implements RequestInterface
|
||||
*/
|
||||
public function input($name, $default = null): mixed
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}($name, $default);
|
||||
return $this->_getParsedBody($name, $default);
|
||||
}
|
||||
|
||||
|
||||
@@ -410,7 +477,7 @@ class Request implements RequestInterface
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAccessControlAllowOrigin(): ?string
|
||||
#[Pure] public function getAccessControlAllowOrigin(): ?string
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}();
|
||||
}
|
||||
@@ -419,7 +486,7 @@ class Request implements RequestInterface
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAccessControlAllowHeaders(): ?string
|
||||
#[Pure] public function getAccessControlAllowHeaders(): ?string
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}();
|
||||
}
|
||||
@@ -428,7 +495,7 @@ class Request implements RequestInterface
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAccessControlRequestMethod(): ?string
|
||||
#[Pure] public function getAccessControlRequestMethod(): ?string
|
||||
{
|
||||
return $this->__call__()->{__FUNCTION__}();
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ namespace Server;
|
||||
|
||||
use Http\IInterface\AuthIdentity;
|
||||
use JetBrains\PhpStorm\Pure;
|
||||
use Psr\Http\Message\UploadedFileInterface;
|
||||
use Server\Message\Request;
|
||||
use Server\Message\Uploaded;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -24,9 +24,9 @@ interface RequestInterface extends \Psr\Http\Message\RequestInterface
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return Uploaded|null
|
||||
* @return UploadedFileInterface|null
|
||||
*/
|
||||
public function file(string $name): ?Uploaded;
|
||||
public function file(string $name): ?UploadedFileInterface;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user