using System.Data; using dotenv.net; using Microsoft.AspNetCore.WebUtilities; using Newtonsoft.Json; using PdfService; DotEnv.Load(); Stimulsoft.Base.StiLicense.Key = "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHkO46nMQvol4ASeg91in+mGJLnn2KMIpg3eSXQSgaFOm15+0lhekKip+wRGMwXsKpHAkTvorOFqnpF9rchcYoxHXtjNDLiDHZGTIWq6D/2q4k/eiJm9fV6FdaJIUbWGS3whFWRLPHWCBsWnalqTdZlP9knjaWclfjmUKf2Ksc5btMD6pmR7ZHQfHXfdgYK7tLR1rqtxYxBzOPq3LIBvd3spkQhKb07LTZQoyQ3vmRSMALmJSS6ovIS59XPS+oSm8wgvuRFqE1im111GROa7Ww3tNJTA45lkbXX+SocdwXvEZyaaq61Uc1dBg+4uFRxvyRWvX5WDmJz1X0VLIbHpcIjdEDJUvVAN7Z+FW5xKsV5ySPs8aegsY9ndn4DmoZ1kWvzUaz+E1mxMbOd3tyaNnmVhPZeIBILmKJGN0BwnnI5fu6JHMM/9QR2tMO1Z4pIwae4P92gKBrt0MqhvnU1Q6kIaPPuG2XBIvAWykVeH2a9EP6064e11PFCBX4gEpJ3XFD0peE5+ddZh+h495qUc1H2B"; SentrySdk.Init(options => { options.Dsn = Environment.GetEnvironmentVariable("SENTRY_DSN"); }); var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.UseMiddleware(); app.MapPost("/Print", async (HttpContext context) => { var request = context.Request; var boundary = request.ContentType.Split("boundary=")[1]; var reader = new MultipartReader(boundary, request.Body); MultipartSection section; var parts = new List<(string ContentType, string Content, string ConentDisposition)>(); while ((section = await reader.ReadNextSectionAsync()) != null) { using var sr = new StreamReader(section.Body); var content = await sr.ReadToEndAsync(); var contentType = section.ContentType; var contentDisposition = section.ContentDisposition; parts.Add((contentType, content, contentDisposition)); } string reportTemplate = ""; string fileName = ""; dynamic data = null; foreach (var part in parts) { if (part.ContentType == "application/json") { data = JsonConvert.DeserializeObject(part.Content); } else if (part.ContentType == "application/xml") { reportTemplate = part.Content; fileName = part.ConentDisposition?.Split(".")[1]; } } var reportStream = Reporter.Print(reportTemplate, data); return Results.File(reportStream, "application/pdf", $"{fileName}.pdf"); }); app.Run();