extractDataBytes
Signature¶
def extractDataBytes: Directive1[Source[ByteString, Any]]
Description¶
Extracts the entities data bytes as Source[ByteString, _]
from the RequestContext
.
The directive returns a stream containing the request data bytes.
Example¶
sourceval 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"
}
sourceimport static org.apache.pekko.http.javadsl.server.Directives.extractDataBytes;
final Route route =
extractDataBytes(
data -> {
final CompletionStage<Integer> sum =
data.runFold(
0, (acc, i) -> acc + Integer.valueOf(i.utf8String()), materializer());
return onSuccess(
sum,
s ->
complete(
HttpResponse.create().withEntity(HttpEntities.create(s.toString()))));
});
// tests:
final Iterator iterator =
Arrays.asList(
ByteString.fromString("1"), ByteString.fromString("2"), ByteString.fromString("3"))
.iterator();
final Source<ByteString, NotUsed> dataBytes = Source.fromIterator(() -> iterator);
testRoute(route)
.run(
HttpRequest.POST("abc")
.withEntity(HttpEntities.create(ContentTypes.TEXT_PLAIN_UTF8, dataBytes)))
.assertEntity("6");
1.0.1