package com.github.aesteve.vertx.nubes.handlers.impl; import com.github.aesteve.vertx.nubes.context.PaginationContext; import com.github.aesteve.vertx.nubes.handlers.Processor; import com.google.common.net.HttpHeaders; import io.vertx.core.logging.Logger; import io.vertx.core.logging.LoggerFactory; import io.vertx.ext.web.RoutingContext; public class PaginationProcessor extends NoopAfterAllProcessor implements Processor { private static final Logger LOG = LoggerFactory.getLogger(PaginationProcessor.class); @Override public void preHandle(RoutingContext context) { context.data().put(PaginationContext.DATA_ATTR, PaginationContext.fromContext(context)); context.next(); } @Override public void postHandle(RoutingContext context) { PaginationContext pageContext = (PaginationContext) context.data().get(PaginationContext.DATA_ATTR); String linkHeader = pageContext.buildLinkHeader(context.request()); if (linkHeader != null) { context.response().headers().add(HttpHeaders.LINK, linkHeader); } else { LOG.warn("You did not set the total count on PaginationContext, response won't be paginated"); } context.next(); } }