Skip to content

Commit 1fb81f1

Browse files
committed
Minor refactorings
1 parent 60a9fe5 commit 1fb81f1

File tree

10 files changed

+229
-230
lines changed

10 files changed

+229
-230
lines changed

Exchange.Rates.CoinCap.OpenApi/Program.cs

+31-27
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,43 @@
44
using Microsoft.Extensions.Logging;
55
using Serilog;
66
using System.IO;
7+
using System.Threading.Tasks;
78

89
namespace Exchange.Rates.CoinCap.OpenApi;
910

1011
public class Program
1112
{
12-
public static void Main(string[] args)
13+
public static async Task Main(string[] args)
1314
{
14-
CreateHostBuilder(args).Build().Run();
15+
await CreateHostBuilder(args).Build().RunAsync();
1516
}
1617

1718
public static IHostBuilder CreateHostBuilder(string[] args) =>
18-
Host.CreateDefaultBuilder(args)
19-
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
20-
.ReadFrom.Configuration(hostingContext.Configuration)
21-
.Enrich.FromLogContext())
22-
.UseContentRoot(Directory.GetCurrentDirectory())
23-
.UseDefaultServiceProvider(options => options.ValidateScopes = false)
24-
.ConfigureWebHostDefaults(webBuilder =>
25-
{
26-
webBuilder.UseStartup<Startup>();
27-
})
28-
.ConfigureAppConfiguration((builderContext, config) =>
29-
{
30-
var env = builderContext.HostingEnvironment;
31-
config.SetBasePath(env.ContentRootPath);
32-
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
33-
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
34-
config.AddEnvironmentVariables();
35-
})
36-
.ConfigureLogging((builderContext, logging) =>
37-
{
38-
logging.ClearProviders();
39-
logging.AddConsole();
40-
logging.AddSerilog();
41-
});
42-
}
19+
Host.CreateDefaultBuilder(args)
20+
.UseSerilog((context, services, configuration) => configuration
21+
.ReadFrom.Configuration(context.Configuration)
22+
.ReadFrom.Services(services)
23+
.Enrich.FromLogContext())
24+
.UseContentRoot(Directory.GetCurrentDirectory())
25+
.UseDefaultServiceProvider(options => options.ValidateScopes = false)
26+
.ConfigureWebHostDefaults(webBuilder =>
27+
{
28+
webBuilder.UseStartup<Startup>()
29+
.UseKestrel()
30+
.UseWebRoot("wwwroot");
31+
})
32+
.ConfigureAppConfiguration((builderContext, config) =>
33+
{
34+
var env = builderContext.HostingEnvironment;
35+
config.SetBasePath(env.ContentRootPath);
36+
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
37+
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
38+
config.AddEnvironmentVariables();
39+
})
40+
.ConfigureLogging(logging =>
41+
{
42+
logging.ClearProviders();
43+
logging.AddConsole();
44+
logging.AddSerilog();
45+
});
46+
}

Exchange.Rates.CoinCap.OpenApi/Startup.cs

+24-29
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,11 @@
1414

1515
namespace Exchange.Rates.CoinCap.OpenApi;
1616

