@@ -50,14 +50,15 @@ abstract class Main{
50
50
new Main .DefaultHandler (dispatchTrie, mainDecorators, debugMode, handleNotFound, handleMethodNotAllowed, handleEndpointError)
51
51
)
52
52
53
- def handleNotFound () = Main .defaultHandleNotFound()
53
+ def handleNotFound (req : Request ) : Response . Raw = Main .defaultHandleNotFound(req )
54
54
55
- def handleMethodNotAllowed () = Main .defaultHandleMethodNotAllowed()
55
+ def handleMethodNotAllowed (req : Request ) : Response . Raw = Main .defaultHandleMethodNotAllowed(req )
56
56
57
57
def handleEndpointError (routes : Routes ,
58
58
metadata : EndpointMetadata [_],
59
- e : cask.router.Result .Error ) = {
60
- Main .defaultHandleError(routes, metadata, e, debugMode)
59
+ e : cask.router.Result .Error ,
60
+ req : Request ): Response .Raw = {
61
+ Main .defaultHandleError(routes, metadata, e, debugMode, req)
61
62
}
62
63
63
64
def main (args : Array [String ]): Unit = {
@@ -75,9 +76,9 @@ object Main{
75
76
class DefaultHandler (dispatchTrie : DispatchTrie [Map [String , (Routes , EndpointMetadata [_])]],
76
77
mainDecorators : Seq [Decorator [_, _, _]],
77
78
debugMode : Boolean ,
78
- handleNotFound : () => Response .Raw ,
79
- handleMethodNotAllowed : () => Response .Raw ,
80
- handleError : (Routes , EndpointMetadata [_], Result .Error ) => Response .Raw )
79
+ handleNotFound : Request => Response .Raw ,
80
+ handleMethodNotAllowed : Request => Response .Raw ,
81
+ handleError : (Routes , EndpointMetadata [_], Result .Error , Request ) => Response .Raw )
81
82
(implicit log : Logger ) extends HttpHandler () {
82
83
def handleRequest (exchange : HttpServerExchange ): Unit = try {
83
84
// println("Handling Request: " + exchange.getRequestPath)
@@ -106,13 +107,14 @@ object Main{
106
107
.toList
107
108
108
109
dispatchTrie.lookup(decodedSegments, Map ()) match {
109
- case None => Main .writeResponse(exchange, handleNotFound())
110
+ case None => Main .writeResponse(exchange, handleNotFound(Request (exchange, decodedSegments) ))
110
111
case Some ((methodMap, routeBindings, remaining)) =>
111
112
methodMap.get(effectiveMethod) match {
112
- case None => Main .writeResponse(exchange, handleMethodNotAllowed())
113
+ case None => Main .writeResponse(exchange, handleMethodNotAllowed(Request (exchange, remaining) ))
113
114
case Some ((routes, metadata)) =>
115
+ val req = Request (exchange, remaining)
114
116
Decorator .invoke(
115
- Request (exchange, remaining) ,
117
+ req ,
116
118
metadata.endpoint,
117
119
metadata.entryPoint.asInstanceOf [EntryPoint [Routes , _]],
118
120
routes,
@@ -124,7 +126,7 @@ object Main{
124
126
case e : Result .Error =>
125
127
Main .writeResponse(
126
128
exchange,
127
- handleError(routes, metadata, e)
129
+ handleError(routes, metadata, e, req )
128
130
)
129
131
}
130
132
}
@@ -134,14 +136,14 @@ object Main{
134
136
}
135
137
}
136
138
137
- def defaultHandleNotFound (): Response .Raw = {
139
+ def defaultHandleNotFound (req : Request ): Response .Raw = {
138
140
Response (
139
141
s " Error 404: ${Status .codesToStatus(404 ).reason}" ,
140
142
statusCode = 404
141
143
)
142
144
}
143
145
144
- def defaultHandleMethodNotAllowed (): Response .Raw = {
146
+ def defaultHandleMethodNotAllowed (req : Request ): Response .Raw = {
145
147
Response (
146
148
s " Error 405: ${Status .codesToStatus(405 ).reason}" ,
147
149
statusCode = 405
@@ -199,7 +201,8 @@ object Main{
199
201
def defaultHandleError (routes : Routes ,
200
202
metadata : EndpointMetadata [_],
201
203
e : Result .Error ,
202
- debugMode : Boolean )
204
+ debugMode : Boolean ,
205
+ req : Request )
203
206
(implicit log : Logger ) = {
204
207
e match {
205
208
case e : Result .Error .Exception => log.exception(e.t)
0 commit comments