summaryrefslogtreecommitdiff
path: root/src/Controllers/RoomController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controllers/RoomController.php')
-rwxr-xr-xsrc/Controllers/RoomController.php34
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"],
+ ]);
+ }
}