17-
public class Startup
17+
public class Startup(IConfiguration configuration)
1818
{
1919
private const string SERVICE_NAME = "Exchange.Rates.CoinCap.OpenApi";
2020

21-
public Startup(IConfiguration configuration)
22-
{
23-
Configuration = configuration;
24-
}
25-
26-
public IConfiguration Configuration { get; set; }
21+
public IConfiguration Configuration { get; set; } = configuration;
2722

2823
public virtual void ConfigureServices(IServiceCollection services)
2924
{
@@ -60,29 +55,29 @@ public virtual void ConfigureServices(IServiceCollection services)
6055
// Add MassTransit support
6156
services.AddMassTransit(x =>
6257
{
63-
x.AddBus(_ => Bus.Factory.CreateUsingRabbitMq(config =>
58+
x.AddRequestClient<ISubmitCoinCapAssetId>();
59+
x.UsingRabbitMq((config, rabbitBusConfig) =>
6460
{
65-
config.Host(new Uri(massTransitOptions[nameof(MassTransitOptions.Host)]), h =>
61+
rabbitBusConfig.Host(new Uri(massTransitOptions[nameof(MassTransitOptions.Host)]), rabbitHostConfig =>
6662
{
67-
h.Username(massTransitOptions[nameof(MassTransitOptions.Username)]);
68-
h.Password(massTransitOptions[nameof(MassTransitOptions.Password)]);
63+
rabbitHostConfig.Username(massTransitOptions[nameof(MassTransitOptions.Username)]);
64+
rabbitHostConfig.Password(massTransitOptions[nameof(MassTransitOptions.Password)]);
6965
});
70-
}));
71-
x.AddRequestClient<ISubmitCoinCapAssetId>();
66+
});
7267
});
7368

7469
services.AddControllers()
75-
.ConfigureApiBehaviorOptions(options =>
76-
{
77-
options.SuppressConsumesConstraintForFormFileParameters = true;
78-
options.SuppressInferBindingSourcesForParameters = true;
79-
options.SuppressModelStateInvalidFilter = true; // To disable the automatic 400 behavior, set the SuppressModelStateInvalidFilter property to true
80-
options.SuppressMapClientErrors = true;
81-
options.ClientErrorMapping[404].Link = "https://httpstatuses.com/404";
82-
})
83-
.AddNewtonsoftJson(options =>
84-
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
85-
);
70+
.ConfigureApiBehaviorOptions(options =>
71+
{
72+
options.SuppressConsumesConstraintForFormFileParameters = true;
73+
options.SuppressInferBindingSourcesForParameters = true;
74+
options.SuppressModelStateInvalidFilter = true; // To disable the automatic 400 behavior, set the SuppressModelStateInvalidFilter property to true
75+
options.SuppressMapClientErrors = true;
76+
options.ClientErrorMapping[404].Link = "https://httpstatuses.com/404";
77+
})
78+
.AddNewtonsoftJson(options =>
79+
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
80+
);
8681

8782
services.AddCors();
8883
services.AddRouting(options => options.LowercaseUrls = true);
@@ -119,10 +114,10 @@ public virtual void Configure(IApplicationBuilder app, IWebHostEnvironment env)
119114
configure.MapDefaultControllerRoute();
120115
// Redirect root to Swagger UI
121116
configure.MapGet("", context =>
122-
{
123-
context.Response.Redirect("./swagger/index.html", permanent: false);
124-
return Task.FromResult(0);
125-
});
117+
{
118+
context.Response.Redirect("./swagger/index.html", permanent: false);
119+
return Task.CompletedTask;
120+
});
126121
});
127122
}
128-
}
123+
}
+32-27
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,47 @@
1+
using Exchange.Rates.CoinCap.Polling.Api;
12
using Microsoft.AspNetCore.Hosting;
23
using Microsoft.Extensions.Configuration;
34
using Microsoft.Extensions.Hosting;
45
using Microsoft.Extensions.Logging;
56
using Serilog;
67
using System.IO;
8+
using System.Threading.Tasks;
79

810
namespace Exchange.Rates.CoinCap.Polling.Api;
911

