public InterceptionBenchmarks()
        {
            _options = new HttpClientInterceptorOptions().ThrowsOnMissingRegistration();

            var builder = new HttpRequestInterceptionBuilder();

            builder
            .Requests()
            .ForHttp()
            .ForHost("www.google.co.uk")
            .ForPath("search")
            .ForQuery("q=Just+Eat")
            .Responds()
            .WithMediaType("text/html")
            .WithContent(@"<!DOCTYPE html><html dir=""ltr"" lang=""en""><head><title>Just Eat</title></head></html>")
            .RegisterWith(_options);

            builder
            .Requests()
            .ForHttps()
            .ForHost("files.domain.com")
            .ForPath("setup.exe")
            .ForQuery(string.Empty)
            .Responds()
            .WithMediaType("application/octet-stream")
            .WithContent(() => new byte[] { 0, 1, 2, 3, 4 })
            .RegisterWith(_options);

            builder
            .Requests()
            .ForHttps()
            .ForHost("api.github.com")
            .ForPath("orgs/justeat")
            .ForQuery(string.Empty)
            .Responds()
            .WithMediaType("application/json")
            .WithJsonContent(new { id = 1516790, login = "******", url = "https://api.github.com/orgs/justeat" })
            .RegisterWith(_options);

            builder
            .Requests()
            .ForQuery("page=1")
            .Responds()
            .WithContentStream(() => File.OpenRead("organization.json"))
            .RegisterWith(_options);

            var refitSettings = new RefitSettings()
            {
                ContentSerializer = new SystemTextJsonContentSerializer(),
            };

#pragma warning disable CA2000
            _client = _options.CreateHttpClient();
            _serviceNewtonsoftJson = RestService.For <IGitHub>(_options.CreateHttpClient("https://api.github.com"));
            _serviceSystemTextJson = RestService.For <IGitHub>(_options.CreateHttpClient("https://api.github.com"), refitSettings);
#pragma warning restore CA2000
        }
        public static async Task Intercept_Http_Get_For_Json_Object_Using_System_Text_Json()
        {
            // Arrange
            var options = new HttpClientInterceptorOptions();
            var builder = new HttpRequestInterceptionBuilder();

            builder.Requests().ForGet().ForHttps().ForHost("public.je-apis.com").ForPath("terms")
            .Responds().WithJsonContent(new { Id = 1, Link = "https://www.just-eat.co.uk/privacy-policy" })
            .RegisterWith(options);

            using var client = options.CreateHttpClient();

            // Act
            using var utf8Json = await client.GetStreamAsync("https://public.je-apis.com/terms");

            // Assert
            using var content = await JsonDocument.ParseAsync(utf8Json);

            content.RootElement.GetProperty("Id").GetInt32().ShouldBe(1);
            content.RootElement.GetProperty("Link").GetString().ShouldBe("https://www.just-eat.co.uk/privacy-policy");
        }
        public static async Task Intercept_Http_Get_For_Json_Object()
        {
            // Arrange
            var options = new HttpClientInterceptorOptions();
            var builder = new HttpRequestInterceptionBuilder();

            builder.Requests().ForGet().ForHttps().ForHost("public.je-apis.com").ForPath("terms")
            .Responds().WithJsonContent(new { Id = 1, Link = "https://www.just-eat.co.uk/privacy-policy" })
            .RegisterWith(options);

            using var client = options.CreateHttpClient();

            // Act
            string json = await client.GetStringAsync("https://public.je-apis.com/terms");

            // Assert
            var content = JObject.Parse(json);

            content.Value <int>("Id").ShouldBe(1);
            content.Value <string>("Link").ShouldBe("https://www.just-eat.co.uk/privacy-policy");
        }