diff --git a/zero.Core/Routing/AbtractRouteProvider.cs b/zero.Core/Routing/AbtractRouteProvider.cs
index ffcdd038..28c9bd2f 100644
--- a/zero.Core/Routing/AbtractRouteProvider.cs
+++ b/zero.Core/Routing/AbtractRouteProvider.cs
@@ -111,9 +111,9 @@ namespace zero.Core.Routing
///
- public virtual Task ResolveRoute(IAsyncDocumentSession session, Route route)
+ public virtual Task ResolveRoute(IAsyncDocumentSession session, RouteResponse response)
{
- DefaultResolvedRoute resolved = new DefaultResolvedRoute() { Route = route };
+ DefaultResolvedRoute resolved = new DefaultResolvedRoute() { Route = response.Route };
return Task.FromResult((IResolvedRoute)resolved);
}
diff --git a/zero.Core/Routing/IRouteProvider.cs b/zero.Core/Routing/IRouteProvider.cs
index bdf8cf4d..c87d84d5 100644
--- a/zero.Core/Routing/IRouteProvider.cs
+++ b/zero.Core/Routing/IRouteProvider.cs
@@ -40,7 +40,7 @@ namespace zero.Core.Routing
/// Resolve a route and load optional dependencies into it.
/// This is the data which is passed to the specified controller action.
///
- Task ResolveRoute(IAsyncDocumentSession session, Route route);
+ Task ResolveRoute(IAsyncDocumentSession session, RouteResponse response);
///
/// Find URL for an entity
diff --git a/zero.Core/Routing/Page/PageRouteProvider.cs b/zero.Core/Routing/Page/PageRouteProvider.cs
index 93517dab..10aa2ead 100644
--- a/zero.Core/Routing/Page/PageRouteProvider.cs
+++ b/zero.Core/Routing/Page/PageRouteProvider.cs
@@ -33,12 +33,12 @@ namespace zero.Core.Routing
///
- public override async Task ResolveRoute(IAsyncDocumentSession session, Route route)
+ public override async Task ResolveRoute(IAsyncDocumentSession session, RouteResponse response)
{
- PageRoute resolved = new PageRoute(route);
+ PageRoute resolved = new PageRoute(response.Route);
List ids = new List();
- RouteReference reference = route.References.SingleOrDefault(x => x.Collection == REF_KEY);
+ RouteReference reference = response.Route.References.SingleOrDefault(x => x.Collection == REF_KEY);
if (reference == null)
{
@@ -46,7 +46,7 @@ namespace zero.Core.Routing
}
ids.Add(reference.Id);
- ids.AddRange(route.Dependencies);
+ ids.AddRange(response.Route.Dependencies);
Dictionary pages = await session.LoadAsync(ids);
diff --git a/zero.Core/Routing/RouteResponse.cs b/zero.Core/Routing/RouteResponse.cs
new file mode 100644
index 00000000..9c2f2ad8
--- /dev/null
+++ b/zero.Core/Routing/RouteResponse.cs
@@ -0,0 +1,16 @@
+using Microsoft.AspNetCore.Http;
+using zero.Core.Entities;
+
+namespace zero.Core.Routing
+{
+ public class RouteResponse
+ {
+ public Route Route { get; set; }
+
+ public HttpContext HttpContext { get; set; }
+
+ public Application App { get; set; }
+
+ public string Path { get; set; }
+ }
+}
diff --git a/zero.Core/Routing/Routes.cs b/zero.Core/Routing/Routes.cs
index 64025288..c00740d0 100644
--- a/zero.Core/Routing/Routes.cs
+++ b/zero.Core/Routing/Routes.cs
@@ -128,7 +128,7 @@ namespace zero.Core.Routing
///
- public async Task ResolveUrl(Application application, string path)
+ public async Task ResolveUrl(HttpContext context, Application application, string path)
{
path = path.Length > 1 ? path.TrimEnd(PATH_SEPERATOR) : path;
@@ -186,7 +186,13 @@ namespace zero.Core.Routing
return null;
}
- return await ResolveRouteInternal(session, route);
+ return await ResolveRouteInternal(session, new RouteResponse()
+ {
+ Route = route,
+ App = application,
+ HttpContext = context,
+ Path = path
+ });
}
@@ -206,16 +212,16 @@ namespace zero.Core.Routing
return null;
}
- return await ResolveUrl(app, path);
+ return await ResolveUrl(context, app, path);
}
- ///
- public async Task ResolveRoute(Route route)
- {
- using IAsyncDocumentSession session = Store.OpenAsyncSession();
- return await ResolveRouteInternal(session, route);
- }
+ /////
+ //public async Task ResolveRoute(Route route)
+ //{
+ // using IAsyncDocumentSession session = Store.OpenAsyncSession();
+ // return await ResolveRouteInternal(session, null); // TODO
+ //}
///
@@ -283,10 +289,10 @@ namespace zero.Core.Routing
///
/// Call the provider which can resolve the route
///
- async Task ResolveRouteInternal(IAsyncDocumentSession session, Route route)
+ async Task ResolveRouteInternal(IAsyncDocumentSession session, RouteResponse response)
{
- IRouteProvider routeProvider = FindProvider(route.ProviderAlias);
- return await routeProvider?.ResolveRoute(session, route);
+ IRouteProvider routeProvider = FindProvider(response.Route.ProviderAlias);
+ return await routeProvider?.ResolveRoute(session, response);
}
@@ -342,7 +348,7 @@ namespace zero.Core.Routing
///
/// Resolve an URL from the specified app and the path
///
- Task ResolveUrl(Application application, string path);
+ Task ResolveUrl(HttpContext context, Application application, string path);
///
/// Resolve an URL from an http context
@@ -352,7 +358,7 @@ namespace zero.Core.Routing
///
/// Resolve a route object by passing it to the specified provider
///
- Task ResolveRoute(Route route);
+ //Task ResolveRoute(Route route);
///
/// Returns the endpoint which maps 404 requests