1012
public class Program
1113
{
12-
public static void Main(string[] args)
14+
public static async Task Main(string[] args)
1315
{
14-
CreateHostBuilder(args).Build().Run();
16+
await CreateHostBuilder(args).Build().RunAsync();
1517
}
1618

1719
public static IHostBuilder CreateHostBuilder(string[] args) =>
18-
Host.CreateDefaultBuilder(args)
19-
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
20-
.ReadFrom.Configuration(hostingContext.Configuration)
21-
.Enrich.FromLogContext())
22-
.UseContentRoot(Directory.GetCurrentDirectory())
23-
.UseDefaultServiceProvider(options => options.ValidateScopes = false)
24-
.ConfigureWebHostDefaults(webBuilder =>
25-
{
26-
webBuilder.UseStartup<Startup>();
27-
})
28-
.ConfigureAppConfiguration((builderContext, config) =>
29-
{
30-
var env = builderContext.HostingEnvironment;
31-
config.SetBasePath(env.ContentRootPath);
32-
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
33-
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
34-
config.AddEnvironmentVariables();
35-
})
36-
.ConfigureLogging((builderContext, logging) =>
37-
{
38-
logging.ClearProviders();
39-
logging.AddConsole();
40-
logging.AddSerilog();
41-
});
42-
}
20+
Host.CreateDefaultBuilder(args)
21+
.UseSerilog((context, services, configuration) => configuration
22+
.ReadFrom.Configuration(context.Configuration)
23+
.ReadFrom.Services(services)
24+
.Enrich.FromLogContext())
25+
.UseContentRoot(Directory.GetCurrentDirectory())
26+
.UseDefaultServiceProvider(options => options.ValidateScopes = false)
27+
.ConfigureWebHostDefaults(webBuilder =>
28+
{
29+
webBuilder.UseStartup<Startup>()
30+
.UseKestrel()
31+
.UseWebRoot("wwwroot");
32+
})
33+
.ConfigureAppConfiguration((builderContext, config) =>
34+
{
35+
var env = builderContext.HostingEnvironment;
36+
config.SetBasePath(env.ContentRootPath);
37+
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
38+
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
39+
config.AddEnvironmentVariables();
40+
})
41+
.ConfigureLogging(logging =>
42+
{
43+
logging.ClearProviders();
44+
logging.AddConsole();
45+
logging.AddSerilog();
46+
});
47+
}

Exchange.Rates.CoinCap.Polling.Api/Startup.cs

+15-19
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Exchange.Rates.CoinCap.Polling.Api.Options;
22
using Exchange.Rates.CoinCap.Polling.Api.Policies;
33
using Exchange.Rates.CoinCap.Polling.Api.Services;
4+
using Exchange.Rates.Contracts.Messages;
45
using MassTransit;
56
using Microsoft.AspNetCore.Builder;
67
using Microsoft.AspNetCore.Hosting;
@@ -15,16 +16,11 @@
1516

1617
namespace Exchange.Rates.CoinCap.Polling.Api;
1718

18-
public class Startup
19+
public class Startup(IConfiguration configuration)
1920
{
2021
private const string SERVICE_NAME = "Exchange.Rates.CoinCap.Polling.Api";
2122

22-
public Startup(IConfiguration configuration)
23-
{
24-
Configuration = configuration;
25-
}
26-
27-
public IConfiguration Configuration { get; }
23+
public IConfiguration Configuration { get; } = configuration;
2824

2925
public void ConfigureServices(IServiceCollection services)
3026
{
@@ -71,28 +67,28 @@ public void ConfigureServices(IServiceCollection services)
7167
{
7268
// Automatically discover Consumers
7369
x.AddConsumers(Assembly.GetExecutingAssembly());
74-
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
70+
x.UsingRabbitMq((busRegContext, rabbitBusConfig) =>
7571
{
76-
cfg.Host(new Uri(massTransitOptions[nameof(MassTransitOptions.Host)]), h =>
72+
rabbitBusConfig.Host(new Uri(massTransitOptions[nameof(MassTransitOptions.Host)]), rabbitHostConfig =>
7773
{
78-
h.Username(massTransitOptions[nameof(MassTransitOptions.Username)]);
79-
h.Password(massTransitOptions[nameof(MassTransitOptions.Password)]);
74+
rabbitHostConfig.Username(massTransitOptions[nameof(MassTransitOptions.Username)]);
75+
rabbitHostConfig.Password(massTransitOptions[nameof(MassTransitOptions.Password)]);
8076
});
81-
cfg.ReceiveEndpoint(massTransitOptions[nameof(MassTransitOptions.QueueName)], ecfg =>
77+
rabbitBusConfig.ReceiveEndpoint(massTransitOptions[nameof(MassTransitOptions.QueueName)], ecfg =>
8278
{
8379
ecfg.PrefetchCount = Convert.ToInt16(massTransitOptions[nameof(MassTransitOptions.ReceiveEndpointPrefetchCount)]);
84-
ecfg.ConfigureConsumers(provider);
80+
ecfg.ConfigureConsumers(busRegContext);
8581
ecfg.UseMessageRetry(r => r.Interval(5, 1000));
8682
ecfg.UseJsonSerializer();
8783
});
88-
}));
84+
});
8985
});
9086

