1
+ # Copyright (C) 2012 Dominik Picheta
2
+ # MIT License - Look at license.txt for details.
1
3
import httpserver, sockets, strtabs, re, tables, parseutils, os, strutils, uri,
2
4
scgi, cookies, times, mimetypes
3
5
@@ -8,7 +10,7 @@ from cgi import decodeData, ECgi
8
10
type
9
11
TCallbackRet = tuple [action: TCallbackAction , code: THttpCode ,
10
12
headers: PStringTable , content: string ]
11
- TCallback = proc (request: var TRequest ): TCallbackRet
13
+ TCallback = proc (request: var TRequest ): TCallbackRet {. nimcall .}
12
14
13
15
TJester = object
14
16
isHttp: bool
@@ -159,7 +161,7 @@ proc createReq(path, body, ip: string, headers,
159
161
result .cookies = parseCookies (result .headers[" Cookie" ])
160
162
else : result .cookies = newStringTable ()
161
163
162
- template routeReq (): stmt =
164
+ template routeReq (): stmt {. dirty .} =
163
165
var (action, code, headers, content) = (TCActionNothing , http200,
164
166
{:}.newStringTable, " " )
165
167
try :
@@ -298,6 +300,9 @@ proc run*(appName = "", port = TPort(5000), http = true) =
298
300
handleSCGIRequest (j.scgiServer)
299
301
except EScgi :
300
302
echo (" [Warning] SCGI gave error: " , getCurrentExceptionMsg ())
303
+ except :
304
+ echo getStackTrace (getCurrentException ())
305
+ break
301
306
302
307
proc regex * (s: string , flags = {reExtended, reStudy}): TRegexMatch =
303
308
result = (re (s, flags), s)
@@ -319,7 +324,7 @@ template matchAddPattern(meth: THttpCode, path: string,
319
324
match.typ = MSpecial
320
325
match.pattern = parsePattern (path)
321
326
322
- j.routes.add ((meth, match, (proc (request: var TRequest ): TCallbackRet =
327
+ j.routes.add ((meth, match, (proc (request: var TRequest ): TCallbackRet {. nimcall .} =
323
328
setDefaultResp ()
324
329
body)))
325
330
0 commit comments