From 041134e58e27c68c3cfacdfdbe1c5255170d5673 Mon Sep 17 00:00:00 2001 From: Basique Evangelist Date: Thu, 4 Mar 2021 15:00:32 +0300 Subject: [PATCH] Allow passing report data through query parameters --- JetHerald/Controllers/ReportController.cs | 39 +++++++++++++++++++---- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/JetHerald/Controllers/ReportController.cs b/JetHerald/Controllers/ReportController.cs index 7cfc709..9a675dd 100644 --- a/JetHerald/Controllers/ReportController.cs +++ b/JetHerald/Controllers/ReportController.cs @@ -1,5 +1,5 @@ using System; -using System.Runtime.Serialization; +using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; @@ -19,7 +19,35 @@ namespace JetHerald.Controllers [Route("api/report")] [HttpPost] - public async Task Post([FromBody] ReportArgs args) + public async Task Report() + { + var q = Request.Query; + if (q.ContainsKey("Topic") + && q.ContainsKey("Message") + && q.ContainsKey("WriteToken")) + { + ReportArgs args = new(); + args.Topic = q["Topic"]; + args.Message = q["Message"]; + args.WriteToken = q["WriteToken"]; + return await DoReport(args); + } + + try + { + var args = await JsonSerializer.DeserializeAsync(HttpContext.Request.Body, new() + { + IncludeFields = true + }); + return await DoReport(args); + } + catch (JsonException) + { + return BadRequest(); + } + } + + private async Task DoReport(ReportArgs args) { var t = await Db.GetTopic(args.Topic); if (t == null) @@ -31,12 +59,11 @@ namespace JetHerald.Controllers return new OkResult(); } - [DataContract] public class ReportArgs { - [DataMember] public string Topic { get; set; } - [DataMember] public string Message { get; set; } - [DataMember] public string WriteToken { get; set; } + public string Topic { get; set; } + public string Message { get; set; } + public string WriteToken { get; set; } } } }