Added preloaded field to Strict-Transport-Security header in akka-http headers model

This commit is contained in:
atemerev 2016-04-10 17:21:04 +02:00 committed by Konrad Malawski
parent d886a1d0b5
commit 3921eeda94
3 changed files with 9 additions and 7 deletions

View file

@ -11,11 +11,12 @@ package akka.http.javadsl.model.headers;
public abstract class StrictTransportSecurity extends akka.http.scaladsl.model.HttpHeader {
public abstract long maxAge();
public abstract boolean includeSubDomains();
public abstract boolean preload();
public static StrictTransportSecurity create(long maxAge) {
return new akka.http.scaladsl.model.headers.Strict$minusTransport$minusSecurity(maxAge, false);
return new akka.http.scaladsl.model.headers.Strict$minusTransport$minusSecurity(maxAge, false, false);
}
public static StrictTransportSecurity create(long maxAge, boolean includeSubDomains) {
return new akka.http.scaladsl.model.headers.Strict$minusTransport$minusSecurity(maxAge, includeSubDomains);
public static StrictTransportSecurity create(long maxAge, boolean includeSubDomains, boolean preload) {
return new akka.http.scaladsl.model.headers.Strict$minusTransport$minusSecurity(maxAge, includeSubDomains, preload);
}
}

View file

@ -187,7 +187,7 @@ private[parser] trait SimpleHeaders { this: Parser with CommonRules with CommonA
def server = rule { products ~ EOI ~> (Server(_)) }
def `strict-transport-security` = rule {
ignoreCase("max-age=") ~ `delta-seconds` ~ optional(ws(";") ~ ignoreCase("includesubdomains") ~ push(true)) ~ EOI ~> (`Strict-Transport-Security`(_, _))
ignoreCase("max-age=") ~ `delta-seconds` ~ optional(ws(";") ~ ignoreCase("includesubdomains") ~ push(true)) ~ optional(ws(";") ~ ignoreCase("preload") ~ push(true)) ~ EOI ~> (`Strict-Transport-Security`(_, _, _))
}
// http://tools.ietf.org/html/rfc7230#section-3.3.1
@ -230,4 +230,4 @@ private[parser] trait SimpleHeaders { this: Parser with CommonRules with CommonA
(`ip-v4-address` | `ip-v6-address`) ~ EOI ~> (b `X-Real-Ip`(RemoteAddress(b)))
}
}
}

View file

@ -794,12 +794,13 @@ final case class Server(products: immutable.Seq[ProductVersion]) extends jm.head
// https://tools.ietf.org/html/rfc6797
object `Strict-Transport-Security` extends ModeledCompanion[`Strict-Transport-Security`] {
def apply(maxAge: Long, includeSubDomains: Option[Boolean]) = new `Strict-Transport-Security`(maxAge, includeSubDomains.getOrElse(false))
def apply(maxAge: Long, includeSubDomains: Option[Boolean], preload: Option[Boolean]) = new `Strict-Transport-Security`(maxAge, includeSubDomains.getOrElse(false), preload.getOrElse(false))
}
final case class `Strict-Transport-Security`(maxAge: Long, includeSubDomains: Boolean = false) extends jm.headers.StrictTransportSecurity with ResponseHeader {
final case class `Strict-Transport-Security`(maxAge: Long, includeSubDomains: Boolean = false, preload: Boolean = false) extends jm.headers.StrictTransportSecurity with ResponseHeader {
def renderValue[R <: Rendering](r: R): r.type = {
r ~~ "max-age=" ~~ maxAge
if (includeSubDomains) r ~~ "; includeSubDomains"
if (preload) r ~~ "; preload"
r
}
protected def companion = `Strict-Transport-Security`