Skip to content

Commit 523ce6f

Browse files
committed
Cleanup route factories a little
Move things out of the RouteKeeper.swift into own files, give them better argument names.
1 parent 469e17c commit 523ce6f

File tree

4 files changed

+434
-375
lines changed

4 files changed

+434
-375
lines changed

Sources/connect/Middleware.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Noze.io / Macro
44
//
55
// Created by Helge Heß on 5/3/16.
6-
// Copyright © 2016-2020 ZeeZide GmbH. All rights reserved.
6+
// Copyright © 2016-2023 ZeeZide GmbH. All rights reserved.
77
//
88

99
import class http.IncomingMessage
@@ -20,13 +20,13 @@ public typealias Next = ( Any... ) -> Void
2020
/**
2121
* Middleware are just functions that deal with HTTP transactions.
2222
*
23-
* They take a request (`IncomingMessage`) and response (`ServerResponse`)
23+
* They take a request (``IncomingMessage``) and response (``ServerResponse``)
2424
* object as well as a closure to signal whether they fully handled the request
2525
* or whether the respective "Router" (e.g. Connect) should run the next
2626
* middleware.
2727
*
28-
* Call `Next` when the request processing needs to continue, just return if the
29-
* request was fully processed.
28+
* Call ``Next`` when the request processing needs to continue, just return if
29+
* the request was fully processed.
3030
*/
3131
public typealias Middleware =
3232
( IncomingMessage, ServerResponse, @escaping Next )
Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
//
2+
// RouteFactories.swift
3+
// Noze.io / Macro
4+
//
5+
// Created by Helge Heß on 2023-04-16.
6+
// Copyright © 2016-2023 ZeeZide GmbH. All rights reserved.
7+
//
8+
9+
import typealias connect.Middleware
10+
import NIOHTTP1
11+
12+
// TBD: All the duplication below looks a little stupid, is there a better way
13+
// w/o resorting to Any? Also we can only take uniform lists of middleware
14+
// (e.g. not mix & match regular and error mw)
15+
16+
public extension RouteKeeper {
17+
18+
// MARK: - Use // All
19+
20+
@discardableResult
21+
@inlinable
22+
func use(id: String? = nil, _ middleware: Middleware...) -> Self {
23+
add(route: Route(id: id, pattern: nil, method: nil, middleware: middleware))
24+
return self
25+
}
26+
27+
@discardableResult
28+
@inlinable
29+
func use(id: String? = nil, _ pathPattern: String,
30+
_ middleware: Middleware...) -> Self
31+
{
32+
add(route: Route(id: id, pattern: pathPattern, method: nil,
33+
middleware: middleware))
34+
return self
35+
}
36+
37+
@discardableResult
38+
@inlinable
39+
func all(id: String? = nil, _ pathPattern: String,
40+
_ middleware: Middleware...) -> Self
41+
{
42+
add(route: Route(id: id, pattern: pathPattern, method: nil,
43+
middleware: middleware))
44+
return self
45+
}
46+
47+
// MARK: - GET / POST / HEAD / PUT / DELETE / PATCH
48+
49+
@discardableResult
50+
@inlinable
51+
func get(id: String? = nil, _ pathPattern: String,
52+
_ middleware: Middleware...) -> Self
53+
{
54+
add(route: Route(id: id, pattern: pathPattern, method: .GET,
55+
middleware: middleware))
56+
return self
57+
}
58+
@discardableResult
59+
@inlinable
60+
func post(id: String? = nil, _ pathPattern: String,
61+
_ middleware: Middleware...) -> Self
62+
{
63+
add(route: Route(id: id, pattern: pathPattern, method: .POST,
64+
middleware: middleware))
65+
return self
66+
}
67+
@discardableResult
68+
@inlinable
69+
func head(id: String? = nil, _ pathPattern: String,
70+
_ middleware: Middleware...) -> Self
71+
{
72+
add(route: Route(id: id, pattern: pathPattern, method: .HEAD,
73+
middleware: middleware))
74+
return self
75+
}
76+
@discardableResult
77+
@inlinable
78+
func put(id: String? = nil, _ pathPattern: String,
79+
_ middleware: Middleware...) -> Self
80+
{
81+
add(route: Route(id: id, pattern: pathPattern, method: .PUT,
82+
middleware: middleware))
83+
return self
84+
}
85+
@discardableResult
86+
@inlinable
87+
func del(id: String? = nil, _ pathPattern: String,
88+
_ middleware: Middleware...) -> Self
89+
{
90+
add(route: Route(id: id, pattern: pathPattern, method: .DELETE,
91+
middleware: middleware))
92+
return self
93+
}
94+
@discardableResult
95+
@inlinable
96+
func patch(id: String? = nil, _ pathPattern: String,
97+
_ middleware: Middleware...) -> Self
98+
{
99+
add(route: Route(id: id, pattern: pathPattern, method: .PATCH,
100+
middleware: middleware))
101+
return self
102+
}
103+
104+
@discardableResult
105+
@inlinable
106+
func get(id: String? = nil, _ middleware: Middleware...) -> Self {
107+
add(route: Route(id: id, pattern: nil, method: .GET,
108+
middleware: middleware))
109+
return self
110+
}
111+
@discardableResult
112+
@inlinable
113+
func post(id: String? = nil, _ middleware: Middleware...) -> Self {
114+
add(route: Route(id: id, pattern: nil, method: .POST,
115+
middleware: middleware))
116+
return self
117+
}
118+
@discardableResult
119+
@inlinable
120+
func head(id: String? = nil, _ middleware: Middleware...) -> Self {
121+
add(route: Route(id: id, pattern: nil, method: .HEAD,
122+
middleware: middleware))
123+
return self
124+
}
125+
@discardableResult
126+
@inlinable
127+
func put(id: String? = nil, _ middleware: Middleware...) -> Self {
128+
add(route: Route(id: id, pattern: nil, method: .PUT,
129+
middleware: middleware))
130+
return self
131+
}
132+
@discardableResult
133+
@inlinable
134+
func del(id: String? = nil, _ middleware: Middleware...) -> Self {
135+
add(route: Route(id: id, pattern: nil, method: .DELETE,
136+
middleware: middleware))
137+
return self
138+
}
139+
@discardableResult
140+
@inlinable
141+
func patch(id: String? = nil, _ middleware: Middleware...) -> Self {
142+
add(route: Route(id: id, pattern: nil, method: .PATCH,
143+
middleware: middleware))
144+
return self
145+
}
146+
}
147+
148+
149+
public extension RouteKeeper { // Error Middleware Versions
150+
151+
// MARK: - Use // All
152+
153+
@discardableResult
154+
@inlinable
155+
func use(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
156+
add(route: Route(id: id, pattern: nil, method: nil,
157+
errorMiddleware: errorMiddleware))
158+
return self
159+
}
160+
161+
@discardableResult
162+
@inlinable
163+
func use(id: String? = nil, _ pathPattern: String,
164+
_ errorMiddleware: ErrorMiddleware...) -> Self
165+
{
166+
add(route: Route(id: id, pattern: pathPattern, method: nil,
167+
168+
errorMiddleware: errorMiddleware))
169+
return self
170+
}
171+
172+
@discardableResult
173+
@inlinable
174+
func all(id: String? = nil, _ pathPattern: String,
175+
_ errorMiddleware: ErrorMiddleware...) -> Self
176+
{
177+
add(route: Route(id: id, pattern: pathPattern, method: nil,
178+
errorMiddleware: errorMiddleware))
179+
return self
180+
}
181+
182+
183+
// MARK: - GET / POST / HEAD / PUT / DELETE / PATCH
184+
185+
@discardableResult
186+
@inlinable
187+
func get(id: String? = nil, _ pathPattern: String,
188+
_ errorMiddleware: ErrorMiddleware...) -> Self
189+
{
190+
add(route: Route(id: id, pattern: pathPattern, method: .GET,
191+
errorMiddleware: errorMiddleware))
192+
return self
193+
}
194+
@discardableResult
195+
@inlinable
196+
func post(id: String? = nil, _ pathPattern: String,
197+
_ errorMiddleware: ErrorMiddleware...) -> Self
198+
{
199+
add(route: Route(id: id, pattern: pathPattern, method: .POST,
200+
errorMiddleware: errorMiddleware))
201+
return self
202+
}
203+
@discardableResult
204+
@inlinable
205+
func head(id: String? = nil, _ pathPattern: String,
206+
_ errorMiddleware: ErrorMiddleware...) -> Self
207+
{
208+
add(route: Route(id: id, pattern: pathPattern, method: .HEAD,
209+
errorMiddleware: errorMiddleware))
210+
return self
211+
}
212+
@discardableResult
213+
@inlinable
214+
func put(id: String? = nil, _ pathPattern: String,
215+
_ errorMiddleware: ErrorMiddleware...) -> Self
216+
{
217+
add(route: Route(id: id, pattern: pathPattern, method: .PUT,
218+
errorMiddleware: errorMiddleware))
219+
return self
220+
}
221+
@discardableResult
222+
@inlinable
223+
func del(id: String? = nil, _ pathPattern: String,
224+
_ errorMiddleware: ErrorMiddleware...) -> Self
225+
{
226+
add(route: Route(id: id, pattern: pathPattern, method: .DELETE,
227+
errorMiddleware: errorMiddleware))
228+
return self
229+
}
230+
@discardableResult
231+
@inlinable
232+
func patch(id: String? = nil, _ pathPattern: String,
233+
_ errorMiddleware: ErrorMiddleware...) -> Self {
234+
add(route: Route(id: id, pattern: pathPattern, method: .PATCH,
235+
errorMiddleware: errorMiddleware))
236+
return self
237+
}
238+
239+
@discardableResult
240+
@inlinable
241+
func get(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
242+
add(route: Route(id: id, pattern: nil, method: .GET,
243+
errorMiddleware: errorMiddleware))
244+
return self
245+
}
246+
@discardableResult
247+
@inlinable
248+
func post(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
249+
add(route: Route(id: id, pattern: nil, method: .POST,
250+
errorMiddleware: errorMiddleware))
251+
return self
252+
}
253+
@discardableResult
254+
@inlinable
255+
func head(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
256+
add(route: Route(id: id, pattern: nil, method: .HEAD,
257+
errorMiddleware: errorMiddleware))
258+
return self
259+
}
260+
@discardableResult
261+
@inlinable
262+
func put(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
263+
add(route: Route(id: id, pattern: nil, method: .PUT,
264+
errorMiddleware: errorMiddleware))
265+
return self
266+
}
267+
@discardableResult
268+
@inlinable
269+
func del(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
270+
add(route: Route(id: id, pattern: nil, method: .DELETE,
271+
errorMiddleware: errorMiddleware))
272+
return self
273+
}
274+
@discardableResult
275+
@inlinable
276+
func patch(id: String? = nil, _ errorMiddleware: ErrorMiddleware...) -> Self {
277+
add(route: Route(id: id, pattern: nil, method: .PATCH,
278+
errorMiddleware: errorMiddleware))
279+
return self
280+
}
281+
}

0 commit comments

Comments
 (0)