diff --git a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/BasicDirectivesExamplesTest.java b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/BasicDirectivesExamplesTest.java index 32790670a2..f667a2d14a 100644 --- a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/BasicDirectivesExamplesTest.java +++ b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/BasicDirectivesExamplesTest.java @@ -789,6 +789,45 @@ public class BasicDirectivesExamplesTest extends JUnitRouteTest { //#extractUnmatchedPath } + @Test + public void testExtractRequestEntity() { + //#extractRequestEntity + final Route route = extractRequestEntity(entity -> + complete("Request entity content-type is " + entity.getContentType()) + ); + + // tests: + testRoute(route).run( + HttpRequest.POST("/abc") + .withEntity(HttpEntities.create(ContentTypes.TEXT_PLAIN_UTF8, "req")) + ).assertEntity("Request entity content-type is text/plain; charset=UTF-8"); + //#extractRequestEntity + } + + @Test + public void testExtractDataBytes() { + //#extractDataBytes + final Route route = extractDataBytes(data -> { + final CompletionStage 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 dataBytes = Source.fromIterator(() -> iterator); + + testRoute(route).run( + HttpRequest.POST("abc") + .withEntity(HttpEntities.create(ContentTypes.TEXT_PLAIN_UTF8, dataBytes)) + ).assertEntity("6"); + //#extractDataBytes + } + @Test public void testExtractStrictEntity() { //#extractStrictEntity diff --git a/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/extractDataBytes.rst b/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/extractDataBytes.rst new file mode 100644 index 0000000000..a74722579b --- /dev/null +++ b/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/extractDataBytes.rst @@ -0,0 +1,16 @@ +.. _-extractDataBytes-java-: + +extractDataBytes +================ + +Description +----------- + +Extracts the entities data bytes as ``Source[ByteString, Any]`` from the :class:`RequestContext`. + +The directive returns a stream containing the request data bytes. + +Example +------- + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/BasicDirectivesExamplesTest.java#extractDataBytes diff --git a/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/extractRequestEntity.rst b/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/extractRequestEntity.rst new file mode 100644 index 0000000000..bdbeea2af7 --- /dev/null +++ b/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/extractRequestEntity.rst @@ -0,0 +1,17 @@ +.. _-extractRequestEntity-java-: + +extractRequestEntity +==================== + +Description +----------- + +Extracts the ``RequestEntity`` from the :class:`RequestContext`. + +The directive returns a ``RequestEntity`` without unmarshalling the request. To extract domain entity, +:ref:`-entity-java-` should be used. + +Example +------- + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/BasicDirectivesExamplesTest.java#extractRequestEntity diff --git a/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/index.rst b/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/index.rst index a212015c69..b92366b453 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/index.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/basic-directives/index.rst @@ -17,12 +17,14 @@ on two axes: a) provide a constant value or extract a value from the ``RequestCo a single value or a tuple of values. * :ref:`-extract-java-` + * :ref:`-extractDataBytes-java-` * :ref:`-extractExecutionContext-java-` * :ref:`-extractMaterializer-java-` * :ref:`-extractStrictEntity-java-` * :ref:`-extractLog-java-` * :ref:`-extractRequest-java-` * :ref:`-extractRequestContext-java-` + * :ref:`-extractRequestEntity-java-` * :ref:`-extractSettings-java-` * :ref:`-extractUnmatchedPath-java-` * :ref:`-extractUri-java-` @@ -93,12 +95,14 @@ Alphabetically cancelRejection cancelRejections extract + extractDataBytes extractExecutionContext extractMaterializer extractStrictEntity extractLog extractRequest extractRequestContext + extractRequestEntity extractSettings extractUnmatchedPath extractUri diff --git a/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/BasicDirectivesExamplesSpec.scala b/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/BasicDirectivesExamplesSpec.scala index 39d3969998..8c502fda4f 100644 --- a/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/BasicDirectivesExamplesSpec.scala +++ b/akka-docs/rst/scala/code/docs/http/scaladsl/server/directives/BasicDirectivesExamplesSpec.scala @@ -805,7 +805,7 @@ class BasicDirectivesExamplesSpec extends RoutingSpec { // 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" + responseAs[String] shouldEqual "Request entity content-type is text/plain; charset=UTF-8" } //# }