org.http4s.multipart

This package is the start of a multipart implementation for http4s. It is still deficient in a few ways:

  • All encoding is chunked transfers, except for entities small enough to fit into the blaze buffer. This irritates some server implementations.

  • When decoding, chunks are kept in memory. Large ones should be buffered to a temp file.

  • It's a bit handwavy around character sets. Things probably go horribly wrong if you're not UTF-8.

  • This module is lightly tested, and its API should be considered experimental.

Enter this package at your own risk, but we'd love the feedback.

Type members

Classlikes

final case class Boundary(value: String) extends AnyVal
Companion:
object
Source:
Boundary.scala
object Boundary
Companion:
class
Source:
Boundary.scala
final case class Multipart[F[_]](parts: Vector[Part[F]], boundary: Boundary)

Create a new multipart from a vector of parts and a boundary.

Create a new multipart from a vector of parts and a boundary.

To create Multipart values from a generated boundary, see the Multiparts algebra.

Companion:
object
Source:
Multipart.scala
object Multipart
Companion:
class
Source:
Multipart.scala

A low-level multipart-parsing pipe. Most end users will prefer EntityDecoder[Multipart].

A low-level multipart-parsing pipe. Most end users will prefer EntityDecoder[Multipart].

Source:
MultipartParser.scala
trait Multiparts[F[_]]

An algebra for creating multipart values and boundaries.

An algebra for creating multipart values and boundaries.

A single instance may be shared by the entire application.

Companion:
object
Source:
Multiparts.scala
object Multiparts
Companion:
class
Source:
Multiparts.scala
final case class Part[F[_]](headers: Headers, body: Stream[F, Byte]) extends Media[F]
Companion:
object
Source:
Part.scala
object Part
Companion:
class
Source:
Part.scala