public static IApplicationBuilder UseCacheHeaders(this IApplicationBuilder app, Action <CacheHeaderOptions>?configure = null)
    {
        var options = new CacheHeaderOptions();

        configure?.Invoke(options);

        return(app.UseMiddleware <CacheHeaderMiddleware>(options));
    }
    public void ConfigureValueForRoutes()
    {
        var options = new CacheHeaderOptions();
        var value   = new CacheControlHeaderValue();

        options.ConfigureValueForRoutes(value, new[] { "/a", "/b" });

        Assert.Equal(2, options.Routes.Count);
        Assert.Equal(options.Routes["/a"], value);
        Assert.Equal(options.Routes["/b"], value);
        Assert.Null(options.DefaultHeader);
    }
    public void ConfigureNoCacheForRoutes()
    {
        var options = new CacheHeaderOptions();

        options.ConfigureNoCacheForRoutes(new[] { "/a", "/b" });

        var noCache = new CacheControlHeaderValue {
            NoStore = true, NoCache = true
        };

        Assert.Equal(2, options.Routes.Count);
        Assert.Equal(noCache, options.Routes["/a"]);
        Assert.Equal(noCache, options.Routes["/b"]);
        Assert.Null(options.DefaultHeader);
    }
 public CacheHeaderMiddleware(RequestDelegate next, CacheHeaderOptions options)
 {
     this.next    = next;
     this.options = options;
 }