This commit is contained in:
2021-08-05 19:14:08 +08:00
parent f7ec2b6b98
commit 7f9ae9556b
9 changed files with 175 additions and 43 deletions
+15 -4
View File
@@ -16,6 +16,18 @@ namespace HttpServer\Http;
class HttpHeaders
{
private array $_headers = [];
/**
* @param array $headers
*/
public function setHeaders(array $headers): void
{
$this->_headers = $headers;
}
/**
* @return array
*/
@@ -111,12 +123,11 @@ class HttpHeaders
*/
private function __handler__($name = null, $default = null): mixed
{
/** @var \Swoole\Http\Request $context */
$context = Context::getContext(\Swoole\Http\Request::class);
$headers = Context::getContext(Request::class);
if (!empty($name)) {
return $context->header[$name] ?? $default;
return $headers->_headers[$name] ?? $default;
}
return $context->header;
return $headers->_headers;
}
}
+44 -4
View File
@@ -11,7 +11,6 @@ namespace HttpServer\Http;
use Exception;
use HttpServer\Exception\RequestException;
use JetBrains\PhpStorm\Pure;
use ReflectionException;
use Snowflake\Core\Json;
use Snowflake\Core\Xml;
@@ -36,6 +35,47 @@ class HttpParams
/** @var array|null */
private ?array $_files = [];
private mixed $_rawContent = '';
/**
* @param array|null $gets
*/
public function setGets(?array $gets): void
{
$this->_gets = $gets;
}
/**
* @param mixed $posts
*/
public function setPosts(mixed $posts): void
{
$this->_posts = $posts;
}
/**
* @param array|null $files
*/
public function setFiles(?array $files): void
{
$this->_files = $files;
}
/**
* @param mixed|string $rawContent
*/
public function setRawContent(mixed $rawContent, string $context_type): void
{
if (str_contains($context_type, 'json')) {
$this->_rawContent = json_decode($rawContent, true);
} else if (str_contains($context_type, 'xml')) {
$this->_rawContent = Xml::toArray($rawContent);
} else {
$this->_rawContent = $rawContent;
}
}
/**
* @return mixed
* @throws Exception
@@ -414,10 +454,10 @@ class HttpParams
*/
private function __files__($name = null): mixed
{
/** @var \Swoole\Http\Request $content */
$content = Context::getContext(\Swoole\Http\Request::class);
/** @var Request $content */
$content = Context::getContext(Request::class);
if (!empty($name)) {
return $content->files[$name] ?? null;
return $content->_f[$name] ?? null;
}
return $content->files ?? [];
}
+31 -30
View File
@@ -8,9 +8,9 @@ use Exception;
use HttpServer\Abstracts\HttpService;
use HttpServer\IInterface\AuthIdentity;
use JetBrains\PhpStorm\Pure;
use Server\RequestInterface;
use Server\ServerManager;
use Snowflake\Core\Json;
use Snowflake\Snowflake;
defined('REQUEST_OK') or define('REQUEST_OK', 0);
defined('REQUEST_FAIL') or define('REQUEST_FAIL', 500);
@@ -30,7 +30,7 @@ defined('REQUEST_FAIL') or define('REQUEST_FAIL', 500);
* @property-read $isPackage
* @property-read $isReceive
*/
class Request extends HttpService
class Request extends HttpService implements RequestInterface
{
public int $fd = 0;
@@ -56,6 +56,8 @@ class Request extends HttpService
public int $statusCode = 200;
private int $_clientId = 0;
/** @var string[] */
private array $explode = [];
@@ -74,6 +76,26 @@ class Request extends HttpService
private ?AuthIdentity $_grant = null;
/**
* @param $id
*/
public function setClientId($id)
{
$this->_clientId = $id;
}
/**
* @param string $request_uri
*/
public function setUri(string $request_uri)
{
$request_uri = array_filter(explode('/', $request_uri));
$this->_explode = $request_uri;
$this->_uri = '/' . implode('/', $request_uri);
}
/**
* @return array|null
* @throws Exception
@@ -100,9 +122,7 @@ class Request extends HttpService
*/
public function getClientId(): int
{
$request = Context::getContext(\Swoole\Http\Request::class);
return $request->fd ?? 0;
return $this->_clientId ?? 0;
}
@@ -119,8 +139,7 @@ class Request extends HttpService
*/
public function getIdentity(): ?AuthIdentity
{
$request = Context::getContext(\Swoole\Http\Request::class);
return $request->grant;
return $this->_grant;
}
/**
@@ -176,8 +195,7 @@ class Request extends HttpService
*/
public function setGrantAuthorization($value)
{
$request = Context::getContext(\Swoole\Http\Request::class);
return $request->grant = $value;
return $this->_grant = $value;
}
@@ -195,7 +213,7 @@ class Request extends HttpService
*/
public function getExplode(): array
{
return Context::getContext(\Swoole\Http\Request::class)->explode;
return $this->_explode;
}
/**
@@ -212,7 +230,7 @@ class Request extends HttpService
*/
public function getUri(): string
{
return $this->headers->getRequestUri();
return $this->_uri;
}
/**
@@ -417,25 +435,8 @@ class Request extends HttpService
}
/**
* @param \Swoole\Http\Request $request
* @return Request
* @throws Exception
*/
public static function create(\Swoole\Http\Request $request): Request
{
$request->header = array_merge($request->header, $request->server);
$request_uri = array_filter(explode('/', $request->header['request_uri']));
$request->header['request_uri'] = '/' . implode('/', $request_uri);
$request->explode = $request_uri;
Context::setContext(\Swoole\Http\Request::class, $request);
Context::setContext(Response::class, new Response());
return Snowflake::getDi()->get(Request::class);
}
private array $_explode = [];
private string $_uri = '';
}