From f901875f94d7bcf8fe9a53c3e6012e8a8a145566 Mon Sep 17 00:00:00 2001 From: Erwin Kramer Date: Sat, 20 Jul 2024 16:23:50 +0200 Subject: [PATCH] InvariantCulture Signed-off-by: Erwin Kramer --- bindings/csharp/http/batch/program.cs | 25 ++++++++++++++++--------- bindings/csharp/sdk/batch/program.cs | 17 +++++++++++------ 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/bindings/csharp/http/batch/program.cs b/bindings/csharp/http/batch/program.cs index 2775ce449..200e1e0d2 100644 --- a/bindings/csharp/http/batch/program.cs +++ b/bindings/csharp/http/batch/program.cs @@ -16,7 +16,7 @@ limitations under the License. using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.AspNetCore.Mvc; - +using System.Globalization; //dapr run --app-id batch-http --app-port 7001 --resources-path ../../../components -- dotnet run @@ -30,18 +30,23 @@ limitations under the License. var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); -if (app.Environment.IsDevelopment()) {app.UseDeveloperExceptionPage();} +if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); // Triggered by Dapr input binding -app.MapPost("/" + cronBindingName, async () => { +app.MapPost("/" + cronBindingName, async () => +{ Console.WriteLine("Processing batch.."); + // Ensure the culture is set to one that uses dot notation + CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; + string jsonFile = File.ReadAllText("../../../orders.json"); var ordersArray = JsonSerializer.Deserialize(jsonFile); - foreach(Order ord in ordersArray?.orders ?? new Order[] {}){ + foreach (Order ord in ordersArray?.orders ?? new Order[] { }) + { var sqlText = $"insert into orders (orderid, customer, price) values ({ord.OrderId}, '{ord.Customer}', {ord.Price});"; var payload = new DaprPayload(sql: new DaprPostgresBindingMetadata(cmd: sqlText), operation: "exec"); var orderJson = JsonSerializer.Serialize(payload); @@ -50,19 +55,21 @@ limitations under the License. Console.WriteLine(sqlText); // Insert order using Dapr output binding via HTTP Post - try { + try + { var resp = await httpClient.PostAsync(daprUrl, content); resp.EnsureSuccessStatusCode(); - } - catch (HttpRequestException e) { + } + catch (HttpRequestException e) + { Console.WriteLine(e.ToString()); throw e; } } - + Console.WriteLine("Finished processing batch"); - + return Results.Ok(); }); diff --git a/bindings/csharp/sdk/batch/program.cs b/bindings/csharp/sdk/batch/program.cs index 60dd6225e..a8c5d8544 100644 --- a/bindings/csharp/sdk/batch/program.cs +++ b/bindings/csharp/sdk/batch/program.cs @@ -17,7 +17,7 @@ limitations under the License. using System.Text.Json.Serialization; using Microsoft.AspNetCore.Mvc; using Dapr.Client; - +using System.Globalization; // dapr run --app-id batch-sdk --app-port 7002 --resources-path ../../../components -- dotnet run @@ -27,18 +27,23 @@ limitations under the License. var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); -if (app.Environment.IsDevelopment()) {app.UseDeveloperExceptionPage();} +if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // Triggered by Dapr input binding -app.MapPost("/" + cronBindingName, async () => { - +app.MapPost("/" + cronBindingName, async () => +{ Console.WriteLine("Processing batch.."); + + // Ensure the culture is set to one that uses dot notation + CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; + string jsonFile = File.ReadAllText("../../../orders.json"); var ordersArray = JsonSerializer.Deserialize(jsonFile); using var client = new DaprClientBuilder().Build(); - foreach(Order ord in ordersArray?.orders ?? new Order[] {}){ + foreach (Order ord in ordersArray?.orders ?? new Order[] { }) + { var sqlText = $"insert into orders (orderid, customer, price) values ({ord.OrderId}, '{ord.Customer}', {ord.Price});"; - var command = new Dictionary(){ + var command = new Dictionary(){ {"sql", sqlText} };