summaryrefslogtreecommitdiff
path: root/src/Controllers
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controllers')
-rw-r--r--src/Controllers/KeyController.php10
-rwxr-xr-xsrc/Controllers/RoomController.php21
-rwxr-xr-xsrc/Controllers/SyncController.php12
-rwxr-xr-xsrc/Controllers/UserController.php32
4 files changed, 71 insertions, 4 deletions
diff --git a/src/Controllers/KeyController.php b/src/Controllers/KeyController.php
index b2a17a6..a8b4fb1 100644
--- a/src/Controllers/KeyController.php
+++ b/src/Controllers/KeyController.php
@@ -4,7 +4,9 @@ namespace App\Controllers;
use App\Errors\AppException;
use App\Errors\ErrorCode;
+use App\Errors\UnauthorizedError;
use App\Models\Tokens;
+use App\Models\User;
use App\Support\RequestValidator;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -27,11 +29,19 @@ class KeyController
*/
public function upload(Request $request): Response
{
+ $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: "");
+ $user = User::fetchWithAccessToken($accessToken);
+
+ if (empty($user)) {
+ throw new UnauthorizedError();
+ }
+
$body = json_decode($request->getContent(), true);
RequestValidator::validateJson();
return new JsonResponse([
"one_time_key_counts" => [
+ "curve25519" => 0,
"signed_curve25519" => count($body["one_time_keys"])
],
]);
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,
]);
}
}
diff --git a/src/Controllers/SyncController.php b/src/Controllers/SyncController.php
index b7d51c3..243fab5 100755
--- a/src/Controllers/SyncController.php
+++ b/src/Controllers/SyncController.php
@@ -5,7 +5,10 @@ namespace App\Controllers;
use App\Database;
use App\Errors\UnauthorizedError;
use App\Events\PresenceEvent;
+use App\Events\RoomMemberEvent;
+use App\Events\RoomMessageEvent;
use App\Models\User;
+use App\Types\MembershipState;
use App\Types\PresenceState;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -62,14 +65,17 @@ class SyncController
],
"timeline" => [
- "events" => [],
+ "events" => [
+ (new RoomMemberEvent($user->getId(), $user->getId(), MembershipState::JOIN))->toJsonEncodeable(),
+ (new RoomMessageEvent($user->getId(), "Hallo Test Nachricht"))->toJsonEncodeable(),
+ ],
"limited" => false,
"prev_batch" => "",
],
"unread_notifications" => [
- "highlight_count" => 1,
- "notification_count" => 2,
+ "highlight_count" => random_int(0, 1),
+ "notification_count" => random_int(0, 10),
],
"unread_thread_notifications" => new \stdClass(),
diff --git a/src/Controllers/UserController.php b/src/Controllers/UserController.php
new file mode 100755
index 0000000..a056e1d
--- /dev/null
+++ b/src/Controllers/UserController.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Controllers;
+
+use App\Errors\UnauthorizedError;
+use App\Models\User;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\JsonResponse;
+
+class UserController
+{
+ /**
+ * POST /_matrix/client/r0/user/{userId}/filter
+ * POST /_matrix/client/v3/user/{userId}/filter
+ *
+ * @see https://spec.matrix.org/v1.16/client-server-api/#post_matrixclientv3useruseridfilter
+ */
+ public function uploadFilter(Request $request): Response
+ {
+ $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: "");
+ $user = User::fetchWithAccessToken($accessToken);
+
+ if (empty($user)) {
+ throw new UnauthorizedError();
+ }
+
+ return new JsonResponse([
+ "filter_id" => "1234",
+ ]);
+ }
+}