Skip to content

Instantly share code, notes, and snippets.

@tkawachi
Last active August 29, 2015 14:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tkawachi/51a3daa23ea2dd27e0a4 to your computer and use it in GitHub Desktop.
Save tkawachi/51a3daa23ea2dd27e0a4 to your computer and use it in GitHub Desktop.
import play.api.mvc.{ RequestHeader, EssentialAction, EssentialFilter }
/**
* Apply underlying filter only when f returns true.
*/
class FilterOnly(underlying: EssentialFilter, f: RequestHeader => Boolean) extends EssentialFilter {
override def apply(next: EssentialAction): EssentialAction = new EssentialAction {
private[this] val filteredNext = underlying(next)
override def apply(rh: RequestHeader) = if (f(rh)) filteredNext(rh) else next(rh)
}
}
object FilterOnly {
implicit class EssentialFilterFilterOnlyImplicit(filter: EssentialFilter) {
def only(f: RequestHeader => Boolean) = new FilterOnly(filter, f)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment