0001
0025 @_exported import HTTP
0026
0027 public final class RouterBuilder| Router.swift:33 | public init(_ basePath: String = "", middleware: MiddlewareType..., matcher: RouteMatcherType.Type = TrieRouteMatcher.self, build: (route: RouterBuilder) -> Void) { |
| RouterBuilder.swift:40 | extension RouterBuilder { |
| RouterBuilder.swift:74 | extension RouterBuilder { |
| RouterBuilder.swift:88 | extension RouterBuilder { |
| RouterBuilder.swift:102 | extension RouterBuilder { |
| RouterBuilder.swift:116 | extension RouterBuilder { |
| RouterBuilder.swift:130 | extension RouterBuilder { |
| RouterBuilder.swift:144 | extension RouterBuilder { |
| RouterBuilder.swift:158 | extension RouterBuilder { |
| RouterBuilder.swift:172 | extension RouterBuilder { |
{
0028 let basePath| RouterBuilder.swift:36 | self.basePath = basePath |
| RouterBuilder.swift:43 | let prefix = basePath + path |
: String
0029 var routes: [Route] = []
0030
0031 public var fallback: ResponderType = Responder { _ in
0032 return Response(status: .NotFound)
0033 }
0034
0035 init(basePath: String) {
0036 self.basePath = basePath
0037 }
0038 }
0039
0040 extension RouterBuilder {
0041 public func router(path: String, middleware: MiddlewareType..., router: RouterType) {
0042
0043 let prefix = basePath + path
0044 let prefixPathComponents = router.matcher.splitPathIntoComponents(prefix)
0045
0046 let newRoutes = router.matcher.routes.map { route in
0047 return Route(
0048 methods: route.methods,
0049 path: prefix + route.path,
0050 middleware: middleware,
0051 responder: Responder { request in
0052 var request = request
0053
0054 guard let path = request.path else {
0055 return Response(status: .BadRequest)
0056 }
0057
0058 let requestPathComponents = router.matcher.splitPathIntoComponents(path)
0059
0060 let shortenedRequestPathComponents = requestPathComponents.dropFirst(prefixPathComponents.count)
0061
0062 let shortenedPath = router.matcher.mergePathComponents(Array(shortenedRequestPathComponents))
0063
0064 request.uri.path = shortenedPath
0065 return try router.respond(request)
0066 }
0067 )
0068 }
0069
0070 routes.appendContentsOf(newRoutes)
0071 }
0072 }
0073
0074 extension RouterBuilder {
0075 public func fallback(middleware middleware: MiddlewareType..., respond: Respond) {
0076 fallback(middleware, responder: Responder(respond: respond))
0077 }
0078
0079 public func fallback| RouterBuilder.swift:75 | public func fallback(middleware middleware: MiddlewareType..., respond: Respond) { |
(middleware middleware: MiddlewareType..., responder: ResponderType) {
0080 fallback(middleware, responder: responder)
0081 }
0082
0083 private func fallback(middleware: [MiddlewareType], responder: ResponderType) {
0084 fallback = middleware.intercept(responder)
0085 }
0086 }
0087
0088 extension RouterBuilder {
0089 public func any| RouterBuilder.swift:93 | public func any(path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(path: String, middleware: MiddlewareType..., respond: Respond) {
0090 any(path, middleware: middleware, responder: Responder(respond: respond))
0091 }
0092
0093 public func any(path: String, middleware: MiddlewareType..., responder: ResponderType) {
0094 any(path, middleware: middleware, responder: responder)
0095 }
0096
0097 private func any(path: String, middleware: [MiddlewareType], responder: ResponderType) {
0098 methods(Method.commonMethods, path: path, middleware: middleware, responder: responder)
0099 }
0100 }
0101
0102 extension RouterBuilder {
0103 public func get| RouterBuilder.swift:107 | public func get(path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(path: String, middleware: MiddlewareType..., respond: Respond) {
0104 get(path, middleware: middleware, responder: Responder(respond: respond))
0105 }
0106
0107 public func get(path: String, middleware: MiddlewareType..., responder: ResponderType) {
0108 get(path, middleware: middleware, responder: responder)
0109 }
0110
0111 private func get(path: String, middleware: [MiddlewareType], responder: ResponderType) {
0112 methods([.GET], path: path, middleware: middleware, responder: responder)
0113 }
0114 }
0115
0116 extension RouterBuilder {
0117 public func post| RouterBuilder.swift:121 | public func post(path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(path: String, middleware: MiddlewareType..., respond: Respond) {
0118 post(path, middleware: middleware, responder: Responder(respond: respond))
0119 }
0120
0121 public func post(path: String, middleware: MiddlewareType..., responder: ResponderType) {
0122 post(path, middleware: middleware, responder: responder)
0123 }
0124
0125 private func post(path: String, middleware: [MiddlewareType], responder: ResponderType) {
0126 methods([.POST], path: path, middleware: middleware, responder: responder)
0127 }
0128 }
0129
0130 extension RouterBuilder {
0131 public func put| RouterBuilder.swift:135 | public func put(path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(path: String, middleware: MiddlewareType..., respond: Respond) {
0132 put(path, middleware: middleware, responder: Responder(respond: respond))
0133 }
0134
0135 public func put(path: String, middleware: MiddlewareType..., responder: ResponderType) {
0136 put(path, middleware: middleware, responder: responder)
0137 }
0138
0139 private func put(path: String, middleware: [MiddlewareType], responder: ResponderType) {
0140 methods([.PUT], path: path, middleware: middleware, responder: responder)
0141 }
0142 }
0143
0144 extension RouterBuilder {
0145 public func patch| RouterBuilder.swift:149 | public func patch(path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(path: String, middleware: MiddlewareType..., respond: Respond) {
0146 patch(path, middleware: middleware, responder: Responder(respond: respond))
0147 }
0148
0149 public func patch(path: String, middleware: MiddlewareType..., responder: ResponderType) {
0150 patch(path, middleware: middleware, responder: responder)
0151 }
0152
0153 private func patch(path: String, middleware: [MiddlewareType], responder: ResponderType) {
0154 methods([.PATCH], path: path, middleware: middleware, responder: responder)
0155 }
0156 }
0157
0158 extension RouterBuilder {
0159 public func delete| RouterBuilder.swift:163 | public func delete(path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(path: String, middleware: MiddlewareType..., respond: Respond) {
0160 delete(path, middleware: middleware, responder: Responder(respond: respond))
0161 }
0162
0163 public func delete(path: String, middleware: MiddlewareType..., responder: ResponderType) {
0164 delete(path, middleware: middleware, responder: responder)
0165 }
0166
0167 private func delete(path: String, middleware: [MiddlewareType], responder: ResponderType) {
0168 methods([.DELETE], path: path, middleware: middleware, responder: responder)
0169 }
0170 }
0171
0172 extension RouterBuilder {
0173 public func methods| RouterBuilder.swift:177 | public func methods(m: Set<Method>, path: String, middleware: MiddlewareType..., responder: ResponderType) { |
(m: Set<Method>, path: String, middleware: MiddlewareType..., respond: Respond) {
0174 methods(m, path: path, middleware: middleware, responder: Responder(respond: respond))
0175 }
0176
0177 public func methods(m: Set<Method>, path: String, middleware: MiddlewareType..., responder: ResponderType) {
0178 methods(m, path: path, middleware: middleware, responder: responder)
0179 }
0180
0181 private func methods(m: Set<Method>, path: String, middleware: [MiddlewareType], responder: ResponderType) {
0182 let route = Route(
0183 methods: m,
0184 path: basePath + path,
0185 middleware: middleware,
0186 responder: responder
0187 )
0188 routes.append(route)
0189 }
0190 }
0191