This commit is contained in:
2020-09-02 15:45:52 +08:00
parent 0798a8c6f5
commit 13aeefd2d3
2 changed files with 34 additions and 9 deletions
+21 -6
View File
@@ -11,6 +11,7 @@ use HttpServer\Http\Request as HRequest;
use HttpServer\Http\Response as HResponse; use HttpServer\Http\Response as HResponse;
use HttpServer\Service\Http; use HttpServer\Service\Http;
use Snowflake\Core\JSON; use Snowflake\Core\JSON;
use Snowflake\Event;
use Snowflake\Snowflake; use Snowflake\Snowflake;
use Swoole\Error; use Swoole\Error;
use Swoole\Http\Request; use Swoole\Http\Request;
@@ -24,7 +25,6 @@ class OnRequest extends Callback
{ {
/** /**
* @param Request $request * @param Request $request
* @param Response $response * @param Response $response
@@ -36,16 +36,31 @@ class OnRequest extends Callback
[$sRequest, $sResponse] = static::setContext($request, $response); [$sRequest, $sResponse] = static::setContext($request, $response);
$sResponse->send(Snowflake::get()->router->dispatch(), 200); $sResponse->send(Snowflake::get()->router->dispatch(), 200);
} catch (Error | \Throwable $exception) { } catch (Error | \Throwable $exception) {
if (!isset($sResponse)) { $this->sendErrorMessage($sResponse ?? null, $exception, $response);
} finally {
$events = Snowflake::get()->getEvent();
if (!$events->exists(Event::EVENT_AFTER_REQUEST)) {
return;
}
$events->trigger(Event::EVENT_AFTER_REQUEST, [$request]);
}
}
/**
* @param $sResponse
* @param $exception
* @param $response
* @throws Exception
*/
protected function sendErrorMessage($sResponse, $exception, $response)
{
if (empty($sResponse)) {
$response->status(200); $response->status(200);
$response->end($exception->getMessage()); $response->end($exception->getMessage());
} else { } else {
$sResponse->send($this->format($exception), 200); $sResponse->send($this->format($exception), 200);
} }
} finally {
$dividing_line = str_pad('', 100, '-');
$this->debug($dividing_line, 'app');
}
} }
+10
View File
@@ -317,6 +317,16 @@ abstract class BaseApplication extends Service
} }
/**
* @return Event
* @throws ComponentException
*/
public function getEvent()
{
return $this->get('event');
}
/** /**
* @return Jwt * @return Jwt
* @throws ComponentException * @throws ComponentException