Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c2462feee | |||
| 4c4a21dd7a | |||
| 8623a036ed |
@@ -7,6 +7,8 @@ use Kiri\Core\Help;
|
|||||||
use Kiri\Router\ContentType;
|
use Kiri\Router\ContentType;
|
||||||
use Kiri\Router\StreamResponse;
|
use Kiri\Router\StreamResponse;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Swoole\Http\Response;
|
||||||
|
|
||||||
|
|
||||||
class ConstrictResponse extends Message implements ResponseInterface
|
class ConstrictResponse extends Message implements ResponseInterface
|
||||||
{
|
{
|
||||||
@@ -18,11 +20,18 @@ class ConstrictResponse extends Message implements ResponseInterface
|
|||||||
private string $reasonPhrase;
|
private string $reasonPhrase;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array|mixed
|
||||||
|
*/
|
||||||
|
public array $headers = [];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ContentType|null $contentType
|
* @param ContentType|null $contentType
|
||||||
*/
|
*/
|
||||||
public function __construct(?ContentType $contentType = null)
|
public function __construct(?ContentType $contentType = null)
|
||||||
{
|
{
|
||||||
|
$this->headers = \config('response.headers', $this->headers);
|
||||||
if ($contentType != null) {
|
if ($contentType != null) {
|
||||||
$this->withHeader('Content-Type', $contentType->toString());
|
$this->withHeader('Content-Type', $contentType->toString());
|
||||||
}
|
}
|
||||||
@@ -30,6 +39,25 @@ class ConstrictResponse extends Message implements ResponseInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $url
|
||||||
|
* @param array $params
|
||||||
|
* @param int $statusCode
|
||||||
|
* @return static
|
||||||
|
*/
|
||||||
|
public function redirectTo(string $url, array $params = [], int $statusCode = 302): static
|
||||||
|
{
|
||||||
|
if (!empty($params)) {
|
||||||
|
$url .= '?' . http_build_query($params);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->withHeader('Location', $url);
|
||||||
|
$this->withStatus($statusCode);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ContentType $contentType
|
* @param ContentType $contentType
|
||||||
* @return $this
|
* @return $this
|
||||||
@@ -187,6 +215,10 @@ class ConstrictResponse extends Message implements ResponseInterface
|
|||||||
*/
|
*/
|
||||||
public function end(object $response): void
|
public function end(object $response): void
|
||||||
{
|
{
|
||||||
|
/** @var Response $response */
|
||||||
|
if (count($this->headers) > 0) foreach ($this->headers as $key => $header) {
|
||||||
|
$response->header($key, $header);
|
||||||
|
}
|
||||||
$response->end($this->stream->getContents());
|
$response->end($this->stream->getContents());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,16 @@ class Response implements ResponseInterface
|
|||||||
return $this->__call__(__FUNCTION__, $content, $statusCode);
|
return $this->__call__(__FUNCTION__, $content, $statusCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $url
|
||||||
|
* @param array $params
|
||||||
|
* @param int $statusCode
|
||||||
|
* @return ResponseInterface
|
||||||
|
*/
|
||||||
|
public function redirectTo(string $url, array $params = [], int $statusCode = 302): ResponseInterface
|
||||||
|
{
|
||||||
|
return $this->__call__(__FUNCTION__, $url, $params, $statusCode);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $content
|
* @param array $content
|
||||||
|
|||||||
@@ -3,16 +3,13 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Kiri\Router;
|
namespace Kiri\Router;
|
||||||
|
|
||||||
use Kiri\Di\Inject\Container;
|
|
||||||
use Kiri\Di\Interface\ResponseEmitterInterface;
|
use Kiri\Di\Interface\ResponseEmitterInterface;
|
||||||
use Kiri\Events\EventDispatch;
|
use Kiri\Events\EventDispatch;
|
||||||
use Kiri\Events\EventProvider;
|
use Kiri\Events\EventProvider;
|
||||||
use Kiri\Server\Events\OnAfterRequest;
|
use Kiri\Server\Events\OnAfterRequest;
|
||||||
use Psr\Container\ContainerExceptionInterface;
|
|
||||||
use Psr\Container\NotFoundExceptionInterface;
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use ReflectionException;
|
|
||||||
use SplPriorityQueue;
|
use SplPriorityQueue;
|
||||||
|
use function swoole_version;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,6 +66,7 @@ class SwooleHttpResponseEmitter implements ResponseEmitterInterface
|
|||||||
*/
|
*/
|
||||||
private function writeParams(ResponseInterface $proxy, object $response, object $request): void
|
private function writeParams(ResponseInterface $proxy, object $response, object $request): void
|
||||||
{
|
{
|
||||||
|
/** @var \Swoole\Http\Response $response */
|
||||||
$response->setStatusCode($proxy->getStatusCode());
|
$response->setStatusCode($proxy->getStatusCode());
|
||||||
$headers = $proxy->getHeaders();
|
$headers = $proxy->getHeaders();
|
||||||
if (count($headers) > 0) foreach ($headers as $name => $header) {
|
if (count($headers) > 0) foreach ($headers as $name => $header) {
|
||||||
@@ -78,9 +76,9 @@ class SwooleHttpResponseEmitter implements ResponseEmitterInterface
|
|||||||
if (count($cookieParams) > 0) foreach ($cookieParams as $cookie) {
|
if (count($cookieParams) > 0) foreach ($cookieParams as $cookie) {
|
||||||
$response->setCookie(...$cookie);
|
$response->setCookie(...$cookie);
|
||||||
}
|
}
|
||||||
$response->header('Run-Time', $this->getRunTime($request));
|
$response->header('Run-Time', $this->getRunTime($request) . '');
|
||||||
$response->header('Server', 'swoole');
|
$response->header('Server', 'swoole');
|
||||||
$response->header('Swoole-Version', \swoole_version());
|
$response->header('Swoole-Version', swoole_version());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user