diff options
Diffstat (limited to 'src/Controllers/RoomController.php')
-rwxr-xr-x | src/Controllers/RoomController.php | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/Controllers/RoomController.php b/src/Controllers/RoomController.php index 367d754..c02d5ce 100755 --- a/src/Controllers/RoomController.php +++ b/src/Controllers/RoomController.php @@ -6,10 +6,12 @@ use App\Database; use App\Errors\AppException; use App\Errors\ErrorCode; use App\Errors\UnauthorizedError; +use App\Events\RoomMessageEvent; use App\Models\User; use App\Support\Parser; use App\Support\RequestValidator; use App\Types\EventType; +use App\Types\MembershipState; use App\Types\MessageType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -81,8 +83,25 @@ class RoomController $message = $body["body"]; $messageType = MessageType::from($body["msgtype"]); + $eventId = "\$" . md5(random_bytes(512)) . ":" . $_ENV["DOMAIN"]; + $event = new RoomMessageEvent( + id: $eventId, + sender: $user->getId(), + originServerTimestamp: new \DateTime("now"), + content: [ + "body" => $message, + "msgtype" => $messageType->value, + ], + unsigned: [ + "age" => 1234, + "membership" => MembershipState::JOIN->value, + ], + roomId: $roomId, + ); + $event->insert(); + return new JsonResponse([ - "event_id" => "\$asdfghjkl:" . $_ENV["DOMAIN"], + "event_id" => $eventId, ]); } } |