Skip to content

Releases: vapor/multipart-kit

Add `FormDataDecoder.decode` with `ByteBuffer` parameter

02 Oct 10:15
82f2556
Compare
Choose a tag to compare
This patch was authored by @adam-fowler and released by @0xTim.

Add FormDataDecoder.decode with ByteBuffer parameter and use this function in the other decode functions. This avoids unnecessary conversions from ByteBuffer to [UInt8] and back.

Add FormDataDecoder.decode with ByteBuffer parameter

Resolves #75

Support Indexed Arrays

19 Sep 13:12
30f5343
Compare
Choose a tag to compare
This patch was authored and released by @siemensikkema.

Supports indexed array elements when decoding and encoding form data (fixes #67, replaces #69).

Indicating that a value belongs to an array can now be done by appending [0], [1], etc. to the name, as an alternative to the already supported []. This allows for representing nested data inside elements in an array.

For instance, let matrix: [[Int]] = [[42,21]] can now be represented using part names matrix[0][0] and matrix[0][1]. Without indexed array elements there is no way to distinguish the above from [[42],[21]].

Note: FormDataEncoder now also includes indexes for array types in its output.

Credits go to @chocoford for identifying the issue, the test cases and the initial PR!

Redesign FormDataEncoder and FormDataDecoder

19 Sep 12:31
df545a1
Compare
Choose a tag to compare
This patch was authored and released by @siemensikkema.

Redesign FormDataEncoder and FormDataDecoder to better align with Codable's intended behavior.

  • Support decoding top level optionals (fixes #68)
  • Adds a userInfo property to FormDataDecoder and FormDataEncoder
  • More correct handling of "superDecoder" and "superEncoder"
  • When nesting depth is exceeded we first fail when we’re actually trying to grab data from beyond the nesting limit
  • Add some missing API docs

Fix regression that broke falling back to Codable

11 Jun 15:23
c9ea040
Compare
Choose a tag to compare
This patch was authored and released by @siemensikkema.

Fixes regression that broke falling back to Codable for types not conforming to MultipartPartConvertible (#66, fixes #65)

Note: this removes conformance of UUID to MultipartPartConvertible introduced in 4.2.0 because it is no longer needed.

Add support for encoding/decoding UUIDs

11 Jun 08:14
70025fc
Compare
Choose a tag to compare
This patch was authored and released by @siemensikkema.

Add support for encoding and decoding UUIDs (#64)

Support nested multipart encoding

09 Jun 11:16
8c666b7
Compare
Choose a tag to compare
This patch was authored and released by @siemensikkema.

Add encoding and decoding support for nested objects (#57)

In order to avoid overflows by malicious actors there is a maximum nesting depth associated with FormDataDecoder. It defaults to 8 but is configurable in the initializer like so: FormDataEncoder(nestingDepth: 8).

This update also deprecates MultipartError.

Fix: MultipartParser cannot decode Non-ASCII header correctly

12 May 06:57
2376b49
Compare
Choose a tag to compare
This patch was authored by @t-ae and released by @siemensikkema.

Fix the bug that MultipartParser cannot decode headers that contains non-ASCII characters correctly.

Optimize and simplify parser

26 Apr 13:40
4fcc81d
Compare
Choose a tag to compare
This patch was authored by @siemensikkema and released by @0xTim.

Use more efficient parsing of multipart bodies to improve performance to near the level of the old C parser (~8% slower). Resolves #58 and replaces #59. Thanks to @edwellbrook for the initial test case and @weissi for help on parser performance 🙏🏻

Rewrite multipart parser in Swift

14 Apr 21:01
08588dc
Compare
Choose a tag to compare
This patch was authored and released by @siemensikkema.

Rewrites parser in Swift and removes dependency on C library.

This also fixes an existing parsing bug where a nested multipart body would see its boundaries stripped of the "\r\n--" prefix. (replaces #56)

MultipartKit 4.0.0

21 Jan 14:05
73706f1
Compare
Choose a tag to compare

With this release, MultipartKit is again extracted from Vapor itself so it can be used independently.

Docs:
https://docs.vapor.codes/4.0/content/
https://api.vapor.codes/multipart-kit/master/MultipartKit/