HeaderHandler.java 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package handlers;
  2. import io.netty.handler.codec.http.HttpHeaderNames;
  3. import io.netty.util.AsciiString;
  4. import ratpack.handling.Context;
  5. import ratpack.handling.Handler;
  6. import ratpack.http.MutableHeaders;
  7. import java.util.Timer;
  8. import java.util.TimerTask;
  9. public class HeaderHandler implements Handler {
  10. private static final CharSequence SERVER = AsciiString.cached("server");
  11. private static final CharSequence RATPACK = AsciiString.cached("ratpack");
  12. private final DateHelper dateHelper = new DateHelper();
  13. @Override
  14. public void handle(Context ctx) {
  15. MutableHeaders headers = ctx.getResponse().getHeaders();
  16. headers.set(HttpHeaderNames.DATE, dateHelper.getDate());
  17. headers.set(SERVER, RATPACK);
  18. ctx.next();
  19. }
  20. static class DateHelper extends TimerTask {
  21. private Timer timer = new Timer();
  22. private String date = generateDate();
  23. public DateHelper() {
  24. timer.schedule(this, 0, 1000);
  25. }
  26. @Override
  27. public void run() {
  28. date = generateDate();
  29. }
  30. private String generateDate() {
  31. return java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME.format(java.time.ZonedDateTime.now());
  32. }
  33. public String getDate() {
  34. return date;
  35. }
  36. }
  37. }