package me.osm.gazetteer.web.postprocessor;
import java.util.Date;
import org.restexpress.Request;
import org.restexpress.Response;
import org.restexpress.pipeline.Postprocessor;
import com.strategicgains.util.date.DateAdapter;
import com.strategicgains.util.date.HttpHeaderTimestampAdapter;
/**
* Assigns the Last-Modified HTTP header on the response for GET responses, if
* applicable.
*
* @author toddf
* @since May 15, 2012
*/
public class LastModifiedHeaderPostprocessor implements Postprocessor {
public static final String LAST_MODIFIED = "Last-Modified";
private static final DateAdapter fmt = new HttpHeaderTimestampAdapter();
/**
* Encode date and add header to response
* */
public static void addHeader(Response response, Date date) {
response.addHeader(LAST_MODIFIED,
fmt.format(date));
}
@Override
public void process(Request request, Response response) {
if (!request.isMethodGet()) {
return;
}
if (!response.hasBody()) {
return;
}
Object body = response.getBody();
if (!response.hasHeader(LAST_MODIFIED)
&& body.getClass().isAssignableFrom(Timestamped.class)) {
addHeader(response, ((Timestamped) body).getUpdatedAt());
}
}
}