diff options
Diffstat (limited to 'ModAS.Server/Controllers/AppService/PingController.cs')
-rw-r--r-- | ModAS.Server/Controllers/AppService/PingController.cs | 74 |
1 files changed, 11 insertions, 63 deletions
diff --git a/ModAS.Server/Controllers/AppService/PingController.cs b/ModAS.Server/Controllers/AppService/PingController.cs index 7b073c1..6db9033 100644 --- a/ModAS.Server/Controllers/AppService/PingController.cs +++ b/ModAS.Server/Controllers/AppService/PingController.cs @@ -1,73 +1,21 @@ -using System.IO.Pipelines; -using System.Net; -using System.Net.Http.Headers; -using System.Text.Json; -using ArcaneLibs; -using LibMatrix; -using LibMatrix.EventTypes.Spec; +using System.Text.Json.Serialization; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Configuration.Json; -using ModAS.Server; +using Microsoft.OpenApi.Validations.Rules; using ModAS.Server.Attributes; -using ModAS.Server.Services; -using MxApiExtensions.Services; namespace ModAS.Server.Controllers.AppService; [ApiController] -public class PingController( - AppServiceRegistration asr, - ModASConfiguration config, - UserProviderService userProvider, - RoomContextService roomContextService, - RoomStateCacheService stateCacheService) : ControllerBase { - private static List<string> _ignoredInvalidationEvents { get; set; } = [ - RoomMessageEventContent.EventId, - RoomMessageReactionEventContent.EventId - ]; - - [HttpPut("/_matrix/app/v1/transactions/{txnId}")] +[ApiExplorerSettings(IgnoreApi = true)] //hide from swagger +public class PingController : ControllerBase { + [HttpPost("/_matrix/app/v1/ping")] [UserAuth(AuthType = AuthType.Server)] - public async Task<IActionResult> PutTransactions(string txnId) { - var data = await JsonSerializer.DeserializeAsync<EventList>(Request.Body); - Console.WriteLine( - $"PutTransaction: {txnId}: {data.Events.Count} events, {Util.BytesToString(Request.Headers.ContentLength ?? Request.ContentLength ?? Request.Body.Length)}"); - - if (!Directory.Exists("data")) - Directory.CreateDirectory("data"); - Directory.CreateDirectory($"data/{txnId}"); - // var pipe = PipeReader.Create(Request.Body); - // await using var file = System.IO.File.OpenWrite($"data/{txnId}"); - // await pipe.CopyToAsync(file); - // await pipe.CompleteAsync(); - // - // Console.WriteLine($"PutTransaction: {txnId}: {Util.BytesToString(file.Length)}"); - for (var i = 0; i < data.Events.Count; i++) { - var evt = data.Events[i]; - Console.WriteLine($"PutTransaction: {txnId}/{i}: {evt.Type} {evt.StateKey} {evt.Sender}"); - await System.IO.File.WriteAllTextAsync($"data/{txnId}/{i}-{evt.Type.Replace("/", "")}-{evt.StateKey.Replace("/", "")}-{evt.Sender?.Replace("/", "")}.json", - JsonSerializer.Serialize(evt)); - - if (evt.Sender.EndsWith(':' + config.ServerName)) { - Console.WriteLine("PutTransaction: sender is local user, updating data..."); - try { - var user = await userProvider.GetImpersonatedHomeserver(evt.Sender); - var rooms = await user.GetJoinedRooms(); - foreach (var room in rooms) { - await roomContextService.GetRoomContext(room); - } - } - catch (Exception e) { - Console.WriteLine($"PutTransaction: failed to update data: {e}"); - } - } - else - Console.WriteLine("PutTransaction: sender is remote user"); - - if (!string.IsNullOrWhiteSpace(evt.RoomId) && !_ignoredInvalidationEvents.Contains(evt.Type)) - await stateCacheService.InvalidateRoomState(evt.RoomId); - } - + public IActionResult PutTransactions([FromBody] TransactionIdContainer data) { return Ok(new { }); } + + public class TransactionIdContainer { + [JsonPropertyName("transaction_id")] + public string TransactionId { get; set; } + } } \ No newline at end of file |