public static UrlScheme GetScheme(this List <UrlScheme> urlSchemes, string url, UrlSchemeType type)
    {
        if (urlSchemes is null ||
            urlSchemes.Count == 0 ||
            string.IsNullOrWhiteSpace(url))
        {
            return(null);
        }

        var uri    = new Uri(url);
        var scheme = string.IsNullOrWhiteSpace(uri.Scheme) ? string.Empty : uri.Scheme;
        var host   = string.IsNullOrWhiteSpace(uri.Host) ? string.Empty : uri.Host;

        var itemList = urlSchemes.Where((x => x.IsUrlOfSameScheme(url) &&
                                         (!string.IsNullOrWhiteSpace(x.Scheme) && x.Scheme.Equals(scheme, StringComparison.InvariantCultureIgnoreCase)) &&
                                         (!string.IsNullOrWhiteSpace(x.Host) && x.Scheme.Equals(host, StringComparison.InvariantCultureIgnoreCase)) &&
                                         (x.UrlSchemeType == type)));

        if (itemList is not null && itemList.Any())
        {
            return(itemList.FirstOrDefault());
        }


        itemList = urlSchemes.Where((x => x.IsUrlOfSameScheme(url) &&
                                     (!string.IsNullOrWhiteSpace(x.Scheme) && x.Scheme.Equals(scheme, StringComparison.InvariantCultureIgnoreCase)) &&
                                     (x.UrlSchemeType == type)));

        if (itemList is not null && itemList.Any())
        {
            return(itemList.FirstOrDefault());
        }

        return(null);
    }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UrlScheme"/> class.
        /// </summary>
        /// <param name="baseUrl">
        /// The base url.
        /// </param>
        /// <param name="type">
        /// The is url scheme type.
        /// </param>
        /// <param name="baseUrlStrict">
        /// Sets true or false, if base url must be relative to the base url.
        /// </param>
        public UrlScheme(string baseUrl, UrlSchemeType type, bool baseUrlStrict = true)
        {
            BaseUrl       = baseUrl;
            UrlSchemeType = type;
            BaseUrlStrict = baseUrlStrict;

            if (!string.IsNullOrEmpty(BaseUrl))
            {
                var uri = new Uri(BaseUrl);
                Scheme = uri.Scheme;
                Host   = uri.Host;
            }
        }
示例#3
0
 public void Add(string scheme, string host, UrlSchemeType urlSchemeType, IResourceHandler handler)
 {
     if (handler != null)
     {
         string key = Key(scheme, host);
         if (!string.IsNullOrWhiteSpace(key))
         {
             if (!_handlerMap.ContainsKey(key))
             {
                 var urlScheme = new UrlScheme(scheme, host, string.Empty, urlSchemeType);
                 _handlerMap[key] = new Tuple <UrlScheme, IResourceHandler>(urlScheme, handler);
             }
         }
     }
 }
示例#4
0
        public UrlScheme(string name, string scheme, string host, string baseUrl, UrlSchemeType type, bool baseUrlStrict = true, AssemblyOptions assemblyOptions = null)
        {
            Name            = name;
            Scheme          = scheme;
            Host            = host;
            BaseUrl         = baseUrl;
            UrlSchemeType   = type;
            BaseUrlStrict   = baseUrlStrict;
            AssemblyOptions = assemblyOptions;

            if (!string.IsNullOrEmpty(BaseUrl))
            {
                var uri = new Uri(BaseUrl);
                Scheme = uri.Scheme;
                Host   = uri.Host;
            }
        }
        public UrlScheme(string scheme, string host, UrlSchemeType type)
        {
            Name            = Guid.NewGuid().ToString();
            Scheme          = scheme;
            Host            = host;
            BaseUrl         = null;
            UrlSchemeType   = type;
            BaseUrlStrict   = false;
            AssemblyOptions = null;

            if (!string.IsNullOrEmpty(BaseUrl))
            {
                var uri = new Uri(BaseUrl);
                Scheme = uri.Scheme;
                Host   = uri.Host;
            }
        }
示例#6
0
        public UrlScheme(string scheme, string host, string baseUrl, UrlSchemeType type, bool baseUrlStrict = false, AssemblyOptions assemblyOptions = null)
        {
            Name            = Guid.NewGuid().ToString();
            Scheme          = scheme;
            Host            = host;
            Folder          = null;
            BaseUrl         = baseUrl;
            UrlSchemeType   = type;
            BaseUrlStrict   = baseUrlStrict;
            AssemblyOptions = assemblyOptions;

            if (!string.IsNullOrEmpty(BaseUrl))
            {
                var uri = new Uri(BaseUrl);
                Scheme = uri.Scheme;
                Host   = uri.Host;
            }
        }
        public static List <UrlScheme> GetSchemeList(this List <UrlScheme> urlSchemes, string url, UrlSchemeType type)
        {
            if (urlSchemes == null ||
                urlSchemes.Count == 0 ||
                string.IsNullOrWhiteSpace(url))
            {
                return(null);
            }

            return(urlSchemes.Where((x => x.IsUrlOfSameScheme(url) && (x.UrlSchemeType == type))).ToList());
        }
    public static IEnumerable <UrlScheme> GetSchemesByType(this List <UrlScheme> urlSchemes, UrlSchemeType type)
    {
        if (urlSchemes is null || !urlSchemes.Any())
        {
            return(new List <UrlScheme>());
        }

        return(urlSchemes.Where((x => (x.UrlSchemeType == type))).ToList());
    }
示例#9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UrlScheme"/> class.
 /// </summary>
 /// <param name="scheme">
 /// The scheme.
 /// </param>
 /// <param name="host">
 /// The host.
 /// </param>
 /// <param name="type">
 /// The is external.
 /// </param>
 public UrlScheme(string scheme, string host, UrlSchemeType type)
 {
     Scheme        = scheme;
     Host          = host;
     UrlSchemeType = type;
 }