+htp #19756: Add extractData and extractRequestEntity directives. (#20730)

* 19756: Add extractData and extractRequestEntity directives.

remove unnecessary import

* #19756: add documentation to extractDataBytes and extractRequestEntity directives
This commit is contained in:
kwyczesany 2016-06-07 21:02:38 +02:00 committed by Konrad Malawski
parent 735060da20
commit 7fdd5983a3
8 changed files with 147 additions and 1 deletions

View file

@ -795,5 +795,36 @@ class BasicDirectivesExamplesSpec extends RoutingSpec {
}
//#
}
"extractRequestEntity-example" in {
//#extractRequestEntity-example
val route =
extractRequestEntity { entity =>
complete(s"Request entity content-type is ${entity.contentType}")
}
// tests:
val httpEntity = HttpEntity(ContentTypes.`text/plain(UTF-8)`, "req")
Post("/abc", httpEntity) ~> route ~> check {
responseAs[String] shouldEqual s"Request entity content-type is text/plain; charset=UTF-8"
}
//#
}
"extractDataBytes-example" in {
//#extractDataBytes-example
val route =
extractDataBytes { data
val sum = data.runFold(0) { (acc, i) acc + i.utf8String.toInt }
onSuccess(sum) { s
complete(HttpResponse(entity = HttpEntity(s.toString)))
}
}
// tests:
val dataBytes = Source.fromIterator(() Iterator.range(1, 10).map(x ByteString(x.toString)))
Post("/abc", HttpEntity(ContentTypes.`text/plain(UTF-8)`, data = dataBytes)) ~> route ~> check {
responseAs[String] shouldEqual "45"
}
//#
}
}