static IEnumerable <string> ExtractParameters(SwaggerUrl path)
        {
            var regex   = new Regex("{(.*?)}");
            var matches = regex.Matches(path.Url);

            foreach (Match match in matches)
            {
                yield return(match.Groups[1].Value);
            }
        }
        static string ReplaceUrlParts(SwaggerUrl path, TestRun testRun)
        {
            var parameters        = ExtractParameters(path).ToArray();
            var unknownParameters = parameters.Where(x => !testRun.UrlParameterTestValues.ContainsKey(x)).ToArray();

            if (unknownParameters.Any())
            {
                LogWarning($"Skipping {path.Url} because {string.Join(", ", unknownParameters.Select(x => x))} {"parameter".Pluralize(unknownParameters.Length)} not defined.");
                return(null);
            }

            return(parameters.Aggregate(path.Url, (s, param) => s.Replace($"{{{param}}}", testRun.UrlParameterTestValues[param])));
        }
 static bool IsMatch(SwaggerUrl path, string endpointPattern, HttpMethod method) =>
 path.Method == method && Regex.IsMatch(path.Url, endpointPattern.WildCardToRegular(), RegexOptions.IgnoreCase);