+htp #16816 Add variants of conditional directive taking only ETag or only Last-Modified value

This commit is contained in:
Mathias 2015-03-17 14:45:02 +01:00
parent 1b52ae333f
commit 85edf72d70
2 changed files with 62 additions and 19 deletions

View file

@ -13,12 +13,13 @@ final case class EntityTag(tag: String, weak: Boolean = false) extends japi.head
}
object EntityTag {
def matchesRange(eTag: EntityTag, entityTagRange: EntityTagRange, weak: Boolean) = entityTagRange match {
case EntityTagRange.`*` weak || !eTag.weak
case EntityTagRange.Default(tags) tags.exists(matches(eTag, _, weak))
}
def matches(eTag: EntityTag, other: EntityTag, weak: Boolean) =
other.tag == eTag.tag && (weak || !other.weak && !eTag.weak)
def matchesRange(eTag: EntityTag, entityTagRange: EntityTagRange, weakComparison: Boolean) =
entityTagRange match {
case EntityTagRange.`*` weakComparison || !eTag.weak
case EntityTagRange.Default(tags) tags.exists(matches(eTag, _, weakComparison))
}
def matches(eTag: EntityTag, other: EntityTag, weakComparison: Boolean) =
other.tag == eTag.tag && (weakComparison || !other.weak && !eTag.weak)
}
sealed abstract class EntityTagRange extends japi.headers.EntityTagRange with ValueRenderable