+hco introduce generic abstract accessor for HttpCredentials parameters

This commit is contained in:
Johannes Rudolph 2014-06-11 09:56:25 +02:00
parent 4b2e79d853
commit 6d86360b4f

View file

@ -9,15 +9,23 @@ import akka.parboiled2.util.Base64
import akka.http.model.HttpCharsets._
import akka.http.util.{ Rendering, ValueRenderable }
sealed trait HttpCredentials extends ValueRenderable
sealed trait HttpCredentials extends ValueRenderable {
def scheme: String
def token: String
def params: Map[String, String]
}
final case class BasicHttpCredentials(username: String, password: String) extends HttpCredentials {
def render[R <: Rendering](r: R): r.type = {
val cookie = {
val userPass = username + ':' + password
val bytes = userPass.getBytes(`ISO-8859-1`.nioCharset)
val cookie = Base64.rfc2045.encodeToChar(bytes, false)
r ~~ "Basic " ~~ cookie
Base64.rfc2045.encodeToChar(bytes, false)
}
def render[R <: Rendering](r: R): r.type = r ~~ "Basic " ~~ cookie
def scheme: String = "Basic"
def token = cookie.toString
def params = Map.empty
}
object BasicHttpCredentials {
@ -33,6 +41,9 @@ object BasicHttpCredentials {
final case class OAuth2BearerToken(token: String) extends HttpCredentials {
def render[R <: Rendering](r: R): r.type = r ~~ "Bearer " ~~ token
def scheme: String = "Bearer"
def params: Map[String, String] = Map.empty
}
final case class GenericHttpCredentials(scheme: String, token: String,