summary refs log tree commit diff
path: root/MxApiExtensions/Program.cs
diff options
context:
space:
mode:
authorTheArcaneBrony <myrainbowdash949@gmail.com>2023-08-14 10:36:19 +0200
committerTheArcaneBrony <myrainbowdash949@gmail.com>2023-08-14 10:36:19 +0200
commit977220895d8127116d0000fa98088b235d4a8801 (patch)
tree09b9f295e9e0e82b8137edbd98afc3aebbab1a56 /MxApiExtensions/Program.cs
downloadMxApiExtensions-977220895d8127116d0000fa98088b235d4a8801.tar.xz
Initial commit
Diffstat (limited to 'MxApiExtensions/Program.cs')
-rw-r--r--MxApiExtensions/Program.cs48
1 files changed, 48 insertions, 0 deletions
diff --git a/MxApiExtensions/Program.cs b/MxApiExtensions/Program.cs
new file mode 100644
index 0000000..00afe09
--- /dev/null
+++ b/MxApiExtensions/Program.cs
@@ -0,0 +1,48 @@
+using MxApiExtensions;
+
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+
+builder.Services.AddControllers();
+// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
+builder.Services.AddEndpointsApiExplorer();
+builder.Services.AddSwaggerGen();
+
+builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+
+builder.Services.AddSingleton<CacheConfiguration>();
+builder.Services.AddScoped<Auth>();
+
+builder.Services.AddRequestTimeouts(x => {
+    x.DefaultPolicy = new() {
+        Timeout = TimeSpan.FromMinutes(10),
+        WriteTimeoutResponse = async context => {
+            context.Response.StatusCode = 504;
+            context.Response.ContentType = "application/json";
+            await context.Response.StartAsync();
+            await context.Response.WriteAsJsonAsync(new MatrixException() {
+                ErrorCode = "M_TIMEOUT",
+                Error = "Request timed out"
+            }.GetAsJson());
+            await context.Response.CompleteAsync();
+        }
+    };
+});
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (app.Environment.IsDevelopment())
+{
+    app.UseSwagger();
+    app.UseSwaggerUI();
+}
+
+// app.UseHttpsRedirection();
+
+app.UseAuthorization();
+
+app.MapControllers();
+
+app.Run();