Files
mixtape/zero.Web/Routing/ZeroRoutesTransformer.cs
T
2020-11-07 14:32:46 +01:00

46 lines
1.0 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Routing;
using System.Threading.Tasks;
using zero.Core.Api;
using zero.Core.Routing;
namespace zero.Web.Routing
{
public class ZeroRoutesTransformer : DynamicRouteValueTransformer
{
Core.Routing.IRoutes Routes;
IApplicationContext Context;
public ZeroRoutesTransformer(Core.Routing.IRoutes routes, IApplicationContext context)
{
Routes = routes;
Context = context;
}
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
if (Context.IsBackofficeRequest(httpContext))
{
return null;
}
IResolvedRoute route = await Routes.ResolveUrl(httpContext);
if (route == null)
{
return null;
}
RouteProviderEndpoint endpoint = Routes.MapEndpoint(route);
values["zero.route"] = route;
values["controller"] = endpoint.Controller;
values["action"] = endpoint.Action;
return values;
}
}
}