9187
services.AddCors();
9288
services.AddRouting(options => options.LowercaseUrls = true);
9389
}
9490

95-
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
91+
public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
9692
{
9793
if (env.IsDevelopment())
9894
{
@@ -111,14 +107,14 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
111107
app.UseEndpoints(configure =>
112108
{
113109
configure.MapGet("/", async context =>
114-
{
115-
await context.Response.WriteAsync(SERVICE_NAME);
116-
});
110+
{
111+
await context.Response.WriteAsync(SERVICE_NAME);
112+
});
117113
});
118114
}
119115

120116
protected virtual void RegisterServices(IServiceCollection services)
121117
{
122118
services.AddScoped<ICoinCapAssetsApi, CoinCapAssetsApi>();
123119
}
124-
}
120+
}

Exchange.Rates.Ecb.OpenApi/Program.cs

+32-27
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,47 @@
1+
using Exchange.Rates.Ecb.OpenApi;
12
using Microsoft.AspNetCore.Hosting;
23
using Microsoft.Extensions.Configuration;
34
using Microsoft.Extensions.Hosting;
45
using Microsoft.Extensions.Logging;
56
using Serilog;
67
using System.IO;
8+
using System.Threading.Tasks;
79

810
namespace Exchange.Rates.Ecb.OpenApi;
911

1012
public class Program
1113
{
12-
public static void Main(string[] args)
14+
public static async Task Main(string[] args)
1315
{
14-
CreateHostBuilder(args).Build().Run();
16+
await CreateHostBuilder(args).Build().RunAsync();
1517
}
1618

1719
public static IHostBuilder CreateHostBuilder(string[] args) =>
18-
Host.CreateDefaultBuilder(args)
19-
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
20-
.ReadFrom.Configuration(hostingContext.Configuration)
21-
.Enrich.FromLogContext())
22-
.UseContentRoot(Directory.GetCurrentDirectory())
23-
.UseDefaultServiceProvider(options => options.ValidateScopes = false)
24-
.ConfigureWebHostDefaults(webBuilder =>
25-
{
26-
webBuilder.UseStartup<Startup>();
27-
})
28-
.ConfigureAppConfiguration((builderContext, config) =>
29-
{
30-
var env = builderContext.HostingEnvironment;
31-
config.SetBasePath(env.ContentRootPath);
32-
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
33-
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
34-
config.AddEnvironmentVariables();
35-
})
36-
.ConfigureLogging((builderContext, logging) =>
37-
{
38-
logging.ClearProviders();
39-
logging.AddConsole();
40-
logging.AddSerilog();
41-
});
42-
}
20+
Host.CreateDefaultBuilder(args)
21+
.UseSerilog((context, services, configuration) => configuration
22+
.ReadFrom.Configuration(context.Configuration)
23+
.ReadFrom.Services(services)
24+
.Enrich.FromLogContext())
25+
.UseContentRoot(Directory.GetCurrentDirectory())
26+
.UseDefaultServiceProvider(options => options.ValidateScopes = false)
27+
.ConfigureWebHostDefaults(webBuilder =>
28+
{
29+
webBuilder.UseStartup<Startup>()
30+
.UseKestrel()
31+
.UseWebRoot("wwwroot");
32+
})
33+
.ConfigureAppConfiguration((builderContext, config) =>
34+
{
35+
var env = builderContext.HostingEnvironment;
36+
config.SetBasePath(env.ContentRootPath);
37+
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
38+
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
39+
config.AddEnvironmentVariables();
40+
})
41+
.ConfigureLogging(logging =>
42+
{
43+
logging.ClearProviders();
44+
logging.AddConsole();
45+
logging.AddSerilog();
46+
});
47+
}

0 commit comments

Comments
 (0)