Fix options method routing
This commit is contained in:
parent
bf3340a3c6
commit
47f85678ff
1 changed files with 103 additions and 82 deletions
|
@ -9,7 +9,6 @@ use Utopia\Logger\Logger;
|
|||
use Utopia\Logger\Log;
|
||||
use Utopia\Logger\Log\User;
|
||||
use Swoole\Http\Request as SwooleRequest;
|
||||
use Swoole\Http\Response as SwooleResponse;
|
||||
use Utopia\Cache\Cache;
|
||||
use Utopia\Pools\Group;
|
||||
use Appwrite\Utopia\Request;
|
||||
|
@ -44,30 +43,7 @@ Config::setParam('domainVerification', false);
|
|||
Config::setParam('cookieDomain', 'localhost');
|
||||
Config::setParam('cookieSamesite', Response::COOKIE_SAMESITE_NONE);
|
||||
|
||||
App::init()
|
||||
->inject('utopia')
|
||||
->inject('swooleRequest')
|
||||
->inject('swooleResponse')
|
||||
->inject('request')
|
||||
->inject('response')
|
||||
->inject('console')
|
||||
->inject('project')
|
||||
->inject('dbForConsole')
|
||||
->inject('user')
|
||||
->inject('locale')
|
||||
->inject('clients')
|
||||
->inject('servers')
|
||||
->inject('pools')
|
||||
->inject('cache')
|
||||
->action(function (App $utopia, SwooleRequest $swooleRequest, SwooleResponse $swooleResponse, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Document $user, Locale $locale, array $clients, array $servers, Group $pools, Cache $cache) {
|
||||
/*
|
||||
* Appwrite Router
|
||||
*/
|
||||
$host = $swooleRequest->header['host'] ?? '';
|
||||
$mainDomain = App::getEnv('_APP_DOMAIN', '');
|
||||
|
||||
// Only run Router when external domain
|
||||
if($host !== $mainDomain && $host !== 'localhost') {
|
||||
function router(Database $dbForConsole, string $host, SwooleRequest $swooleRequest, Response $response) {
|
||||
$route = Authorization::skip(
|
||||
fn() => $dbForConsole->find('routes', [
|
||||
Query::equal('domain', [$host]),
|
||||
|
@ -122,12 +98,14 @@ App::init()
|
|||
\curl_close($ch);
|
||||
|
||||
if ($errNo !== 0) {
|
||||
return $response->setStatusCode(500)->send("Internal error: " . $error);
|
||||
$response->setStatusCode(500)->send("Internal error: " . $error);
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($statusCode >= 400) {
|
||||
$error = \json_decode($executionResponse, true)['message'];
|
||||
return $response->setStatusCode(500)->send("Execution error: " . $error);
|
||||
$response->setStatusCode(500)->send("Execution error: " . $error);
|
||||
return true;
|
||||
}
|
||||
|
||||
$execution = \json_decode($executionResponse, true);
|
||||
|
@ -142,10 +120,40 @@ App::init()
|
|||
$body = \base64_decode($body);
|
||||
}
|
||||
|
||||
return $response->setStatusCode($execution['statusCode'] ?? 200)->send($body);
|
||||
$response->setStatusCode($execution['statusCode'] ?? 200)->send($body);
|
||||
return true;
|
||||
} else {
|
||||
throw new AppwriteException(AppwriteException::ROUTER_INVALID_TYPE);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
App::init()
|
||||
->inject('utopia')
|
||||
->inject('swooleRequest')
|
||||
->inject('request')
|
||||
->inject('response')
|
||||
->inject('console')
|
||||
->inject('project')
|
||||
->inject('dbForConsole')
|
||||
->inject('user')
|
||||
->inject('locale')
|
||||
->inject('clients')
|
||||
->inject('servers')
|
||||
->inject('pools')
|
||||
->inject('cache')
|
||||
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Document $user, Locale $locale, array $clients, array $servers, Group $pools, Cache $cache) {
|
||||
/*
|
||||
* Appwrite Router
|
||||
*/
|
||||
$host = $swooleRequest->header['host'] ?? '';
|
||||
$mainDomain = App::getEnv('_APP_DOMAIN', '');
|
||||
// Only run Router when external domain
|
||||
if($host !== $mainDomain && $host !== 'localhost') {
|
||||
if(router($dbForConsole, $host, $swooleRequest, $response)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -475,9 +483,22 @@ App::init()
|
|||
});
|
||||
|
||||
App::options()
|
||||
->inject('swooleRequest')
|
||||
->inject('request')
|
||||
->inject('response')
|
||||
->action(function (Request $request, Response $response) {
|
||||
->inject('dbForConsole')
|
||||
->action(function (SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole) {
|
||||
/*
|
||||
* Appwrite Router
|
||||
*/
|
||||
$host = $swooleRequest->header['host'] ?? '';
|
||||
$mainDomain = App::getEnv('_APP_DOMAIN', '');
|
||||
// Only run Router when external domain
|
||||
if($host !== $mainDomain && $host !== 'localhost') {
|
||||
if(router($dbForConsole, $host, $swooleRequest, $response)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$origin = $request->getOrigin();
|
||||
|
||||
|
|
Loading…
Reference in a new issue