// Echo.JsonRpc/Program.cs (Server) using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Hosting; using Esiur.Tests.RPC.JsonServer; using System.Text.Json; using System.Text.Json.Serialization; var app = WebApplication.Create(args); var json = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.Never }; app.MapPost("/rpc", async (HttpRequest req) => { var rpc = await JsonSerializer.DeserializeAsync(req.Body, json); object? result = null; //switch (rpc!.Method) //{ // case "EchoBytes": result = rpc.Params.Deserialize(json); break; // case "EchoDocuments": result = rpc.Params!.Value.GetProperty("docs").Deserialize(json); break; // case "EchoIntArray": result = rpc.Params!.Value.GetProperty("array").Deserialize(json); break; // case "EchoStringArray": result = rpc.Params!.Value.GetProperty("array").Deserialize(json); break; // case "EchoMap": result = rpc.Params!.Value.GetProperty("map").Deserialize>(json); break; // case "EchoEnumArray": // var arr = rpc.Params!.Value.GetProperty("docTypes").Deserialize(json)!; // result = (arr.Length == 0) ? DocType.Quote : arr[^1]; // break; // default: return Results.BadRequest(); //} return Results.Json(new JsonRpcRes { Jsonrpc = "2.0", Id = rpc.Id, Result = rpc.Params }, json); }); app.Urls.Add("http://0.0.0.0:5100"); app.Run(); record JsonRpcReq(string Jsonrpc, string Method, object Params, string Id); record JsonRpcRes { public string Jsonrpc { get; init; } = "2.0"; public string Id { get; init; } = "1"; public object? Result { get; init; } }