From 27aaed0a00a964252b8f01d3902732134a79617a Mon Sep 17 00:00:00 2001 From: Reuben Bond Date: Fri, 28 Apr 2023 11:57:57 -0700 Subject: [PATCH] Fix formatting --- .../Mobile.Bff.Shopping/aggregator/Program.cs | 2 +- .../Mobile.Bff.Shopping/aggregator/Startup.cs | 2 +- .../aggregator/Services/BasketService.cs | 2 +- .../InMemory_SubscriptionManager_Tests.cs | 2 +- .../EventBus/Events/IntegrationEvent.cs | 2 +- .../EventBusRabbitMQ/EventBusRabbitMQ.cs | 4 +- .../DefaultServiceBusPersisterConnection.cs | 2 +- .../IntegrationEventLogEntry.cs | 4 +- src/Services/Basket/Basket.API/Program.cs | 147 +++++++++----- .../Catalog.API/Grpc/CatalogService.cs | 2 +- .../Infrastructure/CatalogContextSeed.cs | 2 +- ...aitingValidationIntegrationEventHandler.cs | 2 +- src/Services/Catalog/Catalog.API/Program.cs | 184 ++++++++++++------ .../Identity.API/IWebHostExtensions.cs | 2 +- .../Identity.API/ProgramExtensions.cs | 2 +- .../Quickstart/Account/AccountController.cs | 4 +- ...dToAwaitingValidationDomainEventHandler.cs | 2 +- ...erStatusChangedToPaidDomainEventHandler.cs | 2 +- ...PaymentSucceededIntegrationEventHandler.cs | 2 +- .../GracePeriodConfirmedIntegrationEvent.cs | 2 +- ...gedToAwaitingValidationIntegrationEvent.cs | 2 +- .../OrderStockRejectedIntegrationEvent.cs | 2 +- .../UserCheckoutAcceptedIntegrationEvent.cs | 10 +- .../Application/Queries/OrderQueries.cs | 2 +- .../Infrastructure/OrderingContextSeed.cs | 2 +- src/Services/Ordering/Ordering.API/Program.cs | 2 +- .../Extensions/CustomExtensionMethods.cs | 2 +- .../Services/GracePeriodManagerService.cs | 6 +- .../OrderStatusChangedToPaidDomainEvent.cs | 2 +- .../Ordering.Domain/SeedWork/Enumeration.cs | 4 +- ...ToStockConfirmedIntegrationEventHandler.cs | 2 +- ...ChangedToStockConfirmedIntegrationEvent.cs | 2 +- .../HttpGlobalExceptionFilter.cs | 2 +- src/Services/Webhooks/Webhooks.API/Startup.cs | 72 +++---- .../Services/Ordering/OrderingScenarios.cs | 2 +- .../WebMVC/Extensions/SessionExtensions.cs | 10 +- src/Web/WebMVC/Program.cs | 2 +- src/Web/WebMVC/Services/BasketService.cs | 2 +- src/Web/WebMVC/Services/CatalogService.cs | 6 +- src/Web/WebMVC/ViewModels/Order.cs | 4 +- .../Server/Controllers/HomeController.cs | 2 +- .../WebhookClient/Models/WebHookReceived.cs | 2 +- 42 files changed, 311 insertions(+), 204 deletions(-) diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs index c5d6e10ff..92e7e3a37 100644 --- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs +++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs @@ -1,4 +1,4 @@ -await BuildWebHost(args).RunAsync(); +await BuildWebHost(args).RunAsync(); IWebHost BuildWebHost(string[] args) => WebHost .CreateDefaultBuilder(args) diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Startup.cs b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Startup.cs index d875a140f..a7b5335c5 100644 --- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Startup.cs +++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Startup.cs @@ -44,7 +44,7 @@ public class Startup app.UseSwagger().UseSwaggerUI(c => { - c.SwaggerEndpoint($"{ (!string.IsNullOrEmpty(pathBase) ? pathBase : string.Empty) }/swagger/v1/swagger.json", "Purchase BFF V1"); + c.SwaggerEndpoint($"{(!string.IsNullOrEmpty(pathBase) ? pathBase : string.Empty)}/swagger/v1/swagger.json", "Purchase BFF V1"); c.OAuthClientId("mobileshoppingaggswaggerui"); c.OAuthClientSecret(string.Empty); diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs b/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs index 41d14d450..a58c6a903 100644 --- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs +++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Services/BasketService.cs @@ -10,7 +10,7 @@ public class BasketService : IBasketService _basketClient = basketClient; _logger = logger; } - + public async Task GetByIdAsync(string id) { _logger.LogDebug("grpc client created, request = {@id}", id); diff --git a/src/BuildingBlocks/EventBus/EventBus.Tests/InMemory_SubscriptionManager_Tests.cs b/src/BuildingBlocks/EventBus/EventBus.Tests/InMemory_SubscriptionManager_Tests.cs index 1aab08c36..5309a4a9f 100644 --- a/src/BuildingBlocks/EventBus/EventBus.Tests/InMemory_SubscriptionManager_Tests.cs +++ b/src/BuildingBlocks/EventBus/EventBus.Tests/InMemory_SubscriptionManager_Tests.cs @@ -17,7 +17,7 @@ namespace EventBus.Tests public void After_One_Event_Subscription_Should_Contain_The_Event() { var manager = new InMemoryEventBusSubscriptionsManager(); - manager.AddSubscription(); + manager.AddSubscription(); Assert.True(manager.HasSubscriptionsForEvent()); } diff --git a/src/BuildingBlocks/EventBus/EventBus/Events/IntegrationEvent.cs b/src/BuildingBlocks/EventBus/EventBus/Events/IntegrationEvent.cs index 31118c4da..5c53b8c48 100644 --- a/src/BuildingBlocks/EventBus/EventBus/Events/IntegrationEvent.cs +++ b/src/BuildingBlocks/EventBus/EventBus/Events/IntegrationEvent.cs @@ -1,7 +1,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; public record IntegrationEvent -{ +{ public IntegrationEvent() { Id = Guid.NewGuid(); diff --git a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs index b5c8359b4..b8312d7c1 100644 --- a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs +++ b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs @@ -80,7 +80,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable var properties = channel.CreateBasicProperties(); properties.DeliveryMode = 2; // persistent - _logger.LogTrace("Publishing event to RabbitMQ: {EventId}", @event.Id); + _logger.LogTrace("Publishing event to RabbitMQ: {EventId}", @event.Id); channel.BasicPublish( exchange: BROKER_NAME, @@ -123,7 +123,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable { _persistentConnection.TryConnect(); } - + _consumerChannel.QueueBind(queue: _queueName, exchange: BROKER_NAME, routingKey: eventName); diff --git a/src/BuildingBlocks/EventBus/EventBusServiceBus/DefaultServiceBusPersisterConnection.cs b/src/BuildingBlocks/EventBus/EventBusServiceBus/DefaultServiceBusPersisterConnection.cs index edaed7455..502a8cc8c 100644 --- a/src/BuildingBlocks/EventBus/EventBusServiceBus/DefaultServiceBusPersisterConnection.cs +++ b/src/BuildingBlocks/EventBus/EventBusServiceBus/DefaultServiceBusPersisterConnection.cs @@ -27,7 +27,7 @@ public class DefaultServiceBusPersisterConnection : IServiceBusPersisterConnecti } } - public ServiceBusAdministrationClient AdministrationClient => + public ServiceBusAdministrationClient AdministrationClient => _subscriptionClient; public ServiceBusClient CreateModel() diff --git a/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEntry.cs b/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEntry.cs index 90826f22e..7da4b88ee 100644 --- a/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEntry.cs +++ b/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEntry.cs @@ -7,7 +7,7 @@ public class IntegrationEventLogEntry { EventId = @event.Id; CreationTime = @event.CreationDate; - EventTypeName = @event.GetType().FullName; + EventTypeName = @event.GetType().FullName; Content = JsonSerializer.Serialize(@event, @event.GetType(), new JsonSerializerOptions { WriteIndented = true @@ -29,7 +29,7 @@ public class IntegrationEventLogEntry public string TransactionId { get; private set; } public IntegrationEventLogEntry DeserializeJsonContent(Type type) - { + { IntegrationEvent = JsonSerializer.Deserialize(Content, type, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }) as IntegrationEvent; return this; } diff --git a/src/Services/Basket/Basket.API/Program.cs b/src/Services/Basket/Basket.API/Program.cs index 71c7587db..9554841ec 100644 --- a/src/Services/Basket/Basket.API/Program.cs +++ b/src/Services/Basket/Basket.API/Program.cs @@ -3,12 +3,14 @@ using Microsoft.Azure.Amqp.Framing; using Microsoft.Extensions.Configuration; var appName = "Basket.API"; -var builder = WebApplication.CreateBuilder(new WebApplicationOptions { +var builder = WebApplication.CreateBuilder(new WebApplicationOptions +{ Args = args, ApplicationName = typeof(Program).Assembly.FullName, ContentRootPath = Directory.GetCurrentDirectory() }); -if (builder.Configuration.GetValue("UseVault", false)) { +if (builder.Configuration.GetValue("UseVault", false)) +{ TokenCredential credential = new ClientSecretCredential( builder.Configuration["Vault:TenantId"], builder.Configuration["Vault:ClientId"], @@ -16,29 +18,36 @@ if (builder.Configuration.GetValue("UseVault", false)) { builder.Configuration.AddAzureKeyVault(new Uri($"https://{builder.Configuration["Vault:Name"]}.vault.azure.net/"), credential); } -builder.Services.AddGrpc(options => { +builder.Services.AddGrpc(options => +{ options.EnableDetailedErrors = true; }); builder.Services.AddApplicationInsightsTelemetry(builder.Configuration); builder.Services.AddApplicationInsightsKubernetesEnricher(); -builder.Services.AddControllers(options => { +builder.Services.AddControllers(options => +{ options.Filters.Add(typeof(HttpGlobalExceptionFilter)); options.Filters.Add(typeof(ValidateModelStateFilter)); }) // Added for functional tests .AddApplicationPart(typeof(BasketController).Assembly) .AddJsonOptions(options => options.JsonSerializerOptions.WriteIndented = true); -builder.Services.AddSwaggerGen(options => { - options.SwaggerDoc("v1", new OpenApiInfo { +builder.Services.AddSwaggerGen(options => +{ + options.SwaggerDoc("v1", new OpenApiInfo + { Title = "eShopOnContainers - Basket HTTP API", Version = "v1", Description = "The Basket Service HTTP API" }); - options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme { + options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme + { Type = SecuritySchemeType.OAuth2, - Flows = new OpenApiOAuthFlows() { - Implicit = new OpenApiOAuthFlow() { + Flows = new OpenApiOAuthFlows() + { + Implicit = new OpenApiOAuthFlow() + { AuthorizationUrl = new Uri($"{builder.Configuration.GetValue("IdentityUrlExternal")}/connect/authorize"), TokenUrl = new Uri($"{builder.Configuration.GetValue("IdentityUrlExternal")}/connect/token"), Scopes = new Dictionary() { { "basket", "Basket API" } } @@ -54,14 +63,17 @@ JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("sub"); var identityUrl = builder.Configuration.GetValue("IdentityUrl"); -builder.Services.AddAuthentication("Bearer").AddJwtBearer(options => { +builder.Services.AddAuthentication("Bearer").AddJwtBearer(options => +{ options.Authority = identityUrl; options.RequireHttpsMetadata = false; options.Audience = "basket"; options.TokenValidationParameters.ValidateAudience = false; }); -builder.Services.AddAuthorization(options => { - options.AddPolicy("ApiScope", policy => { +builder.Services.AddAuthorization(options => +{ + options.AddPolicy("ApiScope", policy => + { policy.RequireAuthenticatedUser(); policy.RequireClaim("scope", "basket"); }); @@ -71,7 +83,8 @@ builder.Services.AddCustomHealthCheck(builder.Configuration); builder.Services.Configure(builder.Configuration); -builder.Services.AddSingleton(sp => { +builder.Services.AddSingleton(sp => +{ var settings = sp.GetRequiredService>().Value; var configuration = ConfigurationOptions.Parse(settings.ConnectionString, true); @@ -79,32 +92,40 @@ builder.Services.AddSingleton(sp => { }); -if (builder.Configuration.GetValue("AzureServiceBusEnabled")) { - builder.Services.AddSingleton(sp => { +if (builder.Configuration.GetValue("AzureServiceBusEnabled")) +{ + builder.Services.AddSingleton(sp => + { var serviceBusConnectionString = builder.Configuration["EventBusConnection"]; return new DefaultServiceBusPersisterConnection(serviceBusConnectionString); }); } -else { - builder.Services.AddSingleton(sp => { +else +{ + builder.Services.AddSingleton(sp => + { var logger = sp.GetRequiredService>(); - var factory = new ConnectionFactory() { + var factory = new ConnectionFactory() + { HostName = builder.Configuration["EventBusConnection"], DispatchConsumersAsync = true }; - if (!string.IsNullOrEmpty(builder.Configuration["EventBusUserName"])) { + if (!string.IsNullOrEmpty(builder.Configuration["EventBusUserName"])) + { factory.UserName = builder.Configuration["EventBusUserName"]; } - if (!string.IsNullOrEmpty(builder.Configuration["EventBusPassword"])) { + if (!string.IsNullOrEmpty(builder.Configuration["EventBusPassword"])) + { factory.Password = builder.Configuration["EventBusPassword"]; } var retryCount = 5; - if (!string.IsNullOrEmpty(builder.Configuration["EventBusRetryCount"])) { + if (!string.IsNullOrEmpty(builder.Configuration["EventBusRetryCount"])) + { retryCount = int.Parse(builder.Configuration["EventBusRetryCount"]); } @@ -112,7 +133,8 @@ else { }); } builder.Services.RegisterEventBus(builder.Configuration); -builder.Services.AddCors(options => { +builder.Services.AddCors(options => +{ options.AddPolicy("CorsPolicy", builder => builder .SetIsOriginAllowed((host) => true) @@ -128,39 +150,47 @@ builder.Services.AddOptions(); builder.Configuration.SetBasePath(Directory.GetCurrentDirectory()); builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); builder.Configuration.AddEnvironmentVariables(); -builder.WebHost.UseKestrel(options => { +builder.WebHost.UseKestrel(options => +{ var ports = GetDefinedPorts(builder.Configuration); - options.Listen(IPAddress.Any, ports.httpPort, listenOptions => { + options.Listen(IPAddress.Any, ports.httpPort, listenOptions => + { listenOptions.Protocols = HttpProtocols.Http1AndHttp2; }); - options.Listen(IPAddress.Any, ports.grpcPort, listenOptions => { + options.Listen(IPAddress.Any, ports.grpcPort, listenOptions => + { listenOptions.Protocols = HttpProtocols.Http2; }); }); builder.WebHost.CaptureStartupErrors(false); builder.Host.UseSerilog(CreateSerilogLogger(builder.Configuration)); -builder.WebHost.UseFailing(options => { +builder.WebHost.UseFailing(options => +{ options.ConfigPath = "/Failing"; options.NotFilteredPaths.AddRange(new[] { "/hc", "/liveness" }); }); var app = builder.Build(); -if (app.Environment.IsDevelopment()) { +if (app.Environment.IsDevelopment()) +{ app.UseDeveloperExceptionPage(); } -else { +else +{ app.UseExceptionHandler("/Home/Error"); } var pathBase = app.Configuration["PATH_BASE"]; -if (!string.IsNullOrEmpty(pathBase)) { +if (!string.IsNullOrEmpty(pathBase)) +{ app.UsePathBase(pathBase); } app.UseSwagger() - .UseSwaggerUI(setup => { + .UseSwaggerUI(setup => + { setup.SwaggerEndpoint($"{(!string.IsNullOrEmpty(pathBase) ? pathBase : string.Empty)}/swagger/v1/swagger.json", "Basket.API V1"); setup.OAuthClientId("basketswaggerui"); setup.OAuthAppName("Basket Swagger UI"); @@ -176,26 +206,32 @@ app.UseStaticFiles(); app.MapGrpcService(); app.MapDefaultControllerRoute(); app.MapControllers(); -app.MapGet("/_proto/", async ctx => { +app.MapGet("/_proto/", async ctx => +{ ctx.Response.ContentType = "text/plain"; using var fs = new FileStream(Path.Combine(app.Environment.ContentRootPath, "Proto", "basket.proto"), FileMode.Open, FileAccess.Read); using var sr = new StreamReader(fs); - while (!sr.EndOfStream) { + while (!sr.EndOfStream) + { var line = await sr.ReadLineAsync(); - if (line != "/* >>" || line != "<< */") { + if (line != "/* >>" || line != "<< */") + { await ctx.Response.WriteAsync(line); } } }); -app.MapHealthChecks("/hc", new HealthCheckOptions() { +app.MapHealthChecks("/hc", new HealthCheckOptions() +{ Predicate = _ => true, ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }); -app.MapHealthChecks("/liveness", new HealthCheckOptions { +app.MapHealthChecks("/liveness", new HealthCheckOptions +{ Predicate = r => r.Name.Contains("self") }); ConfigureEventBus(app); -try { +try +{ Log.Information("Configuring web host ({ApplicationContext})...", Program.AppName); @@ -204,15 +240,18 @@ try { return 0; } -catch (Exception ex) { +catch (Exception ex) +{ Log.Fatal(ex, "Program terminated unexpectedly ({ApplicationContext})!", Program.AppName); return 1; } -finally { +finally +{ Log.CloseAndFlush(); } -Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { +Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) +{ var seqServerUrl = configuration["Serilog:SeqServerUrl"]; var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() @@ -226,30 +265,37 @@ Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { .CreateLogger(); } -(int httpPort, int grpcPort) GetDefinedPorts(IConfiguration config) { +(int httpPort, int grpcPort) GetDefinedPorts(IConfiguration config) +{ var grpcPort = config.GetValue("GRPC_PORT", 5001); var port = config.GetValue("PORT", 80); return (port, grpcPort); } -void ConfigureEventBus(IApplicationBuilder app) { +void ConfigureEventBus(IApplicationBuilder app) +{ var eventBus = app.ApplicationServices.GetRequiredService(); eventBus.Subscribe(); eventBus.Subscribe(); } -public partial class Program { +public partial class Program +{ public static string Namespace = typeof(Program).Assembly.GetName().Name; public static string AppName = Namespace.Substring(Namespace.LastIndexOf('.', Namespace.LastIndexOf('.') - 1) + 1); } -public static class CustomExtensionMethods { +public static class CustomExtensionMethods +{ - public static IServiceCollection RegisterEventBus(this IServiceCollection services, IConfiguration configuration) { - if (configuration.GetValue("AzureServiceBusEnabled")) { - services.AddSingleton(sp => { + public static IServiceCollection RegisterEventBus(this IServiceCollection services, IConfiguration configuration) + { + if (configuration.GetValue("AzureServiceBusEnabled")) + { + services.AddSingleton(sp => + { var serviceBusPersisterConnection = sp.GetRequiredService(); var logger = sp.GetRequiredService>(); var eventBusSubscriptionsManager = sp.GetRequiredService(); @@ -259,15 +305,18 @@ public static class CustomExtensionMethods { eventBusSubscriptionsManager, sp, subscriptionName); }); } - else { - services.AddSingleton(sp => { + else + { + services.AddSingleton(sp => + { var subscriptionClientName = configuration["SubscriptionClientName"]; var rabbitMQPersistentConnection = sp.GetRequiredService(); var logger = sp.GetRequiredService>(); var eventBusSubscriptionsManager = sp.GetRequiredService(); var retryCount = 5; - if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) { + if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) + { retryCount = int.Parse(configuration["EventBusRetryCount"]); } diff --git a/src/Services/Catalog/Catalog.API/Grpc/CatalogService.cs b/src/Services/Catalog/Catalog.API/Grpc/CatalogService.cs index 1b5c533f2..29913b086 100644 --- a/src/Services/Catalog/Catalog.API/Grpc/CatalogService.cs +++ b/src/Services/Catalog/Catalog.API/Grpc/CatalogService.cs @@ -9,7 +9,7 @@ public class CatalogService : CatalogBase private readonly CatalogContext _catalogContext; private readonly CatalogSettings _settings; private readonly ILogger _logger; - + public CatalogService(CatalogContext dbContext, IOptions settings, ILogger logger) { _settings = settings.Value; diff --git a/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs b/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs index c0c61fe9e..db154cb7f 100644 --- a/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs +++ b/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs @@ -316,7 +316,7 @@ public class CatalogContextSeed if (csvheaders.Count() < requiredHeaders.Count()) { - throw new Exception($"requiredHeader count '{ requiredHeaders.Count()}' is bigger then csv header count '{csvheaders.Count()}' "); + throw new Exception($"requiredHeader count '{requiredHeaders.Count()}' is bigger then csv header count '{csvheaders.Count()}' "); } if (optionalHeaders != null) diff --git a/src/Services/Catalog/Catalog.API/IntegrationEvents/EventHandling/OrderStatusChangedToAwaitingValidationIntegrationEventHandler.cs b/src/Services/Catalog/Catalog.API/IntegrationEvents/EventHandling/OrderStatusChangedToAwaitingValidationIntegrationEventHandler.cs index 35c523c39..01fb5dfa9 100644 --- a/src/Services/Catalog/Catalog.API/IntegrationEvents/EventHandling/OrderStatusChangedToAwaitingValidationIntegrationEventHandler.cs +++ b/src/Services/Catalog/Catalog.API/IntegrationEvents/EventHandling/OrderStatusChangedToAwaitingValidationIntegrationEventHandler.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.IntegrationEvents.EventHandling; - + public class OrderStatusChangedToAwaitingValidationIntegrationEventHandler : IIntegrationEventHandler { diff --git a/src/Services/Catalog/Catalog.API/Program.cs b/src/Services/Catalog/Catalog.API/Program.cs index aa594b1fc..9c919dbc1 100644 --- a/src/Services/Catalog/Catalog.API/Program.cs +++ b/src/Services/Catalog/Catalog.API/Program.cs @@ -1,11 +1,12 @@ -var appName = "Catalog.API"; -var builder = WebApplication.CreateBuilder(new WebApplicationOptions { +var builder = WebApplication.CreateBuilder(new WebApplicationOptions +{ Args = args, ApplicationName = typeof(Program).Assembly.FullName, ContentRootPath = Directory.GetCurrentDirectory(), WebRootPath = "Pics", }); -if (builder.Configuration.GetValue("UseVault", false)) { +if (builder.Configuration.GetValue("UseVault", false)) +{ TokenCredential credential = new ClientSecretCredential( builder.Configuration["Vault:TenantId"], builder.Configuration["Vault:ClientId"], @@ -13,12 +14,15 @@ if (builder.Configuration.GetValue("UseVault", false)) { //builder.AddAzureKeyVault(new Uri($"https://{builder.Configuration["Vault:Name"]}.vault.azure.net/"), credential); } builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); -builder.WebHost.UseKestrel(options => { +builder.WebHost.UseKestrel(options => +{ var ports = GetDefinedPorts(builder.Configuration); - options.Listen(IPAddress.Any, ports.httpPort, listenOptions => { + options.Listen(IPAddress.Any, ports.httpPort, listenOptions => + { listenOptions.Protocols = HttpProtocols.Http1AndHttp2; }); - options.Listen(IPAddress.Any, ports.grpcPort, listenOptions => { + options.Listen(IPAddress.Any, ports.grpcPort, listenOptions => + { listenOptions.Protocols = HttpProtocols.Http2; }); @@ -35,20 +39,24 @@ builder.Services.AddGrpc().Services var app = builder.Build(); -if (app.Environment.IsDevelopment()) { +if (app.Environment.IsDevelopment()) +{ app.UseDeveloperExceptionPage(); } -else { +else +{ app.UseExceptionHandler("/Home/Error"); } var pathBase = app.Configuration["PATH_BASE"]; -if (!string.IsNullOrEmpty(pathBase)) { +if (!string.IsNullOrEmpty(pathBase)) +{ app.UsePathBase(pathBase); } app.UseSwagger() - .UseSwaggerUI(c => { + .UseSwaggerUI(c => + { c.SwaggerEndpoint($"{(!string.IsNullOrEmpty(pathBase) ? pathBase : string.Empty)}/swagger/v1/swagger.json", "Catalog.API V1"); }); @@ -56,39 +64,45 @@ app.UseRouting(); app.UseCors("CorsPolicy"); app.MapDefaultControllerRoute(); app.MapControllers(); -app.UseFileServer(new FileServerOptions { +app.UseFileServer(new FileServerOptions +{ FileProvider = new PhysicalFileProvider(Path.Combine(app.Environment.ContentRootPath, "Pics")), RequestPath = "/pics" }); -app.UseStaticFiles(new StaticFileOptions { +app.UseStaticFiles(new StaticFileOptions +{ FileProvider = new PhysicalFileProvider(Path.Combine(app.Environment.ContentRootPath, "Pics")), RequestPath = "/pics" }); -app.MapGet("/_proto/", async ctx => { +app.MapGet("/_proto/", async ctx => +{ ctx.Response.ContentType = "text/plain"; using var fs = new FileStream(Path.Combine(app.Environment.ContentRootPath, "Proto", "catalog.proto"), FileMode.Open, FileAccess.Read); using var sr = new StreamReader(fs); - while (!sr.EndOfStream) { + while (!sr.EndOfStream) + { var line = await sr.ReadLineAsync(); - if (line != "/* >>" || line != "<< */") { + if (line != "/* >>" || line != "<< */") + { await ctx.Response.WriteAsync(line); } } }); app.MapGrpcService(); -app.MapHealthChecks("/hc", new HealthCheckOptions() { +app.MapHealthChecks("/hc", new HealthCheckOptions() +{ Predicate = _ => true, ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }); -app.MapHealthChecks("/liveness", new HealthCheckOptions { +app.MapHealthChecks("/liveness", new HealthCheckOptions +{ Predicate = r => r.Name.Contains("self") }); ConfigureEventBus(app); - - -try { +try +{ Log.Information("Configuring web host ({ApplicationContext})...", Program.AppName); using var scope = app.Services.CreateScope(); var context = scope.ServiceProvider.GetRequiredService(); @@ -100,50 +114,60 @@ try { await new CatalogContextSeed().SeedAsync(context, env, settings, logger); var integEventContext = scope.ServiceProvider.GetRequiredService(); await integEventContext.Database.MigrateAsync(); - app.Logger.LogInformation("Starting web host ({ApplicationName})...", appName); + app.Logger.LogInformation("Starting web host ({ApplicationName})...", AppName); await app.RunAsync(); return 0; } -catch (Exception ex) { +catch (Exception ex) +{ Log.Fatal(ex, "Program terminated unexpectedly ({ApplicationContext})!", Program.AppName); return 1; } -finally { +finally +{ Log.CloseAndFlush(); } -void ConfigureEventBus(IApplicationBuilder app) { +void ConfigureEventBus(IApplicationBuilder app) +{ var eventBus = app.ApplicationServices.GetRequiredService(); eventBus.Subscribe(); eventBus.Subscribe(); } -(int httpPort, int grpcPort) GetDefinedPorts(IConfiguration config) { +(int httpPort, int grpcPort) GetDefinedPorts(IConfiguration config) +{ var grpcPort = config.GetValue("GRPC_PORT", 81); var port = config.GetValue("PORT", 80); return (port, grpcPort); } -public partial class Program { +public partial class Program +{ public static string Namespace = typeof(Program).Assembly.GetName().Name; public static string AppName = Namespace.Substring(Namespace.LastIndexOf('.', Namespace.LastIndexOf('.') - 1) + 1); } -public static class CustomExtensionMethods { - public static IServiceCollection AddAppInsight(this IServiceCollection services, IConfiguration configuration) { +public static class CustomExtensionMethods +{ + public static IServiceCollection AddAppInsight(this IServiceCollection services, IConfiguration configuration) + { services.AddApplicationInsightsTelemetry(configuration); services.AddApplicationInsightsKubernetesEnricher(); return services; } - public static IServiceCollection AddCustomMVC(this IServiceCollection services, IConfiguration configuration) { - services.AddControllers(options => { + public static IServiceCollection AddCustomMVC(this IServiceCollection services, IConfiguration configuration) + { + services.AddControllers(options => + { options.Filters.Add(typeof(HttpGlobalExceptionFilter)); }) .AddJsonOptions(options => options.JsonSerializerOptions.WriteIndented = true); - services.AddCors(options => { + services.AddCors(options => + { options.AddPolicy("CorsPolicy", builder => builder .SetIsOriginAllowed((host) => true) @@ -155,7 +179,8 @@ public static class CustomExtensionMethods { return services; } - public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services, IConfiguration configuration) { + public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services, IConfiguration configuration) + { var accountName = configuration.GetValue("AzureStorageAccountName"); var accountKey = configuration.GetValue("AzureStorageAccountKey"); @@ -168,7 +193,8 @@ public static class CustomExtensionMethods { name: "CatalogDB-check", tags: new string[] { "catalogdb" }); - if (!string.IsNullOrEmpty(accountName) && !string.IsNullOrEmpty(accountKey)) { + if (!string.IsNullOrEmpty(accountName) && !string.IsNullOrEmpty(accountKey)) + { hcBuilder .AddAzureBlobStorage( $"DefaultEndpointsProtocol=https;AccountName={accountName};AccountKey={accountKey};EndpointSuffix=core.windows.net", @@ -176,7 +202,8 @@ public static class CustomExtensionMethods { tags: new string[] { "catalogstorage" }); } - if (configuration.GetValue("AzureServiceBusEnabled")) { + if (configuration.GetValue("AzureServiceBusEnabled")) + { hcBuilder .AddAzureServiceBusTopic( configuration["EventBusConnection"], @@ -184,7 +211,8 @@ public static class CustomExtensionMethods { name: "catalog-servicebus-check", tags: new string[] { "servicebus" }); } - else { + else + { hcBuilder .AddRabbitMQ( $"amqp://{configuration["EventBusConnection"]}", @@ -195,20 +223,25 @@ public static class CustomExtensionMethods { return services; } - public static IServiceCollection AddCustomDbContext(this IServiceCollection services, IConfiguration configuration) { + public static IServiceCollection AddCustomDbContext(this IServiceCollection services, IConfiguration configuration) + { services.AddEntityFrameworkSqlServer() - .AddDbContext(options => { + .AddDbContext(options => + { options.UseSqlServer(configuration["ConnectionString"], - sqlServerOptionsAction: sqlOptions => { + sqlServerOptionsAction: sqlOptions => + { sqlOptions.MigrationsAssembly(typeof(Program).GetTypeInfo().Assembly.GetName().Name); //Configuring Connection Resiliency: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-resiliency sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); }); }); - services.AddDbContext(options => { + services.AddDbContext(options => + { options.UseSqlServer(configuration["ConnectionString"], - sqlServerOptionsAction: sqlOptions => { + sqlServerOptionsAction: sqlOptions => + { sqlOptions.MigrationsAssembly(typeof(Program).GetTypeInfo().Assembly.GetName().Name); //Configuring Connection Resiliency: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-resiliency sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); @@ -218,17 +251,22 @@ public static class CustomExtensionMethods { return services; } - public static IServiceCollection AddCustomOptions(this IServiceCollection services, IConfiguration configuration) { + public static IServiceCollection AddCustomOptions(this IServiceCollection services, IConfiguration configuration) + { services.Configure(configuration); - services.Configure(options => { - options.InvalidModelStateResponseFactory = context => { - var problemDetails = new ValidationProblemDetails(context.ModelState) { + services.Configure(options => + { + options.InvalidModelStateResponseFactory = context => + { + var problemDetails = new ValidationProblemDetails(context.ModelState) + { Instance = context.HttpContext.Request.Path, Status = StatusCodes.Status400BadRequest, Detail = "Please refer to the errors property for additional details." }; - return new BadRequestObjectResult(problemDetails) { + return new BadRequestObjectResult(problemDetails) + { ContentTypes = { "application/problem+json", "application/problem+xml" } }; }; @@ -237,9 +275,12 @@ public static class CustomExtensionMethods { return services; } - public static IServiceCollection AddSwagger(this IServiceCollection services, IConfiguration configuration) { - services.AddSwaggerGen(options => { - options.SwaggerDoc("v1", new OpenApiInfo { + public static IServiceCollection AddSwagger(this IServiceCollection services, IConfiguration configuration) + { + services.AddSwaggerGen(options => + { + options.SwaggerDoc("v1", new OpenApiInfo + { Title = "eShopOnContainers - Catalog HTTP API", Version = "v1", Description = "The Catalog Microservice HTTP API. This is a Data-Driven/CRUD microservice sample" @@ -250,40 +291,49 @@ public static class CustomExtensionMethods { } - public static IServiceCollection AddIntegrationServices(this IServiceCollection services, IConfiguration configuration) { + public static IServiceCollection AddIntegrationServices(this IServiceCollection services, IConfiguration configuration) + { services.AddTransient>( sp => (DbConnection c) => new IntegrationEventLogService(c)); services.AddTransient(); - if (configuration.GetValue("AzureServiceBusEnabled")) { - services.AddSingleton(sp => { + if (configuration.GetValue("AzureServiceBusEnabled")) + { + services.AddSingleton(sp => + { var settings = sp.GetRequiredService>().Value; var serviceBusConnection = settings.EventBusConnection; return new DefaultServiceBusPersisterConnection(serviceBusConnection); }); } - else { - services.AddSingleton(sp => { + else + { + services.AddSingleton(sp => + { var settings = sp.GetRequiredService>().Value; var logger = sp.GetRequiredService>(); - var factory = new ConnectionFactory() { + var factory = new ConnectionFactory() + { HostName = configuration["EventBusConnection"], DispatchConsumersAsync = true }; - if (!string.IsNullOrEmpty(configuration["EventBusUserName"])) { + if (!string.IsNullOrEmpty(configuration["EventBusUserName"])) + { factory.UserName = configuration["EventBusUserName"]; } - if (!string.IsNullOrEmpty(configuration["EventBusPassword"])) { + if (!string.IsNullOrEmpty(configuration["EventBusPassword"])) + { factory.Password = configuration["EventBusPassword"]; } var retryCount = 5; - if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) { + if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) + { retryCount = int.Parse(configuration["EventBusRetryCount"]); } @@ -294,9 +344,12 @@ public static class CustomExtensionMethods { return services; } - public static IServiceCollection AddEventBus(this IServiceCollection services, IConfiguration configuration) { - if (configuration.GetValue("AzureServiceBusEnabled")) { - services.AddSingleton(sp => { + public static IServiceCollection AddEventBus(this IServiceCollection services, IConfiguration configuration) + { + if (configuration.GetValue("AzureServiceBusEnabled")) + { + services.AddSingleton(sp => + { var serviceBusPersisterConnection = sp.GetRequiredService(); var logger = sp.GetRequiredService>(); var eventBusSubcriptionsManager = sp.GetRequiredService(); @@ -307,15 +360,18 @@ public static class CustomExtensionMethods { }); } - else { - services.AddSingleton(sp => { + else + { + services.AddSingleton(sp => + { var subscriptionClientName = configuration["SubscriptionClientName"]; var rabbitMQPersistentConnection = sp.GetRequiredService(); var logger = sp.GetRequiredService>(); var eventBusSubcriptionsManager = sp.GetRequiredService(); var retryCount = 5; - if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) { + if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) + { retryCount = int.Parse(configuration["EventBusRetryCount"]); } @@ -329,4 +385,4 @@ public static class CustomExtensionMethods { return services; } -} \ No newline at end of file +} diff --git a/src/Services/Identity/Identity.API/IWebHostExtensions.cs b/src/Services/Identity/Identity.API/IWebHostExtensions.cs index 57c386559..734ae3fde 100644 --- a/src/Services/Identity/Identity.API/IWebHostExtensions.cs +++ b/src/Services/Identity/Identity.API/IWebHostExtensions.cs @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Hosting } } - return webHost; + return webHost; } private static void InvokeSeeder(Action seeder, TContext context, IServiceProvider services) diff --git a/src/Services/Identity/Identity.API/ProgramExtensions.cs b/src/Services/Identity/Identity.API/ProgramExtensions.cs index 729295570..ac869b6ae 100644 --- a/src/Services/Identity/Identity.API/ProgramExtensions.cs +++ b/src/Services/Identity/Identity.API/ProgramExtensions.cs @@ -9,7 +9,7 @@ public static class ProgramExtensions public static void AddCustomConfiguration(this WebApplicationBuilder builder) { builder.Configuration.AddConfiguration(GetConfiguration()).Build(); - + } public static void AddCustomSerilog(this WebApplicationBuilder builder) diff --git a/src/Services/Identity/Identity.API/Quickstart/Account/AccountController.cs b/src/Services/Identity/Identity.API/Quickstart/Account/AccountController.cs index 63fa604a5..e0aef7b95 100644 --- a/src/Services/Identity/Identity.API/Quickstart/Account/AccountController.cs +++ b/src/Services/Identity/Identity.API/Quickstart/Account/AccountController.cs @@ -127,7 +127,7 @@ namespace IdentityServerHost.Quickstart.UI } } - await _events.RaiseAsync(new UserLoginFailureEvent(model.Username, "invalid credentials", clientId:context?.Client.ClientId)); + await _events.RaiseAsync(new UserLoginFailureEvent(model.Username, "invalid credentials", clientId: context?.Client.ClientId)); ModelState.AddModelError(string.Empty, AccountOptions.InvalidCredentialsErrorMessage); } @@ -139,7 +139,7 @@ namespace IdentityServerHost.Quickstart.UI return View(vm); } - + /// /// Show logout page /// diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs index 2aa3867be..56ae38bba 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderGracePeriodConfirmed; - + public class OrderStatusChangedToAwaitingValidationDomainEventHandler : INotificationHandler { diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs index 7f0138d71..2f2cf8e38 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderPaid; - + public class OrderStatusChangedToPaidDomainEventHandler : INotificationHandler { diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/EventHandling/OrderPaymentSucceededIntegrationEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/EventHandling/OrderPaymentSucceededIntegrationEventHandler.cs index 4bd6304d0..af9817696 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/EventHandling/OrderPaymentSucceededIntegrationEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/EventHandling/OrderPaymentSucceededIntegrationEventHandler.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling; - + public class OrderPaymentSucceededIntegrationEventHandler : IIntegrationEventHandler { diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/GracePeriodConfirmedIntegrationEvent.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/GracePeriodConfirmedIntegrationEvent.cs index 3e653f8df..8dfa6d08f 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/GracePeriodConfirmedIntegrationEvent.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/GracePeriodConfirmedIntegrationEvent.cs @@ -1,4 +1,4 @@ -namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; +namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; public record GracePeriodConfirmedIntegrationEvent : IntegrationEvent { diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToAwaitingValidationIntegrationEvent.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToAwaitingValidationIntegrationEvent.cs index 1f7ef35e2..5a3e0342a 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToAwaitingValidationIntegrationEvent.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToAwaitingValidationIntegrationEvent.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; - + public record OrderStatusChangedToAwaitingValidationIntegrationEvent : IntegrationEvent { public int OrderId { get; } diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStockRejectedIntegrationEvent.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStockRejectedIntegrationEvent.cs index 25e1acf63..990825e4f 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStockRejectedIntegrationEvent.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/OrderStockRejectedIntegrationEvent.cs @@ -1,4 +1,4 @@ -namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; +namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; public record OrderStockRejectedIntegrationEvent : IntegrationEvent { diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/UserCheckoutAcceptedIntegrationEvent.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/UserCheckoutAcceptedIntegrationEvent.cs index 811be0ec4..97cc43c7b 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/UserCheckoutAcceptedIntegrationEvent.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/Events/UserCheckoutAcceptedIntegrationEvent.cs @@ -1,15 +1,15 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; public record UserCheckoutAcceptedIntegrationEvent : IntegrationEvent -{ +{ public string UserId { get; } - + public string UserName { get; } - + public string City { get; set; } - + public string Street { get; set; } - + public string State { get; set; } public string Country { get; set; } diff --git a/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs b/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs index 860c587c4..8f6f2ee92 100644 --- a/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs +++ b/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; - + public class OrderQueries : IOrderQueries { diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs b/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs index 3c0aca009..c392bb00d 100644 --- a/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs +++ b/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs @@ -144,7 +144,7 @@ public class OrderingContextSeed if (csvheaders.Count() != requiredHeaders.Count()) { - throw new Exception($"requiredHeader count '{ requiredHeaders.Count()}' is different then read header '{csvheaders.Count()}'"); + throw new Exception($"requiredHeader count '{requiredHeaders.Count()}' is different then read header '{csvheaders.Count()}'"); } foreach (var requiredHeader in requiredHeaders) diff --git a/src/Services/Ordering/Ordering.API/Program.cs b/src/Services/Ordering/Ordering.API/Program.cs index ba62a4dcc..a1a00bb31 100644 --- a/src/Services/Ordering/Ordering.API/Program.cs +++ b/src/Services/Ordering/Ordering.API/Program.cs @@ -47,7 +47,7 @@ builder.Services .AddCustomMvc() .AddHealthChecks(builder.Configuration) .AddCustomDbContext(builder.Configuration) - .AddCustomSwagger(builder.Configuration) + .AddCustomSwagger(builder.Configuration) .AddCustomAuthentication(builder.Configuration) .AddCustomAuthorization(builder.Configuration) .AddCustomIntegrations(builder.Configuration) diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs index 83fd4dc0d..53d3f0aea 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs @@ -132,7 +132,7 @@ namespace Ordering.BackgroundTasks.Extensions .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) - .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl,null) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl, null) .ReadFrom.Configuration(configuration) .CreateLogger(); diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Services/GracePeriodManagerService.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Services/GracePeriodManagerService.cs index ef281ff05..b494377fb 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Services/GracePeriodManagerService.cs +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Services/GracePeriodManagerService.cs @@ -36,10 +36,12 @@ namespace Ordering.BackgroundTasks.Services _logger.LogDebug("GracePeriodManagerService background task is doing background work."); CheckConfirmedGracePeriodOrders(); - try { + try + { await Task.Delay(_settings.CheckUpdateTime, stoppingToken); } - catch (TaskCanceledException exception) { + catch (TaskCanceledException exception) + { _logger.LogCritical(exception, "TaskCanceledException Error", exception.Message); } } diff --git a/src/Services/Ordering/Ordering.Domain/Events/OrderStatusChangedToPaidDomainEvent.cs b/src/Services/Ordering/Ordering.Domain/Events/OrderStatusChangedToPaidDomainEvent.cs index 0ef176564..715c677da 100644 --- a/src/Services/Ordering/Ordering.Domain/Events/OrderStatusChangedToPaidDomainEvent.cs +++ b/src/Services/Ordering/Ordering.Domain/Events/OrderStatusChangedToPaidDomainEvent.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.Events; - + /// /// Event used when the order is paid /// diff --git a/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs b/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs index 8d313149d..eb8fc9717 100644 --- a/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs +++ b/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs @@ -9,14 +9,14 @@ public abstract class Enumeration : IComparable protected Enumeration(int id, string name) => (Id, Name) = (id, name); public override string ToString() => Name; - + public static IEnumerable GetAll() where T : Enumeration => typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly) .Select(f => f.GetValue(null)) .Cast(); - + public override bool Equals(object obj) { if (obj is not Enumeration otherValue) diff --git a/src/Services/Payment/Payment.API/IntegrationEvents/EventHandling/OrderStatusChangedToStockConfirmedIntegrationEventHandler.cs b/src/Services/Payment/Payment.API/IntegrationEvents/EventHandling/OrderStatusChangedToStockConfirmedIntegrationEventHandler.cs index ce9aa4d73..8c8fac9d0 100644 --- a/src/Services/Payment/Payment.API/IntegrationEvents/EventHandling/OrderStatusChangedToStockConfirmedIntegrationEventHandler.cs +++ b/src/Services/Payment/Payment.API/IntegrationEvents/EventHandling/OrderStatusChangedToStockConfirmedIntegrationEventHandler.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Payment.API.IntegrationEvents.EventHandling; - + public class OrderStatusChangedToStockConfirmedIntegrationEventHandler : IIntegrationEventHandler { diff --git a/src/Services/Payment/Payment.API/IntegrationEvents/Events/OrderStatusChangedToStockConfirmedIntegrationEvent.cs b/src/Services/Payment/Payment.API/IntegrationEvents/Events/OrderStatusChangedToStockConfirmedIntegrationEvent.cs index adac9f2bd..7b7be67d7 100644 --- a/src/Services/Payment/Payment.API/IntegrationEvents/Events/OrderStatusChangedToStockConfirmedIntegrationEvent.cs +++ b/src/Services/Payment/Payment.API/IntegrationEvents/Events/OrderStatusChangedToStockConfirmedIntegrationEvent.cs @@ -1,5 +1,5 @@ namespace Microsoft.eShopOnContainers.Payment.API.IntegrationEvents.Events; - + public record OrderStatusChangedToStockConfirmedIntegrationEvent : IntegrationEvent { public int OrderId { get; } diff --git a/src/Services/Webhooks/Webhooks.API/Infrastructure/HttpGlobalExceptionFilter.cs b/src/Services/Webhooks/Webhooks.API/Infrastructure/HttpGlobalExceptionFilter.cs index 39eab9908..58e2e1656 100644 --- a/src/Services/Webhooks/Webhooks.API/Infrastructure/HttpGlobalExceptionFilter.cs +++ b/src/Services/Webhooks/Webhooks.API/Infrastructure/HttpGlobalExceptionFilter.cs @@ -26,7 +26,7 @@ public class HttpGlobalExceptionFilter : IExceptionFilter Detail = "Please refer to the errors property for additional details." }; - problemDetails.Errors.Add("DomainValidations", new [] { context.Exception.Message }); + problemDetails.Errors.Add("DomainValidations", new[] { context.Exception.Message }); context.Result = new BadRequestObjectResult(problemDetails); context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; diff --git a/src/Services/Webhooks/Webhooks.API/Startup.cs b/src/Services/Webhooks/Webhooks.API/Startup.cs index 05d760b7b..10a923972 100644 --- a/src/Services/Webhooks/Webhooks.API/Startup.cs +++ b/src/Services/Webhooks/Webhooks.API/Startup.cs @@ -33,7 +33,7 @@ public class Startup } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) - { + { var pathBase = Configuration["PATH_BASE"]; if (!string.IsNullOrEmpty(pathBase)) @@ -64,7 +64,7 @@ public class Startup app.UseSwagger() .UseSwaggerUI(c => { - c.SwaggerEndpoint($"{ (!string.IsNullOrEmpty(pathBase) ? pathBase : string.Empty) }/swagger/v1/swagger.json", "Webhooks.API V1"); + c.SwaggerEndpoint($"{(!string.IsNullOrEmpty(pathBase) ? pathBase : string.Empty)}/swagger/v1/swagger.json", "Webhooks.API V1"); c.OAuthClientId("webhooksswaggerui"); c.OAuthAppName("WebHooks Service Swagger UI"); }); @@ -137,7 +137,7 @@ internal static class CustomExtensionMethods public static IServiceCollection AddSwagger(this IServiceCollection services, IConfiguration configuration) { services.AddSwaggerGen(options => - { + { options.SwaggerDoc("v1", new OpenApiInfo { Title = "eShopOnContainers - Webhooks HTTP API", @@ -239,47 +239,47 @@ internal static class CustomExtensionMethods services.AddTransient>( sp => (DbConnection c) => new IntegrationEventLogService(c)); - if (configuration.GetValue("AzureServiceBusEnabled")) + if (configuration.GetValue("AzureServiceBusEnabled")) + { + services.AddSingleton(sp => { - services.AddSingleton(sp => - { - var subscriptionClientName = configuration["SubscriptionClientName"]; - return new DefaultServiceBusPersisterConnection(configuration["EventBusConnection"]); - }); - } - else + var subscriptionClientName = configuration["SubscriptionClientName"]; + return new DefaultServiceBusPersisterConnection(configuration["EventBusConnection"]); + }); + } + else + { + services.AddSingleton(sp => { - services.AddSingleton(sp => - { - var logger = sp.GetRequiredService>(); + var logger = sp.GetRequiredService>(); - var factory = new ConnectionFactory() - { - HostName = configuration["EventBusConnection"], - DispatchConsumersAsync = true - }; + var factory = new ConnectionFactory() + { + HostName = configuration["EventBusConnection"], + DispatchConsumersAsync = true + }; - if (!string.IsNullOrEmpty(configuration["EventBusUserName"])) - { - factory.UserName = configuration["EventBusUserName"]; - } + if (!string.IsNullOrEmpty(configuration["EventBusUserName"])) + { + factory.UserName = configuration["EventBusUserName"]; + } - if (!string.IsNullOrEmpty(configuration["EventBusPassword"])) - { - factory.Password = configuration["EventBusPassword"]; - } + if (!string.IsNullOrEmpty(configuration["EventBusPassword"])) + { + factory.Password = configuration["EventBusPassword"]; + } - var retryCount = 5; - if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) - { - retryCount = int.Parse(configuration["EventBusRetryCount"]); - } + var retryCount = 5; + if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"])) + { + retryCount = int.Parse(configuration["EventBusRetryCount"]); + } - return new DefaultRabbitMQPersistentConnection(factory, logger, retryCount); - }); - } + return new DefaultRabbitMQPersistentConnection(factory, logger, retryCount); + }); + } - return services; + return services; } public static IServiceCollection AddCustomAuthentication(this IServiceCollection services, IConfiguration configuration) diff --git a/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs index e97a95e9d..46291b81a 100644 --- a/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs +++ b/src/Tests/Services/Application.FunctionalTests/Services/Ordering/OrderingScenarios.cs @@ -73,7 +73,7 @@ public class OrderingScenarios : OrderingScenariosBase { PropertyNameCaseInsensitive = true }); - + order.City = city; if (IsOrderCreated(order, city)) diff --git a/src/Web/WebMVC/Extensions/SessionExtensions.cs b/src/Web/WebMVC/Extensions/SessionExtensions.cs index 8175c26c4..c7d87034d 100644 --- a/src/Web/WebMVC/Extensions/SessionExtensions.cs +++ b/src/Web/WebMVC/Extensions/SessionExtensions.cs @@ -1,16 +1,16 @@ public static class SessionExtensions { public static void SetObject(this ISession session, string key, object value) => - session.SetString(key,JsonSerializer.Serialize(value)); + session.SetString(key, JsonSerializer.Serialize(value)); public static T GetObject(this ISession session, string key) { var value = session.GetString(key); - return value == null ? default(T) :JsonSerializer.Deserialize(value, new JsonSerializerOptions - { - PropertyNameCaseInsensitive = true - }); + return value == null ? default(T) : JsonSerializer.Deserialize(value, new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }); } } diff --git a/src/Web/WebMVC/Program.cs b/src/Web/WebMVC/Program.cs index 658ab2d9a..ae56982a6 100644 --- a/src/Web/WebMVC/Program.cs +++ b/src/Web/WebMVC/Program.cs @@ -73,7 +73,7 @@ Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) } if (!string.IsNullOrWhiteSpace(logstashUrl)) { - cfg.WriteTo.Http(logstashUrl,null); + cfg.WriteTo.Http(logstashUrl, null); } return cfg.CreateLogger(); } diff --git a/src/Web/WebMVC/Services/BasketService.cs b/src/Web/WebMVC/Services/BasketService.cs index a53e45306..4833b3408 100644 --- a/src/Web/WebMVC/Services/BasketService.cs +++ b/src/Web/WebMVC/Services/BasketService.cs @@ -52,7 +52,7 @@ public class BasketService : IBasketService { var uri = API.Basket.CheckoutBasket(_basketByPassUrl); var basketContent = new StringContent(JsonSerializer.Serialize(basket), Encoding.UTF8, "application/json"); - + _logger.LogInformation("Uri chechout {uri}", uri); var response = await _apiClient.PostAsync(uri, basketContent); diff --git a/src/Web/WebMVC/Services/CatalogService.cs b/src/Web/WebMVC/Services/CatalogService.cs index 96ad9c3c0..9b205c6e4 100644 --- a/src/Web/WebMVC/Services/CatalogService.cs +++ b/src/Web/WebMVC/Services/CatalogService.cs @@ -40,10 +40,10 @@ public class CatalogService : ICatalogService var items = new List(); items.Add(new SelectListItem() { Value = null, Text = "All", Selected = true }); - + using var brands = JsonDocument.Parse(responseString); - foreach (JsonElement brand in brands.RootElement.EnumerateArray()) + foreach (JsonElement brand in brands.RootElement.EnumerateArray()) { items.Add(new SelectListItem() { @@ -63,7 +63,7 @@ public class CatalogService : ICatalogService var items = new List(); items.Add(new SelectListItem() { Value = null, Text = "All", Selected = true }); - + using var catalogTypes = JsonDocument.Parse(responseString); foreach (JsonElement catalogType in catalogTypes.RootElement.EnumerateArray()) diff --git a/src/Web/WebMVC/ViewModels/Order.cs b/src/Web/WebMVC/ViewModels/Order.cs index af358336a..fec4da0f0 100644 --- a/src/Web/WebMVC/ViewModels/Order.cs +++ b/src/Web/WebMVC/ViewModels/Order.cs @@ -1,7 +1,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.ViewModels; public class Order -{ +{ [JsonConverter(typeof(NumberToStringConverter))] public string OrderNumber { get; set; } @@ -45,7 +45,7 @@ public class Order public List ActionCodeSelectList => GetActionCodesByCurrentState(); - + public List OrderItems { get; set; } [Required] diff --git a/src/Web/WebSPA/Server/Controllers/HomeController.cs b/src/Web/WebSPA/Server/Controllers/HomeController.cs index 792995163..0c115028f 100644 --- a/src/Web/WebSPA/Server/Controllers/HomeController.cs +++ b/src/Web/WebSPA/Server/Controllers/HomeController.cs @@ -14,5 +14,5 @@ public class HomeController : Controller public IActionResult Configuration() { return Json(_settings.Value); - } + } } diff --git a/src/Web/WebhookClient/Models/WebHookReceived.cs b/src/Web/WebhookClient/Models/WebHookReceived.cs index 2687f7067..041fb5774 100644 --- a/src/Web/WebhookClient/Models/WebHookReceived.cs +++ b/src/Web/WebhookClient/Models/WebHookReceived.cs @@ -3,7 +3,7 @@ public class WebHookReceived { public DateTime When { get; set; } - + public string Data { get; set; } public string Token { get; set; }