/// <summary> /// Parse routes and add to the pipeline - instance of <see cref="IOwinPipeline"/>. /// </summary> /// <param name="owinPipeline">Instance of <see cref="IOwinPipeline"/>.</param> /// <param name="provider">The <see cref="IServiceProvider"/> for application services.</param> public static void ParseRoutes(this IOwinPipeline owinPipeline, IServiceProvider provider) { try { owinPipeline.Routes ??= new List <OwinRoute>(); var routes = new List <OwinRoute>(); var actionDescriptorCollectionProvider = provider.GetRequiredService <IActionDescriptorCollectionProvider>(); if (actionDescriptorCollectionProvider is not null) { var controllerActions = actionDescriptorCollectionProvider.ActionDescriptors.Items.OfType <ControllerActionDescriptor>().ToList(); if (!controllerActions.IsNullOrEmpty()) { foreach (var action in controllerActions) { var template = action.AttributeRouteInfo?.Template; if (template is not null) { template = template.TrimStart('/'); routes.Add(new OwinRoute(action.DisplayName, $"/{template}")); } routes.Add(new OwinRoute(action.DisplayName, $"/{action.ControllerName}/{action.ActionName}")); } owinPipeline.Routes.AddRange(routes); } var pagesActions = actionDescriptorCollectionProvider.ActionDescriptors.Items.OfType <PageActionDescriptor>().ToList(); if (!pagesActions.IsNullOrEmpty()) { foreach (var action in pagesActions) { routes.Add(new OwinRoute(action.DisplayName, action.ViewEnginePath, action.RelativePath)); } owinPipeline.Routes.AddRange(routes); } } } catch (Exception exception) { Logger.Instance.Log.LogError(exception); } }
/// <summary> /// Checks if the specified url is an OWIN action route. /// </summary> /// <param name="owinPipeline"></param> /// <param name="url"></param> /// <returns>true if an OWIN action route, otherwise false.</returns> public static bool IsUrlActionRoute(this IOwinPipeline owinPipeline, string url) { try { owinPipeline.Routes ??= new List <OwinRoute>(); var uri = new Uri(url); return(owinPipeline.Routes.Any(x => x.RoutePath.Equals(uri.AbsolutePath, StringComparison.InvariantCultureIgnoreCase) || x.RoutePath.Equals(uri.AbsolutePath + "/Index", StringComparison.InvariantCultureIgnoreCase))); } catch (Exception exception) { Logger.Instance.Log.LogError(exception); } return(false); }
/// <summary> /// Checks if the specified url is an OWIN error handling route. /// </summary> /// <param name="owinPipeline"></param> /// <param name="url"></param> /// <returns>true if an OWIN error handling route, otherwise false.</returns> public static bool IsUrlErrorHandlingPath(this IOwinPipeline owinPipeline, string url) { try { var uri = new Uri(url); #pragma warning disable CS8602 // Dereference of a possibly null reference. return(owinPipeline.ErrorHandlingPath.Equals(uri.AbsolutePath, StringComparison.InvariantCultureIgnoreCase) || #pragma warning restore CS8602 // Dereference of a possibly null reference. owinPipeline.ErrorHandlingPath.Equals(uri.AbsolutePath + "/Index", StringComparison.InvariantCultureIgnoreCase)); } catch (Exception exception) { Logger.Instance.Log.LogError(exception); } return(false); }
/// <summary> /// Initializes a new instance of <see cref="OwinSchemeHandlerFactory"/>. /// </summary> /// <param name="owinPipeline">Instance of <see cref="IOwinPipeline"/>.</param> /// <param name="errorHandler">Instance of <see cref="IChromelyErrorHandler"/>.</param> public OwinSchemeHandlerFactory(IOwinPipeline owinPipeline, IChromelyErrorHandler errorHandler) { _owinPipeline = owinPipeline; _errorHandler = errorHandler; }
/// <summary> /// Initializes a new instance of <see cref="OwinErrorHandler"/>. /// </summary> /// <param name="config">Configuration <see cref="IChromelyConfiguration"/> instance.</param> /// <param name="owinPipeline">The <see cref="IOwinPipeline"/> instance.</param> public ChromelyOwinErrorHandler(IChromelyConfiguration config, IOwinPipeline owinPipeline) { _config = config; _owinPipeline = owinPipeline; }
public DefaultOwinSchemeHandlerFactory(IOwinPipeline owinPipeline, IChromelyErrorHandler errorHandler) : base(owinPipeline, errorHandler) { }