Skip to content

Commit 617adc9

Browse files
Added middleware support to top level and host groups
1 parent ded511d commit 617adc9

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import Vapor
2+
3+
struct HostMiddlewareGroup: Sendable, TopLevelHostRoutesBuilder {
4+
/// Router to cascade to.
5+
let root: HostRoutesBuilder
6+
7+
/// Additional middleware.
8+
let middleware: [Middleware]
9+
10+
/// Creates a new routing group.
11+
init(root: HostRoutesBuilder, middleware: [Middleware]) {
12+
self.root = root
13+
self.middleware = middleware
14+
}
15+
16+
/// Prepend the root to the added route, and pass it up the chain.
17+
func add(_ route: HostRoute) {
18+
route.route.responder = self.middleware.makeResponder(chainingTo: route.route.responder)
19+
root.add(route)
20+
}
21+
}
22+
23+
extension TopLevelHostRoutesBuilder {
24+
public func grouped(_ middleware: Middleware...) -> some TopLevelHostRoutesBuilder {
25+
HostMiddlewareGroup(root: self, middleware: middleware)
26+
}
27+
28+
public func grouped(_ middleware: [Middleware]) -> some TopLevelHostRoutesBuilder {
29+
HostMiddlewareGroup(root: self, middleware: middleware)
30+
}
31+
32+
public func group(_ middleware: Middleware..., configure: (TopLevelHostRoutesBuilder) throws -> ()) rethrows {
33+
try configure(HostMiddlewareGroup(root: self, middleware: middleware))
34+
}
35+
36+
public func group(_ middleware: [Middleware], configure: (TopLevelHostRoutesBuilder) throws -> ()) rethrows {
37+
try configure(HostMiddlewareGroup(root: self, middleware: middleware))
38+
}
39+
}
40+
41+
extension HostRoutesBuilder {
42+
public func grouped(_ middleware: Middleware...) -> some HostRoutesBuilder {
43+
HostMiddlewareGroup(root: self, middleware: middleware)
44+
}
45+
46+
public func grouped(_ middleware: [Middleware]) -> some HostRoutesBuilder {
47+
HostMiddlewareGroup(root: self, middleware: middleware)
48+
}
49+
50+
public func group(_ middleware: Middleware..., configure: (HostRoutesBuilder) throws -> ()) rethrows {
51+
try configure(HostMiddlewareGroup(root: self, middleware: middleware))
52+
}
53+
54+
public func group(_ middleware: [Middleware], configure: (HostRoutesBuilder) throws -> ()) rethrows {
55+
try configure(HostMiddlewareGroup(root: self, middleware: middleware))
56+
}
57+
}

0 commit comments

Comments
 (0)