/// <summary>
        /// Determines whether the specified <paramref name="url"/> is Uniform Resource Locator.
        /// </summary>
        /// <param name="url">The specified url.</param>
        /// <returns>
        ///   <c>true</c> if the specified <paramref name="url"/> is URL; otherwise, <c>false</c>.
        /// </returns>
        public bool IsUrl(string url)
        {
            if (Regex.IsMatch(url, UrlPattern))
            {
                Match match = Regex.Match(url, UrlPattern);

                Url = new UrlAddressElement();

                Url.Schema = match.Groups[1].Value;
                Url.Host   = match.Groups[2].Value;

                string segments   = match.Groups[3].Value;
                string parameters = match.Groups[5].Value;

                if (string.IsNullOrEmpty(segments) == false)
                {
                    var matchSegments = Regex.Matches(segments, SegmentPattern);

                    var list = matchSegments.Cast <Match>().ToList();

                    if (list.Count > 0)
                    {
                        Url.Uri = new List <string>();

                        foreach (var item in list)
                        {
                            Url.Uri.Add(item.Value);
                        }
                    }
                }

                if (string.IsNullOrEmpty(parameters) == false)
                {
                    var matchParameters = Regex.Matches(parameters, ParameterPattern);

                    var dict = matchParameters.Cast <Match>().ToDictionary(
                        m => m.Groups[1].Value,
                        m => m.Groups[2].Value);

                    if (dict.Values.Count > 0)
                    {
                        Url.Parameters = new List <ParameterElement>();

                        foreach (var item in dict)
                        {
                            Url.Parameters.Add(new ParameterElement()
                            {
                                Key   = item.Key,
                                Value = item.Value
                            });
                        }
                    }
                }

                return(true);
            }

            return(false);
        }
Example #2
0
 /// <summary>
 /// Adds the specified url element.
 /// </summary>
 /// <param name="element">The url.</param>
 public void Add(UrlAddressElement element)
 {
     root.UrlAddresses.Add(element);
 }