From a0ad1f5e7fac279b33ea09ca0e347cd7d02cd8ec Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Fri, 15 Aug 2025 15:47:27 +0200 Subject: keys and sync endpoint setup --- src/Controllers/KeyController.php | 10 ++++++++++ src/Controllers/SyncController.php | 26 ++++++++++++++++++++++++++ src/Errors/UnauthorizedError.php | 18 ++++++++++++++++++ src/Router/Router.php | 6 +++++- src/Router/routes_client_server.php | 12 ++++++++++++ src/Support/Logger.php | 23 +++++++++++++++++++++++ src/Types/EncryptionAlgorithm.php | 9 +++++++++ 7 files changed, 103 insertions(+), 1 deletion(-) create mode 100755 src/Controllers/SyncController.php create mode 100755 src/Errors/UnauthorizedError.php create mode 100644 src/Support/Logger.php create mode 100755 src/Types/EncryptionAlgorithm.php (limited to 'src') diff --git a/src/Controllers/KeyController.php b/src/Controllers/KeyController.php index 04f2c6d..a999e40 100644 --- a/src/Controllers/KeyController.php +++ b/src/Controllers/KeyController.php @@ -2,6 +2,7 @@ namespace App\Controllers; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; @@ -17,6 +18,15 @@ class KeyController ]); } + public function upload(): Response + { + $request = Request::createFromGlobals(); + + return new JsonResponse([ + "one_time_key_counts" => [], + ]); + } + public function query(string $serverName): Response {} } diff --git a/src/Controllers/SyncController.php b/src/Controllers/SyncController.php new file mode 100755 index 0000000..19da1b5 --- /dev/null +++ b/src/Controllers/SyncController.php @@ -0,0 +1,26 @@ +headers->get("authorization") != "Bearer abc123") { + # TODO: get user based on bearer token + throw new UnauthorizedError(); + } + + return new JsonResponse([ + "account_data" => [], + "next_batch" => "", + ]); + } +} diff --git a/src/Errors/UnauthorizedError.php b/src/Errors/UnauthorizedError.php new file mode 100755 index 0000000..97df025 --- /dev/null +++ b/src/Errors/UnauthorizedError.php @@ -0,0 +1,18 @@ +getMessage() ?: "Unknown error occured", + Response::HTTP_INTERNAL_SERVER_ERROR + ); } } diff --git a/src/Router/routes_client_server.php b/src/Router/routes_client_server.php index eff0be5..78e2e48 100644 --- a/src/Router/routes_client_server.php +++ b/src/Router/routes_client_server.php @@ -2,9 +2,11 @@ namespace App\Router; +use App\Controllers\KeyController; use App\Controllers\LoginController; use App\Controllers\ServerDiscoveryController; use App\Controllers\ServerImplementationController; +use App\Controllers\SyncController; use Symfony\Component\Routing\Loader\Configurator\RouteConfigurator; return function (RouteConfigurator $routes): void @@ -38,4 +40,14 @@ return function (RouteConfigurator $routes): void ->add("matrix_client_v3_login", "/_matrix/client/v3/login") ->controller([LoginController::class, "login"]) ->methods(["POST"]); + + $routes + ->add("matrix_client_v3_keys_upload", "/_matrix/client/v3/keys/upload") + ->controller([KeyController::class, "upload"]) + ->methods(["POST"]); + + $routes + ->add("matrix_client_v3_sync", "/_matrix/client/v3/sync") + ->controller([SyncController::class, "sync"]) + ->methods(["GET"]); }; diff --git a/src/Support/Logger.php b/src/Support/Logger.php new file mode 100644 index 0000000..fb86166 --- /dev/null +++ b/src/Support/Logger.php @@ -0,0 +1,23 @@ +getPathInfo()); + + file_put_contents( + $basePath . "-body.json", + $request->getContent() + ); + + file_put_contents( + $basePath . "-header.json", + json_encode($request->headers->all()) + ); + } +} diff --git a/src/Types/EncryptionAlgorithm.php b/src/Types/EncryptionAlgorithm.php new file mode 100755 index 0000000..5ee89e4 --- /dev/null +++ b/src/Types/EncryptionAlgorithm.php @@ -0,0 +1,9 @@ +