summaryrefslogtreecommitdiff
path: root/src/Controllers/Client/KeyController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controllers/Client/KeyController.php')
-rw-r--r--src/Controllers/Client/KeyController.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Controllers/Client/KeyController.php b/src/Controllers/Client/KeyController.php
new file mode 100644
index 0000000..b9ae61f
--- /dev/null
+++ b/src/Controllers/Client/KeyController.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace App\Controllers\Client;
+
+use App\Models\User;
+use App\Support\RequestValidator;
+use Matrix\Responses\ClientKeysUploadPostResponse;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\JsonResponse;
+use Symfony\Component\Routing\Attribute\Route;
+
+class KeyController
+{
+ #[Route(path: "/_matrix/client/v3/keys/query", methods: ["POST"])]
+ public function query(Request $request): Response
+ {
+ $user = User::authenticateWithRequest($request);
+ $body = json_decode($request->getContent(), true);
+ RequestValidator::validateJson();
+
+ $deviceKeys = $body["device_keys"];
+ $timeout = $body["timeout"] ?? 10000;
+
+ foreach ($deviceKeys as $keysUserId => $deviceIds) {}
+
+ return new JsonResponse([
+ "device_keys" => [],
+ ]);
+ }
+
+ #[Route(path: "/_matrix/client/r0/keys/upload", methods: ["POST"])]
+ #[Route(path: "/_matrix/client/v3/keys/upload", methods: ["POST"])]
+ public function upload(Request $request): Response
+ {
+ $user = User::authenticateWithRequest($request);
+ $body = json_decode($request->getContent(), true);
+ RequestValidator::validateJson();
+
+ foreach ($body["one_time_keys"] as $identifier => $object) {}
+
+ return new JsonResponse(new ClientKeysUploadPostResponse([
+ #"curve25519" => 0,
+ "signed_curve25519" => count($body["one_time_keys"]),
+ ]));
+ }
+}