Skip to content

Multipart request support for the URLRouting library

License

Notifications You must be signed in to change notification settings

Shimmur/swift-url-routing-multipart

Repository files navigation

Multipart support for URLRouting

This package contains parsers for parsing multipart request bodies when using the URLRouting library.

Example

enum MultipartRequests: Equatable {
  case twoTexts(String, String)
}

let routeParser = Route(MultipartRequests.twoTexts) {
    Path { "multipart" }
    Method.post
    MultipartBody(printBoundary: "abcde12345") {
        MultipartPart {
            PartHeaders {
                Field("Content-Type") { "text/plain" }
                Field("Content-Disposition") {
                    MultipartFormData(name: "first")
                }
            }
            PartBody(.string(encoding: .utf8))
        }
        MultipartPart {
            PartHeaders {
                Field("Content-Type") { "text/plain" }
                Field("Content-Disposition") {
                    MultipartFormData(name: "second")
                }
            }
            PartBody(.string(encoding: .utf8))
        }
    }
}

It can also be used to implement multipart file uploads:

struct FileUpload: Equatable {
    let mimeType: String
    let fileName: String
    let fileData: Data
}

enum MultipartRequests: Equatable {
  case uploadFile(FileUpload)
}

let routeParser = Route(MultipartRequests.fileUpload) {
    Path { "multipart" }
    Method.post
    MultipartBody(printBoundary: "abcde12345") {
        MultipartPart(.memberwise(FileUpload.init)) {
            PartHeaders {
                Field("Content-Type", .string)
                Field("Content-Disposition") {
                    MultipartFormData {
                        Field("name") { "image" }
                        Field("filename", .string)
                    }
                }
            }
            PartBody()
        }
    }
}

LICENCE

This library is licensed under the Apache 2.0 licence.

About

Multipart request support for the URLRouting library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages