diff --git a/README.md b/README.md index bb6a0e7..b9057d9 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ First make sure that you've imported Submissions everywhere it's needed: import Submissions ``` -### Adding the Provider +### Adding the Provider and Middleware "Submissions" comes with a light-weight provider that we'll need to register in the `configure` function in our `configure.swift` file: @@ -56,8 +56,16 @@ import Submissions try services.register(SubmissionsProvider()) ``` +It also includes a middleware you have to register in your `MiddlewareConfig` (needs to come after `ErrorMiddleware` if present, to avoid the `SubmissionValidationError`s from being transformed into Internal Server errors on the way back up the responder chain) + +```swift +config.use(SubmissionsMiddleware.self) +``` + + This makes sure that fields and errors can be stored on the request using a `FieldCache` service. + ## Validating API requests _TODO_ diff --git a/Sources/Submissions/SubmissionsMiddleware.swift b/Sources/Submissions/SubmissionsMiddleware.swift index 70014c4..ff51d32 100644 --- a/Sources/Submissions/SubmissionsMiddleware.swift +++ b/Sources/Submissions/SubmissionsMiddleware.swift @@ -5,8 +5,13 @@ import Vapor /// Note: needs to come after `ErrorMiddleware` (if present) to avoid the /// `SubmissionValidationError`s from being transformed into Internal Server errors on the way back /// up the responder chain. -public final class SubmissionsMiddleware: Middleware { +public final class SubmissionsMiddleware: Middleware, ServiceType { + /// See `ServiceType`. + public static func makeService(for container: Container) throws -> SubmissionsMiddleware { + return SubmissionsMiddleware() + } + /// Create a new `SubmissionsMiddleware`. public init() {} diff --git a/Sources/Submissions/SubmissionsProvider.swift b/Sources/Submissions/SubmissionsProvider.swift index 5321b89..99a8175 100644 --- a/Sources/Submissions/SubmissionsProvider.swift +++ b/Sources/Submissions/SubmissionsProvider.swift @@ -8,6 +8,7 @@ public final class SubmissionsProvider: Provider { /// See `Provider` public func register(_ services: inout Services) throws { + services.register(SubmissionsMiddleware.self) services.register { _ in FieldCache() } }