-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
75 lines (63 loc) · 2.26 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using Microsoft.OpenApi.Models;
using DolarApi.Services;
using DolarApi.Helpers;
using DolarApi.Exceptions;
var builder = WebApplication.CreateBuilder(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "8081";
builder.WebHost.UseUrls($"http://*:{port}");
builder.Services.AddHttpClient();
builder.Services.AddSingleton<ICotizacionDolarService, CotizacionDolarService>();
builder.Services.AddSingleton<IRiesgoPaisService, RiesgoPaisService>();
builder.Services.AddSingleton<IReservasYCirculantesService, ReservasYCirculantesService>();
builder.Services.AddSingleton<IAgroService, AgroService>();
builder.Services.AddSingleton<IEnergiaService, EnergiaService>();
builder.Services.AddSingleton<IMetalesService, MetalesService>();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
options.SwaggerDoc(
"v1",
new OpenApiInfo
{
Version = "v1.0.0",
Title = "Dolar API",
Description =
"Minimal Web API hecha con ASP.NET Core para consultar valores económicos en Argentina (Dolar, Reservas, Riesgo País, etc). \n Los datos son obtenidos de [DolarSi](https://www.dolarsi.com/)",
Contact = new OpenApiContact
{
Name = "Angelo Padron",
Url = new Uri("mailto:padron891@gmail.com?subject=Dolar API")
},
License = new OpenApiLicense
{
Name = "GNU GPLv3",
Url = new Uri("https://www.gnu.org/licenses/gpl-3.0.en.html")
}
}
);
});
var app = builder.Build();
app.UseSwagger();
var cotizacionesUrl =
app.Configuration.GetValue<string>("CotizacionesUrl")
?? throw new BadConfigException("No se ha especificado la URL de las cotizaciones");
var endpointsConfigPath =
app.Configuration.GetValue<string>("EndpointsConfigPath")
?? throw new BadConfigException(
"La ruta de los endpoints no ha sido especificada o es inválida"
);
await EndpointConfigurator.ConfigureEndpointsAsync(
app,
endpointsConfigPath,
cotizacionesUrl
);
app.MapGet(
"/",
context =>
{
context.Response.Redirect("/swagger/index.html");
return Task.CompletedTask;
}
);
app.UseSwaggerUI();
app.Run();