diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs
index cb5f213..3896ac0 100644
--- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs
+++ b/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs
@@ -10,7 +10,7 @@ namespace LibMatrix.HomeserverEmulator.Controllers.Rooms;
public class RoomStateController(ILogger<RoomStateController> logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase {
[HttpGet("")]
public async Task<FrozenSet<StateEventResponse>> GetState(string roomId) {
- var token = tokenService.GetAccessToken(HttpContext);
+ var token = tokenService.GetAccessTokenOrNull(HttpContext);
if (token == null)
throw new MatrixException() {
ErrorCode = "M_MISSING_TOKEN",
@@ -23,7 +23,7 @@ public class RoomStateController(ILogger<RoomStateController> logger, TokenServi
ErrorCode = "M_UNKNOWN_TOKEN",
Error = "No such user"
};
-
+
var room = roomStore.GetRoomById(roomId);
if (room == null)
throw new MatrixException() {
@@ -33,15 +33,15 @@ public class RoomStateController(ILogger<RoomStateController> logger, TokenServi
return room.State;
}
-
+
[HttpGet("{eventType}")]
- public async Task<StateEventResponse> GetState(string roomId, string eventType) {
- return await GetState(roomId, eventType, "");
+ public async Task<object?> GetState(string roomId, string eventType, [FromQuery] string format = "client") {
+ return await GetState(roomId, eventType, "", format);
}
-
+
[HttpGet("{eventType}/{stateKey}")]
- public async Task<StateEventResponse> GetState(string roomId, string eventType, string stateKey) {
- var token = tokenService.GetAccessToken(HttpContext);
+ public async Task<object?> GetState(string roomId, string eventType, string stateKey, [FromQuery] string format = "client") {
+ var token = tokenService.GetAccessTokenOrNull(HttpContext);
if (token == null)
throw new MatrixException() {
ErrorCode = "M_MISSING_TOKEN",
@@ -54,7 +54,7 @@ public class RoomStateController(ILogger<RoomStateController> logger, TokenServi
ErrorCode = "M_UNKNOWN_TOKEN",
Error = "No such user"
};
-
+
var room = roomStore.GetRoomById(roomId);
if (room == null)
throw new MatrixException() {
@@ -68,17 +68,18 @@ public class RoomStateController(ILogger<RoomStateController> logger, TokenServi
ErrorCode = "M_NOT_FOUND",
Error = "Event not found"
};
- return stateEvent;
+ // return stateEvent;
+ return format == "event" ? stateEvent : stateEvent.RawContent;
}
-
+
[HttpPut("{eventType}")]
public async Task<EventIdResponse> SetState(string roomId, string eventType, [FromBody] StateEvent request) {
return await SetState(roomId, eventType, "", request);
}
-
+
[HttpPut("{eventType}/{stateKey}")]
public async Task<EventIdResponse> SetState(string roomId, string eventType, string stateKey, [FromBody] StateEvent request) {
- var token = tokenService.GetAccessToken(HttpContext);
+ var token = tokenService.GetAccessTokenOrNull(HttpContext);
if (token == null)
throw new MatrixException() {
ErrorCode = "M_MISSING_TOKEN",
@@ -91,7 +92,7 @@ public class RoomStateController(ILogger<RoomStateController> logger, TokenServi
ErrorCode = "M_UNKNOWN_TOKEN",
Error = "No such user"
};
-
+
var room = roomStore.GetRoomById(roomId);
if (room == null)
throw new MatrixException() {
@@ -101,7 +102,7 @@ public class RoomStateController(ILogger<RoomStateController> logger, TokenServi
var evt = room.SetStateInternal(request.ToStateEvent(user, room));
evt.Type = eventType;
evt.StateKey = stateKey;
- return new EventIdResponse(){
+ return new EventIdResponse() {
EventId = evt.EventId ?? throw new InvalidOperationException("EventId is null")
};
}
|