改名
This commit is contained in:
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Server\Message;
|
||||||
|
|
||||||
|
class Headers
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
private array $headers = [];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $headers
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function withHeader(array $headers): static
|
||||||
|
{
|
||||||
|
$class = clone $this;
|
||||||
|
$class->headers = $headers;
|
||||||
|
return $class;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $name
|
||||||
|
* @param null $default
|
||||||
|
* @return string|array|float|int|null
|
||||||
|
*/
|
||||||
|
public function get($name, $default = null): string|array|float|int|null
|
||||||
|
{
|
||||||
|
return $this->headers[$name] ?? $default;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray(): array
|
||||||
|
{
|
||||||
|
return $this->headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,7 +4,9 @@ namespace Server\Message;
|
|||||||
|
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
use Kiri\Core\Xml;
|
use Kiri\Core\Xml;
|
||||||
|
use Kiri\Kiri;
|
||||||
use Psr\Http\Message\StreamInterface;
|
use Psr\Http\Message\StreamInterface;
|
||||||
|
use ReflectionException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,6 +78,40 @@ trait Message
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \Swoole\Http\Request $request
|
||||||
|
* @return $this
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
|
private function parseRequestHeaders(\Swoole\Http\Request $request): static
|
||||||
|
{
|
||||||
|
$index = strpos($request->getData(), "\r\n\r\n");
|
||||||
|
$headers = explode("\r\n", substr($request->getData(), 0, $index));
|
||||||
|
|
||||||
|
array_shift($headers);
|
||||||
|
foreach ($headers as $header) {
|
||||||
|
[$key, $value] = explode(': ', $header);
|
||||||
|
$this->addRequestHeader($key, $value);
|
||||||
|
}
|
||||||
|
$class = Kiri::getDi()->get(Headers::class);
|
||||||
|
$this->header = $class->withHeader($this->headers);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $key
|
||||||
|
* @param $value
|
||||||
|
*/
|
||||||
|
private function addRequestHeader($key, $value)
|
||||||
|
{
|
||||||
|
$this->headers[$key] = [];
|
||||||
|
foreach (explode(';', $value) as $item) {
|
||||||
|
$this->headers[$key][] = $item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $name
|
* @param $name
|
||||||
* @return string|null
|
* @return string|null
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
namespace Server\Message;
|
namespace Server\Message;
|
||||||
|
|
||||||
|
use Annotation\Inject;
|
||||||
use BadMethodCallException;
|
use BadMethodCallException;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
use Psr\Http\Message\RequestInterface;
|
use Psr\Http\Message\RequestInterface;
|
||||||
use Psr\Http\Message\UriInterface;
|
use Psr\Http\Message\UriInterface;
|
||||||
|
use ReflectionException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,6 +25,9 @@ class Request implements RequestInterface
|
|||||||
public string $method;
|
public string $method;
|
||||||
|
|
||||||
|
|
||||||
|
public Headers $header;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Uri
|
* @var Uri
|
||||||
*/
|
*/
|
||||||
@@ -49,6 +54,7 @@ class Request implements RequestInterface
|
|||||||
/**
|
/**
|
||||||
* @param \Swoole\Http\Request $request
|
* @param \Swoole\Http\Request $request
|
||||||
* @return RequestInterface
|
* @return RequestInterface
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public static function parseRequest(\Swoole\Http\Request $request): RequestInterface
|
public static function parseRequest(\Swoole\Http\Request $request): RequestInterface
|
||||||
{
|
{
|
||||||
@@ -60,38 +66,7 @@ class Request implements RequestInterface
|
|||||||
$message->version = $request->server['server_protocol'];
|
$message->version = $request->server['server_protocol'];
|
||||||
$message->stream = new Stream($request->getContent());
|
$message->stream = new Stream($request->getContent());
|
||||||
$message->servers = $request->server;
|
$message->servers = $request->server;
|
||||||
return $message->parseHeaders($request);
|
return $message->parseRequestHeaders($request);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \Swoole\Http\Request $request
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
private function parseHeaders(\Swoole\Http\Request $request): static
|
|
||||||
{
|
|
||||||
$index = strpos($request->getData(), "\r\n\r\n");
|
|
||||||
$headers = explode("\r\n", substr($request->getData(), 0, $index));
|
|
||||||
|
|
||||||
array_shift($headers);
|
|
||||||
foreach ($headers as $header) {
|
|
||||||
[$key, $value] = explode(': ', $header);
|
|
||||||
$this->addHeader($key, $value);
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $key
|
|
||||||
* @param $value
|
|
||||||
*/
|
|
||||||
private function addHeader($key, $value)
|
|
||||||
{
|
|
||||||
$this->headers[$key] = [];
|
|
||||||
foreach (explode(';', $value) as $item) {
|
|
||||||
$this->headers[$key][] = $item;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user