public void addEtag(RouteContext routeContext, long lastModified) {
if (pippoSettings.isProd()) {
String maxAge = pippoSettings.getString(PippoConstants.SETTING_HTTP_CACHE_CONTROL, "3600");
if (maxAge.equals("0")) {
routeContext.setHeader(HttpConstants.Header.CACHE_CONTROL, "no-cache");
} else {
routeContext.setHeader(HttpConstants.Header.CACHE_CONTROL, "max-age=" + maxAge);
}
} else {
routeContext.setHeader(HttpConstants.Header.CACHE_CONTROL, "no-cache");
}
String etag = null;
boolean useEtag = pippoSettings.getBoolean(PippoConstants.SETTING_HTTP_USE_ETAG, true);
if (useEtag) {
etag = "\"" + lastModified + "\"";
routeContext.setHeader(HttpConstants.Header.ETAG, etag);
}
if (isModified(etag, lastModified, routeContext)) {
routeContext.setHeader(HttpConstants.Header.LAST_MODIFIED, DateUtils.formatForHttpHeader(lastModified));
} else if (routeContext.isRequestMethod(HttpConstants.Method.GET)) {
routeContext.status(HttpConstants.StatusCode.NOT_MODIFIED);
}
}