|
Play Framework/Scala example source code file (RequestExtractors.scala)
The RequestExtractors.scala Play Framework example source code
/*
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*/
package play.api.mvc
trait RequestExtractors extends AcceptExtractors {
/**
* Convenient extractor allowing to apply two extractors.
* Example of use:
* {{{
* request match {
* case Accepts.Json() & Accepts.Html() => "This request accepts both JSON and HTML"
* }
* }}}
*/
object & {
def unapply(request: RequestHeader): Option[(RequestHeader, RequestHeader)] = Some((request, request))
}
}
/**
* Define a set of extractors allowing to pattern match on the Accept HTTP header of a request
*/
trait AcceptExtractors {
/**
* Common extractors to check if a request accepts JSON, Html, etc.
* Example of use:
* {{{
* request match {
* case Accepts.Json() => Ok(toJson(value))
* case _ => Ok(views.html.show(value))
* }
* }}}
*/
object Accepts {
import play.api.http.MimeTypes
val Json = Accepting(MimeTypes.JSON)
val Html = Accepting(MimeTypes.HTML)
val Xml = Accepting(MimeTypes.XML)
val JavaScript = Accepting(MimeTypes.JAVASCRIPT)
}
}
/**
* Convenient class to generate extractors checking if a given mime type matches the Accept header of a request.
* Example of use:
* {{{
* val AcceptsMp3 = Accepting("audio/mp3")
* }}}
* Then:
* {{{
* request match {
* case AcceptsMp3() => ...
* }
* }}}
*/
case class Accepting(val mimeType: String) {
def unapply(request: RequestHeader): Boolean = request.accepts(mimeType)
def unapply(mediaRange: play.api.http.MediaRange): Boolean = mediaRange.accepts(mimeType)
}
Other Play Framework source code examplesHere is a short list of links related to this Play Framework RequestExtractors.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.