/// <summary>
        /// Generates the postman collection.
        /// </summary>
        /// <param name="redirects">The redirects.</param>
        /// <param name="redirectType"></param>
        /// <returns>System.String.</returns>
        private string GeneratePostmanCollection(Redirect[] redirects, RedirectType redirectType)
        {
            var jsonItemList      = new List <PostmanCollectionItemJsonData>();
            var index             = 0;
            var selectedSkipValue = CreateForEveryComboBox.SelectedIndex;

            foreach (var redirect in redirects)
            {
                if (selectedSkipValue == 10 || selectedSkipValue == index)
                {
                    var oldUrl       = redirect.OldUrl.Replace("\\", "/").Replace("\"", "");
                    var newUrl       = redirect.NewUrl.Replace("\\", "/").Replace("\"", "");
                    var domainInfo   = Helpers.GetDomainInfo(oldUrl);
                    var hostSegments = domainInfo.Domain.Split('.');
                    var urlSegments  = domainInfo.Path.Split('/');

                    newUrl = string.IsNullOrEmpty(newUrl) ? "/" : newUrl;
                    if (!newUrl.StartsWith("http://") && !newUrl.StartsWith("https://"))
                    {
                        var targetSiteUrl = $"https://{domainInfo.Domain}";

                        newUrl = targetSiteUrl + newUrl;
                    }

                    jsonItemList.Add(new PostmanCollectionItemJsonData
                    {
                        Name        = oldUrl,
                        Guid        = Guid.NewGuid().ToString("D"),
                        StatusCode  = redirectType.StatusCode,
                        FullToUrl   = newUrl,
                        FullFromUrl = oldUrl,
                        Protocol    = domainInfo.HttpMode,
                        Hosts       = hostSegments,
                        Paths       = urlSegments
                    });
                }

                if (index == 9)
                {
                    index = 0;
                }
                else
                {
                    index++;
                }
            }

            var data = new PostmanCollectionJsonData
            {
                Name  = CollectionNameTextBox.Text.Trim(),
                Guid  = Guid.NewGuid().ToString("D"),
                Items = jsonItemList
            };

            return(PostmanGenerator.GetCollectionJson(data));
        }
        /// <summary>
        /// Generates the rewrite rule.
        /// </summary>
        /// <param name="redirects">The redirects.</param>
        /// <param name="redirectType"></param>
        /// <returns>System.String.</returns>
        private string GenerateRewriteRule(Redirect[] redirects, RedirectType redirectType)
        {
            var sb = new StringBuilder();

            sb.AppendLine("<rules>");
            var index          = int.TryParse(RuleNameStartIndexTextBox.Text, out var parsedInt) ? parsedInt : 1;
            var ruleNamePrefix = string.IsNullOrWhiteSpace(RuleNamePrefixTextBox.Text)
                ? "Rule"
                : RuleNamePrefixTextBox.Text;


            foreach (var redirect in redirects)
            {
                var domainInfo     = Helpers.GetDomainInfo(redirect.OldUrl);
                var oldUrl         = redirect.OldUrl.Trim(',', '"').Replace("\\", "/").Replace("\"", "").Replace("&", "&amp;").Replace("–", "-").Replace(" ", "%20").Trim();
                var newUrl         = redirect.NewUrl.Trim(',', '"').Replace("\\", "/").Replace("\"", "").Replace("&", "&amp;").Replace("–", "-").Replace(" ", "%20").Trim();
                var domainInfoPath = domainInfo.Path.Trim(',', '"').Replace("&", "&amp;").Replace("–", "-").Replace(" ", "%20").Trim();

                if (string.IsNullOrEmpty(oldUrl) || string.IsNullOrEmpty(domainInfoPath))
                {
                    continue;
                }

                //newUrl = newUrl.TrimEnd('/');
                newUrl = string.IsNullOrEmpty(newUrl) ? "/" : newUrl;

                if (!newUrl.StartsWith("http://") && !newUrl.StartsWith("https://"))
                {
                    var targetSiteUrl = "https://{HTTP_HOST}";
                    newUrl = targetSiteUrl + newUrl;
                }

                var oldUrlParts = domainInfoPath.Split('?');
                sb.AppendLine("<rule name=\"" + ruleNamePrefix + index + "\" stopProcessing=\"true\">");
                sb.Append("<match url=\"^");

                var matchUrl = oldUrlParts[0];

                matchUrl = Regex.Escape(matchUrl).Replace("]", "\\]").Replace("%20", " ");

                if (!matchUrl.Contains('.') && !matchUrl.Contains('?'))
                {
                    matchUrl = matchUrl.TrimEnd('/');
                    matchUrl = $"{matchUrl}(/)?";
                }
                sb.AppendLine(matchUrl + "$\" />");

                if (oldUrlParts.Length > 1 || MatchDomainCheckBox.Checked)
                {
                    sb.AppendLine("<conditions>");

                    if (MatchDomainCheckBox.Checked)
                    {
                        var domainPattern = domainInfo.Domain.StartsWith("www.")
                            ? $"^{domainInfo.Domain}$"
                            : $"^(www.)?{domainInfo.Domain}$";


                        sb.AppendLine("<add input=\"{HTTP_HOST}\" pattern=\"" + domainPattern + "\" />");
                    }

                    if (oldUrlParts.Length > 1)
                    {
                        sb.AppendLine("<add input=\"{QUERY_STRING}\" pattern=\"^" + Regex.Escape(oldUrlParts[1]).Replace("]", "\\]") + "$\" />");
                    }
                    else
                    {
                        sb.AppendLine("<add input=\"{QUERY_STRING}\" pattern=\"^$\" />");
                    }

                    sb.AppendLine("</conditions>");
                }

                sb.AppendLine("<action type=\"Redirect\" url=\"" + newUrl + "\" appendQueryString=\"false\" redirectType=\"" + redirectType.StatusCode + "\"/>");

                sb.AppendLine("</rule>");
                index++;
            }

            sb.AppendLine("</rules>");
            return(sb.ToString());
        }