This commit is contained in:
2021-09-16 14:53:36 +08:00
parent 8c5b6f674c
commit 41a6158fd0
20 changed files with 48 additions and 32 deletions
+1 -1
View File
@@ -40,7 +40,7 @@
"psr-4": { "psr-4": {
"Kiri\\": "core/", "Kiri\\": "core/",
"Http\\": "http-helper/", "Http\\": "http-helper/",
"Protocol\\Message\\": "http-message/", "Http\\Message\\": "http-message/",
"Server\\": "http-server/", "Server\\": "http-server/",
"Console\\": "kiri-console/", "Console\\": "kiri-console/",
"Gii\\": "kiri-gii/", "Gii\\": "kiri-gii/",
+1 -1
View File
@@ -24,7 +24,7 @@ use Server\Constrict\Response;
use Server\Constrict\ResponseInterface; use Server\Constrict\ResponseInterface;
use Server\ServerManager; use Server\ServerManager;
use Swoole\WebSocket\Server; use Swoole\WebSocket\Server;
use Protocol\Message\Response as Par7Response; use Http\Message\Response as Par7Response;
if (!function_exists('make')) { if (!function_exists('make')) {
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use Server\SInterface\DownloadInterface; use Server\SInterface\DownloadInterface;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use Kiri\Core\Xml; use Kiri\Core\Xml;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use BadMethodCallException; use BadMethodCallException;
use Http\IInterface\AuthIdentity; use Http\IInterface\AuthIdentity;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use Exception; use Exception;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use Http\Context\Context; use Http\Context\Context;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
class StatusCode class StatusCode
{ {
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use JetBrains\PhpStorm\ArrayShape; use JetBrains\PhpStorm\ArrayShape;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
+24 -8
View File
@@ -1,7 +1,8 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use Exception;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\UploadedFileInterface; use Psr\Http\Message\UploadedFileInterface;
@@ -19,6 +20,12 @@ class Uploaded implements UploadedFileInterface
]; ];
/**
* @var resource
*/
private mixed $stream;
/** /**
* @param string $tmp_name * @param string $tmp_name
* @param string $name * @param string $name
@@ -39,28 +46,37 @@ class Uploaded implements UploadedFileInterface
/** /**
* @return StreamInterface * @return StreamInterface
* @throws \Exception * @throws Exception
*/ */
public function getStream(): StreamInterface public function getStream(): StreamInterface
{ {
if (!fopen($this->tmp_name, 'r')) { if ($this->stream instanceof Stream) {
throw new \Exception('The file "' . $this->name . '" con\'t readable.'); return $this->stream;
} }
return new Stream(fopen($this->tmp_name, 'r'));
$this->stream = new Stream(fopen($this->tmp_name, 'r+'));
return $this->stream;
} }
/** /**
* @param string $targetPath * @param string $targetPath
* @return \Psr\Http\Message\StreamInterface * @return StreamInterface
* @throws \Exception * @throws Exception
*/ */
public function moveTo($targetPath): StreamInterface public function moveTo($targetPath): StreamInterface
{ {
@move_uploaded_file($this->tmp_name, $targetPath); @move_uploaded_file($this->tmp_name, $targetPath);
if (!file_exists($targetPath)) { if (!file_exists($targetPath)) {
throw new \Exception('File save fail.'); throw new Exception('File save fail.');
} }
if ($this->stream instanceof Stream) {
$this->stream->close();
$this->stream = null;
}
$this->tmp_name = $targetPath; $this->tmp_name = $targetPath;
return $this->getStream(); return $this->getStream();
} }
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace Protocol\Message; namespace Http\Message;
use Psr\Http\Message\UriInterface; use Psr\Http\Message\UriInterface;
use Swoole\Http\Request; use Swoole\Http\Request;
+3 -3
View File
@@ -6,9 +6,9 @@ use Http\Context\Context;
use Http\IInterface\AuthIdentity; use Http\IInterface\AuthIdentity;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Kiri\Kiri; use Kiri\Kiri;
use Protocol\Message\Response; use Http\Message\Response;
use Protocol\Message\ServerRequest; use Http\Message\ServerRequest;
use Protocol\Message\Uploaded; use Http\Message\Uploaded;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\UploadedFileInterface; use Psr\Http\Message\UploadedFileInterface;
use Psr\Http\Message\UriInterface; use Psr\Http\Message\UriInterface;
+1 -1
View File
@@ -5,7 +5,7 @@ namespace Server\Constrict;
use Http\IInterface\AuthIdentity; use Http\IInterface\AuthIdentity;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Protocol\Message\ServerRequest; use Http\Message\ServerRequest;
use Psr\Http\Message\UploadedFileInterface; use Psr\Http\Message\UploadedFileInterface;
/** /**
+2 -2
View File
@@ -8,8 +8,8 @@ use Http\Context\Context;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Kiri\Kiri; use Kiri\Kiri;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use Protocol\Message\ServerRequest as RequestMessage; use Http\Message\ServerRequest as RequestMessage;
use Protocol\Message\Response as Psr7Response; use Http\Message\Response as Psr7Response;
use Server\ServerManager; use Server\ServerManager;
use Server\SInterface\DownloadInterface; use Server\SInterface\DownloadInterface;
+2 -2
View File
@@ -23,10 +23,10 @@ class ResponseEmitter implements Emitter
/** /**
* @param mixed $response * @param mixed $response
* @param \Protocol\Message\Response|ResponseInterface $emitter * @param \Http\Message\Response|ResponseInterface $emitter
* @throws \Exception * @throws \Exception
*/ */
public function sender(mixed $response, ResponseInterface|\Protocol\Message\Response $emitter): void public function sender(mixed $response, ResponseInterface|\Http\Message\Response $emitter): void
{ {
if (is_array($emitter->getHeaders())) { if (is_array($emitter->getHeaders())) {
foreach ($emitter->getHeaders() as $name => $values) { foreach ($emitter->getHeaders() as $name => $values) {
+1 -1
View File
@@ -4,7 +4,7 @@ namespace Server\Constrict;
use JetBrains\PhpStorm\Pure; use JetBrains\PhpStorm\Pure;
use Protocol\Message\Response; use Http\Message\Response;
use Server\SInterface\DownloadInterface; use Server\SInterface\DownloadInterface;
/** /**
+2 -2
View File
@@ -17,10 +17,10 @@ class WebSocketEmitter implements Emitter
/** /**
* @param mixed $response * @param mixed $response
* @param ResponseInterface|\Protocol\Message\Response $emitter * @param ResponseInterface|\Http\Message\Response $emitter
* @throws Exception * @throws Exception
*/ */
public function sender(mixed $response, ResponseInterface|\Protocol\Message\Response $emitter): void public function sender(mixed $response, ResponseInterface|\Http\Message\Response $emitter): void
{ {
$server = Kiri::getDi()->get(ServerManager::class)->getServer(); $server = Kiri::getDi()->get(ServerManager::class)->getServer();
+1 -1
View File
@@ -3,7 +3,7 @@
namespace Server; namespace Server;
use Protocol\Message\Stream; use Http\Message\Stream;
use Server\Constrict\Response; use Server\Constrict\Response;
use Server\Constrict\ResponseInterface; use Server\Constrict\ResponseInterface;
use Throwable; use Throwable;
+1 -1
View File
@@ -4,7 +4,7 @@ namespace Server;
use Annotation\Inject; use Annotation\Inject;
use Server\Constrict\Response; use Server\Constrict\Response;
use Protocol\Message\Stream; use Http\Message\Stream;
class Sender class Sender
{ {