1
0
Fork 0
mirror of synced 2024-07-06 23:21:05 +12:00

Fix options method routing

This commit is contained in:
Matej Bačo 2023-02-27 13:43:20 +01:00
parent bf3340a3c6
commit 47f85678ff

View file

@ -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();