using System.Net.Http.Json; using Kitchen.Service.Application.Ports; using Kitchen.Service.Application.State; namespace Kitchen.Service.Grpc.Adapters; public sealed class OperationsDalRestaurantLifecycleSyncClient(HttpClient httpClient) : IRestaurantLifecycleSyncPort { public async Task GetOrderAsync(string contextId, string orderId, CancellationToken cancellationToken) { var response = await httpClient.GetAsync($"/internal/operations-dal/orders/{Uri.EscapeDataString(orderId)}?contextId={Uri.EscapeDataString(contextId)}", cancellationToken); if (response.StatusCode == System.Net.HttpStatusCode.NotFound) { return null; } response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync(cancellationToken: cancellationToken); } public async Task UpsertOrderAsync(PersistedRestaurantLifecycleRecord record, CancellationToken cancellationToken) { var response = await httpClient.PostAsJsonAsync("/internal/operations-dal/orders", record, cancellationToken); response.EnsureSuccessStatusCode(); } }