package io.dropwizard.jersey.caching;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

import java.util.concurrent.TimeUnit;

@Path("/caching/")
@Produces(MediaType.TEXT_PLAIN)
public class CachingResource {
    @GET
    @Path("/immutable")
    @CacheControl(immutable = true)
    public String showImmutable() {
        return "immutable";
    }

    @GET
    @Path("/private")
    @CacheControl(isPrivate = true)
    public String showPrivate() {
        return "private";
    }

    @GET
    @Path("/max-age")
    @CacheControl(maxAge = 13, maxAgeUnit = TimeUnit.DAYS)
    public String showMaxAge() {
        return "max-age";
    }

    @GET
    @Path("/no-cache")
    @CacheControl(noCache = true)
    public String showNoCache() {
        return "no-cache";
    }

    @GET
    @Path("/no-store")
    @CacheControl(noStore = true)
    public String showNoStore() {
        return "no-store";
    }

    @GET
    @Path("/no-transform")
    @CacheControl(noTransform = false)
    public String showNoTransform() {
        return "no-transform";
    }

    @GET
    @Path("/must-revalidate")
    @CacheControl(mustRevalidate = true)
    public String showMustRevalidate() {
        return "must-revalidate";
    }

    @GET
    @Path("/proxy-revalidate")
    @CacheControl(proxyRevalidate = true)
    public String showProxyRevalidate() {
        return "proxy-revalidate";
    }

    @GET
    @Path("/shared-max-age")
    @CacheControl(sharedMaxAge = 13, sharedMaxAgeUnit = TimeUnit.HOURS)
    public String showSharedMaxAge() {
        return "shared-max-age";
    }
}
