Interface FramedEntityStreamingDirectives

All Superinterfaces:
MarshallingDirectives
All Known Subinterfaces:
Directives
All Known Implementing Classes:
Directives$, HttpApp

public interface FramedEntityStreamingDirectives extends MarshallingDirectives
Allows the MarshallingDirectives.entity directive to extract a Source of elements.

See common.EntityStreamingSupport for useful default framing Flow instances and support traits such as SprayJsonSupport (or your other favourite JSON library) to provide the needed Marshaller s.

  • Method Details

    • asSourceOf

      <T> Unmarshaller<HttpRequest,akka.stream.scaladsl.Source<T,akka.NotUsed>> asSourceOf(Unmarshaller<akka.util.ByteString,T> um, EntityStreamingSupport support)
      Extracts entity as Source of elements of type T. This is achieved by applying the implicitly provided (in the following order):

      - 1st: chunk-up the incoming ByteStrings by applying the Content-Type-aware framing - 2nd: apply the Unmarshaller (from ByteString to T) for each of the respective "chunks" (e.g. for each JSON element contained within an array).

      The request will be rejected with an UnsupportedRequestContentTypeRejection if its ContentType is not supported by the used framing or unmarshaller.

      Cancelling extracted Source closes the connection abruptly (same as cancelling the entity.dataBytes).

      See also MiscDirectives.withoutSizeLimit as you may want to allow streaming infinite streams of data in this route. By default the uploaded data is limited by the akka.http.parsing.max-content-length.

      Parameters:
      um - (undocumented)
      support - (undocumented)
      Returns:
      (undocumented)
    • asSourceOf

      <T> Unmarshaller<HttpRequest,akka.stream.scaladsl.Source<T,akka.NotUsed>> asSourceOf(EntityStreamingSupport support, Unmarshaller<akka.util.ByteString,T> um)
      Extracts entity as Source of elements of type T. This is achieved by applying the implicitly provided (in the following order):

      - 1st: chunk-up the incoming ByteStrings by applying the Content-Type-aware framing - 2nd: apply the Unmarshaller (from ByteString to T) for each of the respective "chunks" (e.g. for each JSON element contained within an array).

      The request will be rejected with an UnsupportedRequestContentTypeRejection if its ContentType is not supported by the used framing or unmarshaller.

      Cancelling extracted Source closes the connection abruptly (same as cancelling the entity.dataBytes).

      See also MiscDirectives.withoutSizeLimit as you may want to allow streaming infinite streams of data in this route. By default the uploaded data is limited by the akka.http.parsing.max-content-length.

      Parameters:
      support - (undocumented)
      um - (undocumented)
      Returns:
      (undocumented)
    • asSourceOfInternal

      <T> Unmarshaller<HttpRequest,akka.stream.scaladsl.Source<T,akka.NotUsed>> asSourceOfInternal(Unmarshaller<akka.util.ByteString,T> um, EntityStreamingSupport support)