Skip to content

Commit

Permalink
调整:请求处理逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
dxkite committed Sep 13, 2019
1 parent 4c0da6f commit 7454acf
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 12 deletions.
2 changes: 1 addition & 1 deletion suda/loader/loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
defined('SUDA_DEBUG') or define('SUDA_DEBUG', false);
defined('SUDA_DEBUG_LEVEL') or define('SUDA_DEBUG_LEVEL', 'debug');
// 定义版本
define('SUDA_VERSION', '3.1.5');
define('SUDA_VERSION', '3.1.6-dev');
// 设置默认时区
date_default_timezone_set(SUDA_TIMEZONE);
// 调试模式
Expand Down
15 changes: 11 additions & 4 deletions suda/src/application/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Throwable;
use suda\framework\Request;
use suda\framework\Response;
use suda\framework\http\Status;
use suda\framework\loader\Loader;
use suda\framework\route\MatchResult;
use suda\application\template\Template;
Expand Down Expand Up @@ -183,15 +184,16 @@ public function request(array $method, string $name, string $url, array $attribu
* @param Application $application
* @param Request $request
* @param Response $response
* @return mixed|void
* @return mixed
* @throws Exception
*/
protected function defaultResponse(Application $application, Request $request, Response $response)
{
if ((new TemplateAssetProcessor)->onRequest($application, $request, $response)) {
return;
(new TemplateAssetProcessor)->onRequest($application, $request, $response);
if ($response->getStatus() === Status::HTTP_NOT_FOUND) {
return $this->route->getDefaultRunnable()->run($request, $response);
}
return $this->route->getDefaultRunnable()->run($request, $response);
return null;
}

/**
Expand All @@ -208,10 +210,15 @@ protected function createResponse(?MatchResult $result, Request $request, Respon
$response->setHeader('x-route', $result === null ? 'default' : $result->getName());
}
if ($result === null) {
$response->status(Status::HTTP_NOT_FOUND);
$content = $this->defaultResponse($this, $request, $response);
} else {
$response->status(Status::HTTP_OK);
$content = $this->runResult($result, $request, $response);
}
if ($content instanceof Response) {
return $response;
}
if ($content !== null && !$response->isSend()) {
$response->setContent($content);
}
Expand Down
9 changes: 5 additions & 4 deletions suda/src/application/processor/FileRangeProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use SplFileObject;
use suda\framework\Request;
use suda\framework\Response;
use suda\framework\http\Status;
use suda\application\Application;
use suda\framework\response\MimeType;
use suda\framework\http\stream\DataStream;
Expand Down Expand Up @@ -41,15 +42,14 @@ public function __construct($file)
* @param Application $application
* @param Request $request
* @param Response $response
* @return void
* @throws Exception
*/
public function onRequest(Application $application, Request $request, Response $response)
{
$ranges = $this->getRanges($request);
$response->setHeader('accept-ranges', 'bytes');
if ($request->getMethod() !== 'GET' || $ranges === false) {
$response->status(400);
$response->status(Status::HTTP_BAD_REQUEST);
} else {
$this->sendFileRanges($response, $ranges);
}
Expand All @@ -63,16 +63,17 @@ public function onRequest(Application $application, Request $request, Response $
protected function sendFileRanges(Response $response, array $ranges)
{
if (count($ranges) === 0) {
$response->status(Status::HTTP_OK);
$response->setHeader('content-type', $this->mime);
$response->sendFile($this->file->getRealPath());
} elseif (count($ranges) === 1) {
$response->status(206);
$response->status(Status::HTTP_PARTIAL_CONTENT);
$range = $ranges[0];
$response->setHeader('content-type', $this->mime);
$response->setHeader('content-range', $this->getRangeHeader($range));
$this->sendFileByRange($response, $range);
} else {
$response->status(206);
$response->status(Status::HTTP_PARTIAL_CONTENT);
$this->sendMultipleFileByRange($response, $ranges);
}
}
Expand Down
3 changes: 0 additions & 3 deletions suda/src/application/processor/TemplateAssetProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class TemplateAssetProcessor implements RequestProcessor
* @param Application $application
* @param Request $request
* @param Response $response
* @return bool
* @throws Exception
*/
public function onRequest(Application $application, Request $request, Response $response)
Expand All @@ -34,10 +33,8 @@ public function onRequest(Application $application, Request $request, Response $
if ($realPath) {
$file = new FileRangeProcessor($realPath);
$file->onRequest($application, $request, $response);
return true;
}
}
}
return false;
}
}

0 comments on commit 7454acf

Please sign in to comment.