public RealTestServer()

in CachingProxyTests/src/RealTestServer.cs [22:108]


    public RealTestServer()
    {
      myWebHost = new WebHostBuilder()
        .UseKestrel(kestrelServerOptions => { kestrelServerOptions.ListenLocalhost(Port); })
        .ConfigureServices(services => services
          .AddRouting())
        .Configure(app => app
          .UseRouter(router => router
            .MapGet("conditional-500.txt", (req, res, data) =>
            {
              if (Conditional500SendErrorOnce)
              {
                Conditional500SendErrorOnce = false;
                res.StatusCode = StatusCodes.Status500InternalServerError;
                return res.WriteAsync("Some Error");
              }

              return res.WriteAsync("ok");
            })
            .MapGet("500.jar", (req, res, data) =>
            {
              res.StatusCode = StatusCodes.Status500InternalServerError;
              return res.WriteAsync("Some Error");
            }).MapGet("wrong-content-length.jar", (req, res, data) =>
            {
              res.ContentLength = 1024;
              return res.WriteAsync("not too much");
            })
            .MapGet("a.jar", (req, res, data) => res.WriteAsync("a.jar"))
            .MapGet("gzipEncoding.txt", (req, res, data) =>
            {
              res.Headers.ContentEncoding = "gzip";
              var textContent = "my content string"u8;

              using var mso = new MemoryStream();

              using (var gs = new GZipStream(mso, CompressionMode.Compress))
                gs.Write(textContent);

              if (mso.TryGetBuffer(out var buffer))
                return res.Body.WriteAsync(buffer).AsTask();

              return Task.CompletedTask;
            })
            .MapVerb(HttpMethods.Head, "gzipEncoding.txt", (req, res, data) =>
            {
              res.Headers.ContentEncoding = "gzip";
              var textContent = "my content string"u8;

              using var mso = new MemoryStream();

              using (var gs = new GZipStream(mso, CompressionMode.Compress))
                gs.Write(textContent);

              if (mso.TryGetBuffer(out var buffer))
              {
                res.Headers.ContentLength = buffer.Count;
              }
              return Task.CompletedTask;
            })
            .MapGet("fakeBrEncoding.txt", (req, res, data) =>
            {
              res.Headers.ContentEncoding = "br";
              return res.WriteAsync("garbage");
            })
            .MapGet("fakeMultipleEncodings.txt", (req, res, data) =>
            {
              res.Headers.ContentEncoding = "deflate, gzip";
              return res.WriteAsync("garbage");
            })
            .MapGet("name with spaces.jar", (req, res, data) => res.WriteAsync("zzz.jar"))
            .MapGet("name+with+plus.jar", (req, res, data) => res.WriteAsync("zzz.jar"))
            .MapGet("@username/package/-/package-3.1.2.tgz", (req, res, data) => res.WriteAsync("package-3.1.2.tgz"))
            .MapGet("a.jar/b.jar", (req, res, data) => res.WriteAsync("b.jar"))
            .MapGet("a.html", (req, res, data) =>
            {
              res.ContentType = MediaTypeNames.Text.Html;
              return res.WriteAsync("some html");
            })
            .MapGet("wrong-content-type.jar", (req, res, data) =>
            {
              res.ContentType = MediaTypeNames.Text.Html;
              return res.WriteAsync("some html");
            })
          ))
        .Start();
    }