summaryrefslogtreecommitdiff
path: root/src/Router
diff options
context:
space:
mode:
Diffstat (limited to 'src/Router')
-rw-r--r--src/Router/Router.php37
-rw-r--r--src/Router/routes_client_server.php19
2 files changed, 44 insertions, 12 deletions
diff --git a/src/Router/Router.php b/src/Router/Router.php
index 534b7f7..377821f 100644
--- a/src/Router/Router.php
+++ b/src/Router/Router.php
@@ -6,6 +6,7 @@ use App\Errors\ErrorCode;
use App\Errors\ErrorResponse;
use App\Errors\Exception;
use App\Singleton;
+use App\Support\Logger;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
@@ -38,14 +39,14 @@ class Router
{
$request = Request::createFromGlobals();
- if ($request->isMethod("OPTIONS")) {
- $response = new Response();
- $response->headers->add([
- "Access-Control-Allow-Origin" => "*",
- "Access-Control-Allow-Methods" => "GET, POST, PUT, DELETE, OPTIONS, PATCH, HEAD",
- "Access-Control-Allow-Headers" => "X-Requested-With, Content-Type, Authorization",
- ]);
+ $response = new Response();
+ $response->headers->add([
+ "Access-Control-Allow-Origin" => "*",
+ "Access-Control-Allow-Methods" => "GET, POST, PUT, DELETE, OPTIONS, PATCH, HEAD",
+ "Access-Control-Allow-Headers" => "X-Requested-With, Content-Type, Authorization",
+ ]);
+ if ($request->isMethod("OPTIONS")) {
return $response;
}
@@ -64,22 +65,34 @@ class Router
array_flip(["_controller", "_route"])
));
- return (new $class)->$method($request);
+ Logger::logRequestToFile($request);
+
+ $response = (new $class)->$method($request);
} catch (Exception $exception) {
- return ErrorResponse::fromException($exception);
+ $response = ErrorResponse::fromException($exception);
} catch (ResourceNotFoundException $exception) {
- return new ErrorResponse(ErrorCode::NOT_FOUND, "404", Response::HTTP_NOT_FOUND);
+ $response = new ErrorResponse(ErrorCode::NOT_FOUND, "404", Response::HTTP_NOT_FOUND);
} catch (MethodNotAllowedException $exception) {
- return new ErrorResponse(ErrorCode::FORBIDDEN, "403", Response::HTTP_FORBIDDEN);
+ $response = new ErrorResponse(ErrorCode::FORBIDDEN, "403", Response::HTTP_FORBIDDEN);
} catch (\LogicException $exception) { // display logic exceptions normally
throw $exception;
} catch (\Exception $exception) {
- return new ErrorResponse(
+ $response = new ErrorResponse(
ErrorCode::UNKNOWN,
$exception->getMessage() ?: "Unknown error occured",
Response::HTTP_INTERNAL_SERVER_ERROR
);
+ } catch (\Error $error) {
+ error_log($error->getMessage() ?: "Unknown error occured");
+
+ $response = new ErrorResponse(
+ ErrorCode::UNKNOWN,
+ $error->getMessage() ?: "Unknown error occured",
+ Response::HTTP_INTERNAL_SERVER_ERROR
+ );
}
+
+ return $response;
}
/**
diff --git a/src/Router/routes_client_server.php b/src/Router/routes_client_server.php
index fd39d08..590520b 100644
--- a/src/Router/routes_client_server.php
+++ b/src/Router/routes_client_server.php
@@ -34,6 +34,10 @@ return function (RouteConfigurator $routes): void
->add("matrix_client_r0_login_types", "/_matrix/client/r0/login")
->controller($supportedLoginTypes)
->methods(["GET"]);
+ $routes
+ ->add("matrix_client_v3_login_types", "/_matrix/client/v3/login")
+ ->controller($supportedLoginTypes)
+ ->methods(["GET"]);
$routes
->add("matrix_client_r0_login", "/_matrix/client/r0/login")
@@ -89,4 +93,19 @@ return function (RouteConfigurator $routes): void
->add("matrix_client_r0_user_id_filter", "/_matrix/client/r0/user/{userId}/filter")
->controller([UserController::class, "uploadFilter"])
->methods(["POST"]);
+
+ $routes
+ ->add("matrix_client_v3_user_id_filter", "/_matrix/client/v3/user/{userId}/filter")
+ ->controller([UserController::class, "uploadFilter"])
+ ->methods(["POST"]);
+
+ $routes
+ ->add("matrix_client_v3_room_create", "/_matrix/client/v3/createRoom")
+ ->controller([RoomController::class, "createRoom"])
+ ->methods(["POST"]);
+
+ $routes
+ ->add("matrix_client_v3_rooms_id_read_markers", "/_matrix/client/v3/rooms/{roomId}/read_markers")
+ ->controller([RoomController::class, "readMarkers"])
+ ->methods(["POST"]);
};