All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.twibs.web.HtmlMinimizerResponder.scala Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2013-2015 by Michael Hombre Brinkmann
 */

package net.twibs.web

import com.googlecode.htmlcompressor.compressor.HtmlCompressor
import net.twibs.util.Request

class HtmlMinimizerResponder(contentResponder: Responder) extends Responder {
  def respond(request: Request): Option[Response] =
    (if (request.path.suffix == "html") contentResponder.respond(request) else None) match {
      case Some(response) if !response.isContentFinal => Some(minimize(request, response))
      case any => any
    }

  def minimize(request: Request, response: Response): Response = {
    val compressor = new HtmlCompressor()
    compressor.setRemoveSurroundingSpaces("br,p,head,body,html,article,section,nav,dt,dd,h1,h2,h3,h4,h5,h6,script,li,ul,ol,meta,link")
    new StringResponse with SingleResponseWrapper with HtmlMimeType {
      override protected def delegatee = response

      val asString: String = compressor.compress(response.asString)

      override def isContentFinal = true
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy