diff --git a/MxApiExtensions.Classes.LibMatrix/RoomInfoEntry.cs b/MxApiExtensions.Classes.LibMatrix/RoomInfoEntry.cs
index 1a84fd2..9f72bb6 100644
--- a/MxApiExtensions.Classes.LibMatrix/RoomInfoEntry.cs
+++ b/MxApiExtensions.Classes.LibMatrix/RoomInfoEntry.cs
@@ -1,4 +1,4 @@
-using LibMatrix;
+using LibMatrix;
using LibMatrix.Responses;
namespace MxApiExtensions.Classes.LibMatrix;
diff --git a/MxApiExtensions/Classes/CustomLogFormatter.cs b/MxApiExtensions/Classes/CustomLogFormatter.cs
index 69812e5..c351c6a 100644
--- a/MxApiExtensions/Classes/CustomLogFormatter.cs
+++ b/MxApiExtensions/Classes/CustomLogFormatter.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Logging.Console;
-namespace MxApiExtensions.Classes;
+namespace MxApiExtensions.Classes;
public class CustomLogFormatter : ConsoleFormatter {
public CustomLogFormatter(string name) : base(name) { }
@@ -9,4 +9,4 @@ public class CustomLogFormatter : ConsoleFormatter {
public override void Write<TState>(in LogEntry<TState> logEntry, IExternalScopeProvider? scopeProvider, TextWriter textWriter) {
Console.WriteLine("Log message");
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Classes/MxApiExtensionsUserConfiguration.cs b/MxApiExtensions/Classes/MxApiExtensionsUserConfiguration.cs
index db83637..895c5eb 100644
--- a/MxApiExtensions/Classes/MxApiExtensionsUserConfiguration.cs
+++ b/MxApiExtensions/Classes/MxApiExtensionsUserConfiguration.cs
@@ -1,7 +1,7 @@
using LibMatrix.EventTypes;
using LibMatrix.Interfaces;
-namespace MxApiExtensions.Classes;
+namespace MxApiExtensions.Classes;
[MatrixEvent(EventName = EventId)]
public class MxApiExtensionsUserConfiguration : EventContent {
@@ -18,4 +18,4 @@ public class MxApiExtensionsUserConfiguration : EventContent {
public bool DisableVoip { get; set; } = false;
public bool AutoFollowTombstones { get; set; } = false;
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Classes/SyncFilter.cs b/MxApiExtensions/Classes/SyncFilter.cs
index 7f2bd08..a15cbcc 100644
--- a/MxApiExtensions/Classes/SyncFilter.cs
+++ b/MxApiExtensions/Classes/SyncFilter.cs
@@ -1,7 +1,7 @@
using LibMatrix.Responses;
-namespace MxApiExtensions.Classes;
+namespace MxApiExtensions.Classes;
public interface ISyncFilter {
public Task<SyncResponse> Apply(SyncResponse syncResponse);
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Classes/SyncState.cs b/MxApiExtensions/Classes/SyncState.cs
index 733f26d..50aa0bd 100644
--- a/MxApiExtensions/Classes/SyncState.cs
+++ b/MxApiExtensions/Classes/SyncState.cs
@@ -28,7 +28,7 @@ public class SyncState {
[JsonIgnore]
public AuthenticatedHomeserverGeneric Homeserver { get; set; }
-#region Debug stuff
+ #region Debug stuff
public object NextSyncResponseTaskInfo => new {
NextSyncResponse?.Id,
@@ -39,10 +39,10 @@ public class SyncState {
Status = NextSyncResponse?.Status.GetDisplayName()
};
-#endregion
+ #endregion
public SyncResponse SendEphemeralTimelineEventInRoom(string roomId, StateEventResponse @event, SyncResponse? existingResponse = null) {
- if(existingResponse is null)
+ if (existingResponse is null)
SyncQueue.Enqueue(existingResponse = new());
existingResponse.Rooms ??= new();
existingResponse.Rooms.Join ??= new();
@@ -54,7 +54,7 @@ public class SyncState {
}
public SyncResponse SendStatusMessage(string text, SyncResponse? existingResponse = null) {
- if(existingResponse is null)
+ if (existingResponse is null)
SyncQueue.Enqueue(existingResponse = new());
existingResponse.Presence ??= new();
// existingResponse.Presence.Events ??= new();
@@ -73,4 +73,4 @@ public class SyncState {
});
return existingResponse;
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Client/LoginController.cs b/MxApiExtensions/Controllers/Client/LoginController.cs
index 009aaef..bf44af1 100644
--- a/MxApiExtensions/Controllers/Client/LoginController.cs
+++ b/MxApiExtensions/Controllers/Client/LoginController.cs
@@ -70,4 +70,4 @@ public class LoginController(ILogger<LoginController> logger, HomeserverProvider
}
};
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Client/Room/RoomController.cs b/MxApiExtensions/Controllers/Client/Room/RoomController.cs
index a3e433d..7e7bfc1 100644
--- a/MxApiExtensions/Controllers/Client/Room/RoomController.cs
+++ b/MxApiExtensions/Controllers/Client/Room/RoomController.cs
@@ -48,4 +48,4 @@ public class RoomController(ILogger<LoginController> logger, HomeserverResolverS
}
}
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Client/Room/RoomsSendMessageController.cs b/MxApiExtensions/Controllers/Client/Room/RoomsSendMessageController.cs
index e882c8a..b800ec6 100644
--- a/MxApiExtensions/Controllers/Client/Room/RoomsSendMessageController.cs
+++ b/MxApiExtensions/Controllers/Client/Room/RoomsSendMessageController.cs
@@ -70,4 +70,4 @@ public class RoomsSendMessageController(ILogger<LoginController> logger, UserCon
EventId = "$" + string.Join("", Random.Shared.GetItems("abcdefghijklmnopqrstuvwxyzABCDEFGHIJLKMNOPQRSTUVWXYZ0123456789".ToCharArray(), 100))
});
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Client/SyncController.cs b/MxApiExtensions/Controllers/Client/SyncController.cs
index 615502b..3a759fc 100644
--- a/MxApiExtensions/Controllers/Client/SyncController.cs
+++ b/MxApiExtensions/Controllers/Client/SyncController.cs
@@ -291,4 +291,4 @@ public class SyncController(ILogger<SyncController> logger, MxApiExtensionsConfi
syncState.SyncQueue.Enqueue(syncResponse);
// _roomDataSemaphore.Release();
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Extensions/DebugController.cs b/MxApiExtensions/Controllers/Extensions/DebugController.cs
index 0a54481..6f87e51 100644
--- a/MxApiExtensions/Controllers/Extensions/DebugController.cs
+++ b/MxApiExtensions/Controllers/Extensions/DebugController.cs
@@ -46,4 +46,4 @@ public class DebugController(ILogger<ProxyConfigurationController> logger, MxApi
UserContextService.UserContextStore
};
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Extensions/JoinedRoomListController.cs b/MxApiExtensions/Controllers/Extensions/JoinedRoomListController.cs
index 9383390..07420d7 100644
--- a/MxApiExtensions/Controllers/Extensions/JoinedRoomListController.cs
+++ b/MxApiExtensions/Controllers/Extensions/JoinedRoomListController.cs
@@ -56,11 +56,11 @@ public class JoinedRoomListController : ControllerBase {
if (hs is not null) {
Response.ContentType = "application/json";
- Response.Headers.Add("Cache-Control", "public, max-age=60");
- Response.Headers.Add("Expires", DateTime.Now.AddMinutes(1).ToString("R"));
- Response.Headers.Add("Last-Modified", DateTime.Now.ToString("R"));
- Response.Headers.Add("X-Matrix-Server", hs.ServerName);
- Response.Headers.Add("X-Matrix-User", hs.UserId);
+ Response.Headers.Append("Cache-Control", "public, max-age=60");
+ Response.Headers.Append("Expires", DateTime.Now.AddMinutes(1).ToString("R"));
+ Response.Headers.Append("Last-Modified", DateTime.Now.ToString("R"));
+ Response.Headers.Append("X-Matrix-Server", hs.ServerName);
+ Response.Headers.Append("X-Matrix-User", hs.UserId);
// await Response.StartAsync();
var cachedRooms = _roomInfoCache
@@ -99,8 +99,8 @@ public class JoinedRoomListController : ControllerBase {
result.StateCount++;
if (@event.Type != "m.room.member") result.RoomState.Add(@event);
else {
- if(!result.MemberCounts.ContainsKey((@event.TypedContent as RoomMemberEventContent)?.Membership)) result.MemberCounts.Add((@event.TypedContent as RoomMemberEventContent)?.Membership, 0);
- result.MemberCounts[(@event.TypedContent as RoomMemberEventContent)?.Membership]++;
+ if (!result.MemberCounts.ContainsKey((@event.TypedContent as RoomMemberEventContent)?.Membership)) result.MemberCounts.Add((@event.TypedContent as RoomMemberEventContent)?.Membership, 0);
+ result.MemberCounts[(@event.TypedContent as RoomMemberEventContent)?.Membership]++;
}
}
@@ -119,7 +119,7 @@ public class JoinedRoomListController : ControllerBase {
[HttpGet("joined_rooms_with_info_cache")]
public async Task<object> GetRoomInfoCache() {
var mxid = await _authenticationService.GetMxidFromToken();
- if(!_config.Admins.Contains(mxid)) {
+ if (!_config.Admins.Contains(mxid)) {
Response.StatusCode = StatusCodes.Status403Forbidden;
Response.ContentType = "application/json";
diff --git a/MxApiExtensions/Controllers/Extensions/ProxyConfigurationController.cs b/MxApiExtensions/Controllers/Extensions/ProxyConfigurationController.cs
index 0dcc3bb..b9d7e84 100644
--- a/MxApiExtensions/Controllers/Extensions/ProxyConfigurationController.cs
+++ b/MxApiExtensions/Controllers/Extensions/ProxyConfigurationController.cs
@@ -24,7 +24,7 @@ public class ProxyConfigurationController : ControllerBase {
[HttpGet("proxy_config")]
public async Task<MxApiExtensionsConfiguration> GetConfig() {
var mxid = await _authenticationService.GetMxidFromToken();
- if(!_config.Admins.Contains(mxid)) {
+ if (!_config.Admins.Contains(mxid)) {
_logger.LogWarning("Got proxy config request for {user}, but they are not an admin", mxid);
Response.StatusCode = StatusCodes.Status403Forbidden;
Response.ContentType = "application/json";
diff --git a/MxApiExtensions/Controllers/Other/GenericProxyController.cs b/MxApiExtensions/Controllers/Other/GenericProxyController.cs
index 36ceab7..26c6371 100644
--- a/MxApiExtensions/Controllers/Other/GenericProxyController.cs
+++ b/MxApiExtensions/Controllers/Other/GenericProxyController.cs
@@ -188,4 +188,4 @@ public class GenericController(ILogger<GenericController> logger, MxApiExtension
await Response.CompleteAsync();
}
}
-}
\ No newline at end of file
+}
diff --git a/MxApiExtensions/Controllers/Other/MediaProxyController.cs b/MxApiExtensions/Controllers/Other/MediaProxyController.cs
index d4c4ea0..7dea73b 100644
--- a/MxApiExtensions/Controllers/Other/MediaProxyController.cs
+++ b/MxApiExtensions/Controllers/Other/MediaProxyController.cs
@@ -21,7 +21,7 @@ public class MediaProxyController(ILogger<GenericController> logger, MxApiExtens
private static Dictionary<string, MediaCacheEntry> _mediaCache = new();
private static SemaphoreSlim _semaphore = new(1, 1);
-
+
[HttpGet("/_matrix/media/{_}/download/{serverName}/{mediaId}")]
public async Task ProxyMedia(string? _, string serverName, string mediaId) {
try {
@@ -34,13 +34,13 @@ public class MediaProxyController(ILogger<GenericController> logger, MxApiExtens
List<RemoteHomeserver> FeasibleHomeservers = new();
{
var a = await authenticatedHomeserverProviderService.TryGetRemoteHomeserver();
- if(a is not null)
+ if (a is not null)
FeasibleHomeservers.Add(a);
if (a is AuthenticatedHomeserverGeneric ahg) {
var rooms = await ahg.GetJoinedRooms();
foreach (var room in rooms) {
- var ahs = (await room.GetMembersByHomeserverAsync()).Keys.Select(x=>x.ToString()).ToList();
+ var ahs = (await room.GetMembersByHomeserverAsync()).Keys.Select(x => x.ToString()).ToList();
foreach (var ah in ahs) {
try {
if (!FeasibleHomeservers.Any(x => x.BaseUrl == ah)) {
@@ -52,19 +52,19 @@ public class MediaProxyController(ILogger<GenericController> logger, MxApiExtens
}
}
}
-
+
FeasibleHomeservers.Add(await hsProvider.GetRemoteHomeserver(serverName));
-
-
+
+
foreach (var homeserver in FeasibleHomeservers) {
var resp = await homeserver.ClientHttpClient.GetAsync($"{Request.Path}");
- if(!resp.IsSuccessStatusCode) continue;
+ if (!resp.IsSuccessStatusCode) continue;
entry.ContentType = resp.Content.Headers.ContentType?.ToString() ?? "application/json";
entry.Data = await resp.Content.ReadAsByteArrayAsync();
- if (entry.Data is not { Length: >0 }) throw new NullReferenceException("No data received?");
+ if (entry.Data is not { Length: > 0 }) throw new NullReferenceException("No data received?");
break;
}
- if (entry.Data is not { Length: >0 }) throw new NullReferenceException("No data received from any homeserver?");
+ if (entry.Data is not { Length: > 0 }) throw new NullReferenceException("No data received from any homeserver?");
}
else if (_mediaCache[$"{serverName}/{mediaId}"].Data is not { Length: > 0 }) {
_mediaCache.Remove($"{serverName}/{mediaId}");
@@ -74,7 +74,7 @@ public class MediaProxyController(ILogger<GenericController> logger, MxApiExtens
else entry = _mediaCache[$"{serverName}/{mediaId}"];
if (entry.Data is null) throw new NullReferenceException("No data?");
_semaphore.Release();
-
+
Response.StatusCode = 200;
Response.ContentType = entry.ContentType;
await Response.StartAsync();
diff --git a/MxApiExtensions/Extensions/HttpResponseExtensions.cs b/MxApiExtensions/Extensions/HttpResponseExtensions.cs
index 1dd1c00..3f776ec 100644
--- a/MxApiExtensions/Extensions/HttpResponseExtensions.cs
+++ b/MxApiExtensions/Extensions/HttpResponseExtensions.cs
@@ -2,10 +2,10 @@ namespace MxApiExtensions.Extensions;
public static class HttpResponseExtensions {
public static async Task WriteHttpResponse(this HttpResponse response, HttpResponseMessage message) {
- response.StatusCode = (int) message.StatusCode;
+ response.StatusCode = (int)message.StatusCode;
//copy all headers
foreach (var header in message.Headers) {
- response.Headers.Add(header.Key, header.Value.ToArray());
+ response.Headers.Append(header.Key, header.Value.ToArray());
}
await response.StartAsync();
diff --git a/MxApiExtensions/FileStorageProvider.cs b/MxApiExtensions/FileStorageProvider.cs
index c2bb267..9ca330a 100644
--- a/MxApiExtensions/FileStorageProvider.cs
+++ b/MxApiExtensions/FileStorageProvider.cs
@@ -17,7 +17,7 @@ public class FileStorageProvider : IStorageProvider {
new Logger<FileStorageProvider>(new LoggerFactory()).LogInformation("test");
Console.WriteLine($"Initialised FileStorageProvider with path {targetPath}");
TargetPath = targetPath;
- if(!Directory.Exists(targetPath)) {
+ if (!Directory.Exists(targetPath)) {
Directory.CreateDirectory(targetPath);
}
}
diff --git a/MxApiExtensions/MxApiExtensions.csproj b/MxApiExtensions/MxApiExtensions.csproj
index 73565db..78607b2 100644
--- a/MxApiExtensions/MxApiExtensions.csproj
+++ b/MxApiExtensions/MxApiExtensions.csproj
@@ -10,14 +10,12 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="ArcaneLibs" Version="1.0.0-preview6437853305.78f6d30" />
<PackageReference Include="EasyCompressor.LZMA" Version="1.4.0" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\..\ArcaneLibs\ArcaneLibs\ArcaneLibs.csproj" />
<ProjectReference Include="..\..\LibMatrix\LibMatrix\LibMatrix.csproj" />
<ProjectReference Include="..\MxApiExtensions.Classes.LibMatrix\MxApiExtensions.Classes.LibMatrix.csproj" />
<ProjectReference Include="..\MxApiExtensions.Classes\MxApiExtensions.Classes.csproj" />
diff --git a/MxApiExtensions/Program.cs b/MxApiExtensions/Program.cs
index b08061e..b44129e 100644
--- a/MxApiExtensions/Program.cs
+++ b/MxApiExtensions/Program.cs
@@ -71,17 +71,15 @@ var app = builder.Build();
// Configure the HTTP request pipeline.
// if (app.Environment.IsDevelopment()) {
- app.UseSwagger();
- app.UseSwaggerUI();
+app.UseSwagger();
+app.UseSwaggerUI();
// }
// app.UseHttpsRedirection();
app.UseCors("Open");
-app.UseExceptionHandler(exceptionHandlerApp =>
-{
- exceptionHandlerApp.Run(async context =>
- {
+app.UseExceptionHandler(exceptionHandlerApp => {
+ exceptionHandlerApp.Run(async context => {
var exceptionHandlerPathFeature =
context.Features.Get<IExceptionHandlerPathFeature>();
@@ -110,4 +108,4 @@ app.UseExceptionHandler(exceptionHandlerApp =>
app.MapControllers();
-app.Run();
\ No newline at end of file
+app.Run();
diff --git a/MxApiExtensions/Services/AuthenticatedHomeserverProviderService.cs b/MxApiExtensions/Services/AuthenticatedHomeserverProviderService.cs
index 741beb3..296663d 100644
--- a/MxApiExtensions/Services/AuthenticatedHomeserverProviderService.cs
+++ b/MxApiExtensions/Services/AuthenticatedHomeserverProviderService.cs
@@ -15,7 +15,7 @@ public class AuthenticatedHomeserverProviderService(AuthenticationService authen
return null;
}
}
-
+
public async Task<RemoteHomeserver> GetRemoteHomeserver() {
try {
return await GetHomeserver();
@@ -23,7 +23,7 @@ public class AuthenticatedHomeserverProviderService(AuthenticationService authen
catch (MxApiMatrixException e) {
if (e is not { ErrorCode: "M_MISSING_TOKEN" }) throw;
if (request is null) throw new MxApiMatrixException() { ErrorCode = "M_UNKNOWN", Error = "[MxApiExtensions] Request was null for unauthenticated request!" };
- if (!_context.Request.Headers.Keys.Any(x=>x.ToUpper() == "MXAE_UPSTREAM"))
+ if (!_context.Request.Headers.Keys.Any(x => x.ToUpper() == "MXAE_UPSTREAM"))
throw new MxApiMatrixException() {
ErrorCode = "MXAE_MISSING_UPSTREAM",
Error = "[MxApiExtensions] Missing MXAE_UPSTREAM header for unauthenticated request, this should be a server_name!"
diff --git a/MxApiExtensions/Services/AuthenticationService.cs b/MxApiExtensions/Services/AuthenticationService.cs
index 7430fcd..6a45214 100644
--- a/MxApiExtensions/Services/AuthenticationService.cs
+++ b/MxApiExtensions/Services/AuthenticationService.cs
@@ -42,11 +42,11 @@ public class AuthenticationService(ILogger<AuthenticationService> logger, MxApiE
return "@anonymous:*";
}
- if(_tokenMap is not { Count: >0 } && File.Exists("token_map")) {
+ if (_tokenMap is not { Count: > 0 } && File.Exists("token_map")) {
_tokenMap = (await File.ReadAllLinesAsync("token_map"))
.Select(l => l.Split('\t'))
.ToDictionary(l => l[0], l => l[1]);
-
+
//THIS IS BROKEN, DO NOT USE!
// foreach (var (mapToken, mapUser) in _tokenMap) {
// try {
@@ -62,7 +62,7 @@ public class AuthenticationService(ILogger<AuthenticationService> logger, MxApiE
// _tokenMap.RemoveAll((x, y) => string.IsNullOrWhiteSpace(y));
// await File.WriteAllTextAsync("token_map", _tokenMap.Aggregate("", (x, y) => $"{y.Key}\t{y.Value}\n"));
}
-
+
if (_tokenMap.TryGetValue(token, out var mxid)) return mxid;
@@ -73,12 +73,12 @@ public class AuthenticationService(ILogger<AuthenticationService> logger, MxApiE
await lookupTasks[homeserver].WaitAsync(TimeSpan.FromMilliseconds(500));
if (lookupTasks[homeserver].IsCompletedSuccessfully && !string.IsNullOrWhiteSpace(lookupTasks[homeserver].Result)) break;
}
- catch {}
+ catch { }
}
await Task.WhenAll(lookupTasks.Values);
mxid = lookupTasks.Values.FirstOrDefault(x => x.Result != null)?.Result;
- if(mxid is null) {
+ if (mxid is null) {
throw new MxApiMatrixException {
ErrorCode = "M_UNKNOWN_TOKEN",
Error = "Token not found on any configured homeservers: " + string.Join(", ", config.AuthHomeservers)
diff --git a/MxApiExtensions/Services/UserContextService.cs b/MxApiExtensions/Services/UserContextService.cs
index d5ef282..7c96990 100644
--- a/MxApiExtensions/Services/UserContextService.cs
+++ b/MxApiExtensions/Services/UserContextService.cs
@@ -41,4 +41,4 @@ public class UserContextService(MxApiExtensionsConfiguration config, Authenticat
// _getUserContextSemaphore.Release();
return ucs;
}
-}
\ No newline at end of file
+}
|