Пример #1
0
        public void Init()
        {
            string parent = @"(\{[A-Za-z0-9]+\})";
            int    index  = 0;

            if (UrlIgnoreCase)
            {
                Url     = Url.ToLower();
                Rewrite = Rewrite.ToLower();
            }
            for (int i = 0; i < Url.Length; i++)
            {
                if (Url[i] == '/')
                {
                    index = i;
                }
                else if (Url[i] == '{')
                {
                    break;
                }
            }
            Path          = Url.Substring(0, index + 1);
            Valid         = Regex.IsMatch(Url, parent);
            ID            = Path.GetHashCode();
            ReExt         = HttpParse.GetBaseUrlExt(Rewrite);
            TemplateMatch = new RouteTemplateMatch(Url, Path.Length);
        }
Пример #2
0
        public void Init()
        {
            string parent = @"(\{[A-Za-z0-9]+\})";
            int    index  = 0;

            if (UrlIgnoreCase)
            {
                Url = Url.ToLower();
                if (!string.IsNullOrEmpty(Rewrite))
                {
                    Rewrite = Rewrite.ToLower();
                }
            }
            for (int i = 0; i < Url.Length; i++)
            {
                if (Url[i] == '/')
                {
                    index = i;
                }
                else if (Url[i] == '{')
                {
                    break;
                }
            }
            Path          = Url.Substring(0, index + 1);
            Valid         = Regex.IsMatch(Url, parent);
            ID            = GetPathID(Path);
            TemplateMatch = new RouteTemplateMatch(Url, Path.Length);
            if (!string.IsNullOrEmpty(Rewrite))
            {
                ReExt = HttpParse.GetBaseUrlExt(Rewrite);
                HasRewriteParamters = Rewrite.IndexOf("{") >= 0;
            }
        }
Пример #3
0
        public void Init()
        {
            string parent = @"(\{[A-Za-z0-9]+\})";
            int    index  = 0;

            if (UrlIgnoreCase)
            {
                Url = Url.ToLower();
                if (!string.IsNullOrEmpty(Rewrite))
                {
                    Rewrite = Rewrite.ToLower();
                }
            }
            for (int i = 0; i < Url.Length; i++)
            {
                if (Url[i] == '/')
                {
                    index = i;
                    PathLevel++;
                }
                else if (Url[i] == '?')
                {
                    HasQueryString = true;
                    break;
                }
            }

            if (!string.IsNullOrEmpty(Host))
            {
                this.Prefix = new UrlPrefix(Host);
            }
            // if (this.Prefix == null)
            Path = $"{Url.Substring(0, index + 1)}";
            ID   = $"{Host}{Path}";
            //else
            //    Path = $"{this.Prefix.Value}{Url.Substring(0, index + 1)}";
            Valid = Regex.IsMatch(Url, parent);
            //TemplateMatch = new RouteTemplateMatch(Url, Path.Length);
            TemplateMatch = new RouteTemplateMatch(Url, 0);
            if (!string.IsNullOrEmpty(Rewrite))
            {
                ReExt = HttpParse.GetBaseUrlExt(Rewrite);
                HasRewriteParamters = Rewrite.IndexOf("{") >= 0;
            }
        }
Пример #4
0
        private void LoadMethod(PipeStream stream)
        {
            string line;

            if (mState == LoadedState.None)
            {
                if (stream.TryReadLine(out line))
                {
                    Tuple <string, string, string> result = HttpParse.AnalyzeRequestLine(line);
                    Method      = result.Item1;
                    Url         = result.Item2;
                    BaseUrl     = HttpParse.GetBaseUrl(Url);
                    Ext         = HttpParse.GetBaseUrlExt(BaseUrl);
                    HttpVersion = result.Item3;
                    HttpParse.AnalyzeQueryString(Url, mQueryString);
                    mState = LoadedState.Method;
                }
            }
        }
Пример #5
0
 private void LoadMethod(PipeStream stream)
 {
     if (mState == LoadedState.None)
     {
         IndexOfResult index = stream.IndexOf(HeaderType.LINE_BYTES);
         if (index.End != null)
         {
             ReadOnlySpan <Char> line = HttpParse.ReadCharLine(index);
             stream.ReadFree(index.Length);
             Tuple <string, string, string> result = HttpParse.AnalyzeRequestLine(line);
             Method      = result.Item1;
             Url         = result.Item2;
             BaseUrl     = HttpParse.GetBaseUrlToLower(Url);
             Ext         = HttpParse.GetBaseUrlExt(BaseUrl);
             HttpVersion = result.Item3;
             HttpParse.AnalyzeQueryString(Url, mQueryString);
             mState = LoadedState.Method;
         }
     }
 }