!htc #16494 provide content negotiation fallback to exception handlers
This commit is contained in:
parent
a1d7c33663
commit
ec7156698a
7 changed files with 45 additions and 6 deletions
|
|
@ -13,6 +13,8 @@ import akka.http.model.japi.MediaRange;
|
|||
public abstract class Accept extends akka.http.model.HttpHeader {
|
||||
public abstract Iterable<MediaRange> getMediaRanges();
|
||||
|
||||
public abstract boolean acceptsAll();
|
||||
|
||||
public static Accept create(MediaRange... mediaRanges) {
|
||||
return new akka.http.model.headers.Accept(akka.http.model.japi.Util.<MediaRange, akka.http.model.MediaRange>convertArray(mediaRanges));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ sealed abstract class MediaRange extends japi.MediaRange with Renderable with Wi
|
|||
def isMultipart = false
|
||||
def isText = false
|
||||
def isVideo = false
|
||||
def isWildcard = mainType == "*"
|
||||
|
||||
/**
|
||||
* Returns a copy of this instance with the params replaced by the given ones.
|
||||
|
|
@ -123,6 +124,7 @@ object MediaRanges extends ObjectRegistry[String, MediaRange] {
|
|||
def matches(mediaType: MediaType) = true
|
||||
def specimen = MediaTypes.`text/plain`
|
||||
}
|
||||
val `*/*(minQ)` = `*/*`.withQValue(Float.MinPositiveValue)
|
||||
val `application/*` = new PredefinedMediaRange("application/*") {
|
||||
def matches(mediaType: MediaType) = mediaType.isApplication
|
||||
override def isApplication = true
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ final case class Accept(mediaRanges: immutable.Seq[MediaRange]) extends japi.hea
|
|||
import Accept.mediaRangesRenderer
|
||||
def renderValue[R <: Rendering](r: R): r.type = r ~~ mediaRanges
|
||||
protected def companion = Accept
|
||||
def acceptsAll = mediaRanges.exists(mr ⇒ mr.isWildcard && mr.qValue > 0f)
|
||||
|
||||
/** Java API */
|
||||
def getMediaRanges: Iterable[japi.MediaRange] = mediaRanges.asJava
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue