diff options
Diffstat (limited to 'src/Controllers/RoomController.php')
-rwxr-xr-x | src/Controllers/RoomController.php | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/Controllers/RoomController.php b/src/Controllers/RoomController.php index 1067d29..367d754 100755 --- a/src/Controllers/RoomController.php +++ b/src/Controllers/RoomController.php @@ -5,7 +5,12 @@ namespace App\Controllers; use App\Database; use App\Errors\AppException; use App\Errors\ErrorCode; +use App\Errors\UnauthorizedError; +use App\Models\User; use App\Support\Parser; +use App\Support\RequestValidator; +use App\Types\EventType; +use App\Types\MessageType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; @@ -51,4 +56,33 @@ class RoomController "servers" => [], ]); } + + /** + * PUT /_matrix/client/v3/rooms/{roomId}/send/{eventType}/{txnId} + * + * @see https://spec.matrix.org/v1.15/client-server-api/#put_matrixclientv3roomsroomidsendeventtypetxnid + */ + public function send(Request $request): Response + { + $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: ""); + $user = User::fetchWithAccessToken($accessToken); + + if (empty($user)) { + throw new UnauthorizedError(); + } + + $roomId = $request->attributes->get("roomId"); + $eventType = EventType::from($request->attributes->get("eventType")); + $transactionId = $request->attributes->get("txnId"); + + $body = json_decode($request->getContent(), true); + RequestValidator::validateJson(); + + $message = $body["body"]; + $messageType = MessageType::from($body["msgtype"]); + + return new JsonResponse([ + "event_id" => "\$asdfghjkl:" . $_ENV["DOMAIN"], + ]); + } } |