コード例 #1
0
    /// <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);
        }
    }
コード例 #2
0
    /// <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);
    }
コード例 #3
0
    /// <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);
    }
コード例 #4
0
 /// <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;
 }
コード例 #5
0
 /// <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;
 }
コード例 #6
0
 public DefaultOwinSchemeHandlerFactory(IOwinPipeline owinPipeline, IChromelyErrorHandler errorHandler) : base(owinPipeline, errorHandler)
 {
 }