Created
September 24, 2017 23:03
-
-
Save ayushmishra2005/f9d85da71e6d654ec7d495269f0bcb99 to your computer and use it in GitHub Desktop.
In Akka HTTP, You can create custom headers by extending ModeledCustomHeader or CustomHeader.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.tutorial.sample | |
import akka.http.scaladsl.model.headers.{CustomHeader, ModeledCustomHeader, ModeledCustomHeaderCompanion, RawHeader} | |
import org.scalatest._ | |
import scala.util.Try | |
class CustomHeaderSpec extends FlatSpec with Matchers with BeforeAndAfterAll { | |
final class ApiTokenModeledHeader(token: String) extends ModeledCustomHeader[ApiTokenModeledHeader] { | |
override def renderInRequests = false | |
override def renderInResponses = false | |
override val companion = ApiTokenModeledHeader | |
override def value: String = token | |
} | |
object ApiTokenModeledHeader extends ModeledCustomHeaderCompanion[ApiTokenModeledHeader] { | |
override val name = "apiKey" | |
override def parse(value: String) = Try(new ApiTokenModeledHeader(value)) | |
} | |
case class ApiTokenHeader(token: String) extends CustomHeader { | |
override def renderInRequests = false | |
override def renderInResponses = false | |
override def value: String = token | |
override val name = "apicustomKey" | |
} | |
"A custom header" should "be validated" in { | |
val ApiTokenModeledHeader(t1) = ApiTokenModeledHeader("token") | |
t1 should ===("token") | |
val RawHeader(k2, v2) = ApiTokenModeledHeader("token") | |
k2 should ===("apiKey") | |
v2 should ===("token") | |
// will match, header keys are case insensitive | |
val ApiTokenModeledHeader(v3) = RawHeader("APIKEY", "token") | |
v3 should ===("token") | |
intercept[MatchError] { | |
// won't match, different header name | |
val ApiTokenModeledHeader(v6) = RawHeader("different", "token") | |
} | |
val ApiTokenHeader(v4) = ApiTokenHeader("token") | |
v4 should ===("token") | |
// Will not compile | |
/*val ApiTokenHeader(v5) = RawHeader("APICUSTOMKEY", "token") | |
v5 should ===("token")*/ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Lines 33-35 don't compile for me.