46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using System;
|
|
using System.Linq;
|
|
|
|
namespace Mirea.Api.Endpoint.Common.Services;
|
|
|
|
public static class UrlHelper
|
|
{
|
|
public static string CurrentDomain(HttpContext context) =>
|
|
context.Request.Headers["X-Forwarded-Host"].FirstOrDefault() ?? context.Request.Host.Host;
|
|
|
|
private static string CreateSubPath(string? path)
|
|
{
|
|
if (string.IsNullOrEmpty(path))
|
|
return "/";
|
|
|
|
return "/" + path.Trim('/') + "/";
|
|
}
|
|
|
|
public static string GetSubPath => CreateSubPath(Environment.GetEnvironmentVariable("ACTUAL_SUB_PATH"));
|
|
|
|
public static string GetSubPathWithoutFirstApiName
|
|
{
|
|
get
|
|
{
|
|
var path = GetSubPath;
|
|
|
|
if (string.IsNullOrEmpty(path) || path == "/")
|
|
return CreateSubPath(null);
|
|
|
|
var parts = path.Split('/', StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
for (int i = 0; i < parts.Length; i++)
|
|
{
|
|
if (!parts[i].Equals("api", StringComparison.CurrentCultureIgnoreCase)) continue;
|
|
|
|
parts = parts.Take(i).Concat(parts.Skip(i + 1)).ToArray();
|
|
break;
|
|
}
|
|
|
|
return CreateSubPath(string.Join("/", parts));
|
|
}
|
|
}
|
|
|
|
public static string GetSubPathSwagger => CreateSubPath(Environment.GetEnvironmentVariable("SWAGGER_SUB_PATH"));
|
|
} |