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"], +    ]); +  }  } | 
