Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 35 additions & 1 deletion dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Net;
using System.Threading.Tasks;
using GeneXus.Configuration;
using GeneXus.Http;
using GeneXus.HttpHandlerFactory;
using GeneXus.Services;
using GeneXus.Utils;
using GxClasses.Helpers;
using GxClasses.Web.Middleware;
using log4net;
using Microsoft.AspNetCore;
Expand Down Expand Up @@ -103,7 +105,10 @@ public class Startup
const string REST_BASE_URL = "rest/";
const string DATA_PROTECTION_KEYS = "DataProtection-Keys";
const string REWRITE_FILE = "rewrite.config";

const string SWAGGER_DEFAULT_YAML = "default.yaml";
const string DEVELOPER_MENU = "developermenu.html";
const string SWAGGER_SUFFIX = "swagger";

public List<string> servicesBase = new List<string>();

private GXRouting gxRouting;
Expand Down Expand Up @@ -235,6 +240,7 @@ public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHos
app.UseCookiePolicy();
app.UseSession();
app.UseStaticFiles();
ConfigureSwaggerUI(app, baseVirtualPath);

if (Directory.Exists(Path.Combine(LocalPath, RESOURCES_FOLDER)))
{
Expand Down Expand Up @@ -341,6 +347,34 @@ public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHos
app.UseEnableRequestRewind();
}

private void ConfigureSwaggerUI(IApplicationBuilder app, string baseVirtualPath)
{
try
{
string baseVirtualPathWithSep = string.IsNullOrEmpty(baseVirtualPath) ? string.Empty: $"{baseVirtualPath.TrimStart('/')}/";
foreach (string yaml in Directory.GetFiles(LocalPath, "*.yaml")) {
FileInfo finfo = new FileInfo(yaml);

app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint($"../../{finfo.Name}", finfo.Name);
options.RoutePrefix =$"{baseVirtualPathWithSep}{finfo.Name}/{SWAGGER_SUFFIX}";
});
if (finfo.Name.Equals(SWAGGER_DEFAULT_YAML, StringComparison.OrdinalIgnoreCase) && File.Exists(Path.Combine(LocalPath, DEVELOPER_MENU)))
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint($"../../{SWAGGER_DEFAULT_YAML}", SWAGGER_DEFAULT_YAML);
options.RoutePrefix =$"{baseVirtualPathWithSep}{DEVELOPER_MENU}/{SWAGGER_SUFFIX}";
});

}
}
catch (Exception ex)
{
Console.Error.WriteLine("Errpr loading SwaggerUI " + ex.Message);
}
}

private void AddRewrite(IApplicationBuilder app, string rewriteFile, string baseURL)
{
string rules = File.ReadAllText(rewriteFile);
Expand Down