diff options
Diffstat (limited to 'src/Controllers/Client/KeyController.php')
| -rw-r--r-- | src/Controllers/Client/KeyController.php | 47 |
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"]), + ])); + } +} |
