content: 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();
    }
  
  }
  