示例#1
0
    internal static string BasePathSanitizer(this IRouteScanner scanner, string basepath)
    {
        var memberInfo = scanner.GetType();
        var method     = memberInfo?.GetMethod("SanitizeBasePath", BindingFlags.Static | BindingFlags.NonPublic);

        return((string)method.Invoke(null, new object[] { basepath }));
    }
示例#2
0
    internal static bool CheckIsIncluded(this IRouteScanner scanner, Assembly assembly)
    {
        var memberInfo = scanner.GetType();
        var method     = memberInfo?.GetMethod("IsIncluded", BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(Assembly) }, null);

        return((bool)method.Invoke(scanner, new object[] { assembly }));
    }
示例#3
0
    internal static string PathInfoGenerator(this IRouteScanner scanner, string pathinfo, string basepath)
    {
        var memberInfo = scanner.GetType();
        var method     = memberInfo?.GetMethod("GeneratePathInfo", BindingFlags.Static | BindingFlags.NonPublic);

        return((string)method.Invoke(null, new object[] { pathinfo, basepath }));
    }
示例#4
0
    internal static bool CheckIsInScope(this IRouteScanner scanner, Type type)
    {
        var memberInfo = scanner.GetType();
        var method     = memberInfo?.GetMethod("IsInScope", BindingFlags.Instance | BindingFlags.NonPublic);

        return((bool)method.Invoke(scanner, new object[] { type }));
    }
示例#5
0
    internal static bool CheckIsExcluded(this IRouteScanner scanner, string nameSpace)
    {
        var memberInfo = scanner.GetType();
        var method     = memberInfo?.GetMethod("IsExcluded", BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(string) }, null);

        return((bool)method.Invoke(scanner, new object[] { nameSpace }));
    }
示例#6
0
    internal static List <Assembly> IncludedAssemblies(this IRouteScanner scanner)
    {
        var memberInfo = scanner.GetType();
        var field      = memberInfo?.GetField("_includedAssemblies", BindingFlags.Instance | BindingFlags.NonPublic);

        return((List <Assembly>)field?.GetValue(scanner));
    }
示例#7
0
    internal static string GetScope(this IRouteScanner scanner)
    {
        var memberInfo = scanner.GetType();
        var field      = memberInfo?.GetField("_scope", BindingFlags.Instance | BindingFlags.NonPublic);

        return((string)field?.GetValue(scanner));
    }
示例#8
0
 /// <summary>
 /// Creates a new Router object
 /// </summary>
 public Router()
 {
     RegisteredRoutes = new List <IRoute>();
     Logger           = NullLogger.GetInstance();
     Scanner          = new RouteScanner();
     Scope            = string.Empty;
 }
示例#9
0
    internal static List <string> ExcludedNamespaces(this IRouteScanner scanner)
    {
        var memberInfo = scanner.GetType();
        var field      = memberInfo?.GetField("_excludedNamespaces", BindingFlags.Instance | BindingFlags.NonPublic);

        return((List <string>)field?.GetValue(scanner));
    }
示例#10
0
 /// <summary>
 /// Returns a new Router object
 /// </summary>
 public Router()
 {
     _routingTable = new List <IRoute>();
     Logger        = NullLogger.GetInstance();
     Scanner       = new RouteScanner();
     Scope         = string.Empty;
 }
示例#11
0
 /// <summary>
 /// Creates a new Router object
 /// </summary>
 public Router()
 {
     RegisteredRoutes = new List <IRoute>();
     RouteCache       = new ConcurrentDictionary <string, IList <IRoute> >();
     Logger           = NullLogger.GetInstance();
     Scanner          = new RouteScanner();
     Scope            = string.Empty;
 }
示例#12
0
        public RestServer(IRouter router, IRouteScanner scanner, ILogger <IRestServer> logger)
        {
            if (!HttpListener.IsSupported)
            {
                throw new PlatformNotSupportedException("Windows Server 2003 (or higher) or Windows XP SP2 (or higher) is required to use instances of this class.");
            }

            Router       = router ?? new Router(DefaultLogger.GetInstance <IRouter>());
            RouteScanner = scanner ?? new RouteScanner(DefaultLogger.GetInstance <IRouteScanner>());
            Logger       = logger ?? DefaultLogger.GetInstance <IRestServer>();

            RouteScanner.Services = Router.Services;

            Listener       = new HttpListener();
            RequestHandler = new Thread(RequestListenerAsync);
        }
示例#13
0
 /// <summary>
 /// Scans the type T and returns a list of discovered routes
 /// </summary>
 /// <param name="scanner"></param>
 /// <param name="basePath"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static IList <IRoute> Scan <T>(this IRouteScanner scanner, string basePath = null)
 {
     return(scanner.Scan(typeof(T), basePath));
 }
示例#14
0
        /// <summary>
        /// Scans the assembly containing the specified type and returns a list of discovered routes
        /// </summary>
        /// <param name="scanner"></param>
        /// <param name="services"></param>
        /// <param name="basePath"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static IList <IRoute> ScanAssemblyContainingType <T>(this IRouteScanner scanner, IServiceCollection services = null, string basePath = null)
        {
            Assembly assembly = Assembly.GetAssembly(typeof(T));

            return(scanner.Scan(assembly, basePath));
        }