@@ -297,13 +297,31 @@ template answer*(
297
297
headersArr &= cookie & " \r\n "
298
298
if headersArr.len > 0 :
299
299
headersArr.delete(headersArr.len- 2 .. headersArr.len- 1 )
300
- when declared(statusCode):
301
- when statusCode is int :
302
- req.send(statusCode.HttpCode, $ message, when useHeaders: headersArr else : defaultHeaders)
300
+
301
+ when enableSafeRequests:
302
+ when declared(statusCode):
303
+ when statusCode is int :
304
+ req.send(statusCode.HttpCode, $ message, when useHeaders: headersArr else : defaultHeaders)
305
+ else :
306
+ req.send(code, $ message, when useHeaders: headersArr else : defaultHeaders)
303
307
else :
304
308
req.send(code, $ message, when useHeaders: headersArr else : defaultHeaders)
305
309
else :
306
- req.send(code, $ message, when useHeaders: headersArr else : defaultHeaders)
310
+ var data: string = " HTTP/1.1 "
311
+ when declared(statusCode):
312
+ when statusCode is int :
313
+ data &= $ statusCode
314
+ else :
315
+ data &= $ code
316
+ else :
317
+ data &= $ code
318
+ when message is string :
319
+ data &= " \c\L Content-Length:" & $ len(message)
320
+ data &= " \c\L " & (when useHeaders: headersArr else : defaultHeaders) & " \c\L\c\L " & message
321
+ else :
322
+ data &= " \c\L Content-Length:" & $ len($ message)
323
+ data &= " \c\L " & (when useHeaders: headersArr else : defaultHeaders) & " \c\L\c\L " & $ message
324
+ req.unsafeSend(data)
307
325
# HTTP BEAST
308
326
elif enableHttpBeast:
309
327
when useHeaders:
@@ -330,7 +348,7 @@ template answer*(
330
348
let data = cookie.split(" :" , 1 )
331
349
h.add(" Set-Cookie" , data[1 ].strip())
332
350
else :
333
- let h = newHttpHeaders([(" Content-Type" , " text/plain; charset=utf-8" )])
351
+ let h = newHttpHeaders([(" Content-Type" , " text/plain;charset=utf-8" )])
334
352
when declared(statusCode):
335
353
when statusCode is int :
336
354
await req.respond(statusCode.HttpCode, $ message, h)
@@ -379,29 +397,63 @@ template answer*(
379
397
when enableHttpx:
380
398
var headersArr = " "
381
399
for key, value in h.pairs():
382
- headersArr &= key & ':' & value & " \r\n "
400
+ headersArr &= key & ':' & value & " \c\L "
383
401
when declared(outCookies):
384
402
for cookie in outCookies:
385
- headersArr &= cookie & " \r\n "
403
+ headersArr &= cookie & " \c\L "
386
404
if headersArr.len > 0 :
387
405
headersArr.delete(headersArr.len- 2 .. headersArr.len- 1 )
388
406
if contentLength.isSome:
389
407
# useful for file answers
390
- when declared(statusCode):
391
- when statusCode is int :
392
- req.send(statusCode.HttpCode, $ message, contentLength, headersArr)
408
+ when enableSafeRequests:
409
+ when declared(statusCode):
410
+ when statusCode is int :
411
+ req.send(statusCode.HttpCode, $ message, contentLength, headersArr)
412
+ else :
413
+ req.send(code, $ message, contentLength, headersArr)
393
414
else :
394
415
req.send(code, $ message, contentLength, headersArr)
395
416
else :
396
- req.send(code, $ message, contentLength, headersArr)
417
+ var data: string = " HTTP/1.1 "
418
+ when declared(statusCode):
419
+ when statusCode is int :
420
+ data &= $ statusCode
421
+ else :
422
+ data &= $ code
423
+ else :
424
+ data &= $ code
425
+ when message is string :
426
+ data &= " \c\L Content-Length:" & $ contentLength.get()
427
+ data &= " \c\L " & headersArr & " \c\L\c\L " & message
428
+ else :
429
+ data &= " \c\L Content-Length:" & $ contentLength.get()
430
+ data &= " \c\L " & headersArr & " \c\L\c\L " & $ message
431
+ req.unsafeSend(data)
397
432
else :
398
- when declared(statusCode):
399
- when statusCode is int :
400
- req.send(statusCode.HttpCode, $ message, headersArr)
433
+ when enableSafeRequests:
434
+ when declared(statusCode):
435
+ when statusCode is int :
436
+ req.send(statusCode.HttpCode, $ message, headersArr)
437
+ else :
438
+ req.send(code, $ message, headersArr)
401
439
else :
402
440
req.send(code, $ message, headersArr)
403
441
else :
404
- req.send(code, $ message, headersArr)
442
+ var data: string = " HTTP/1.1 "
443
+ when declared(statusCode):
444
+ when statusCode is int :
445
+ data &= $ statusCode
446
+ else :
447
+ data &= $ code
448
+ else :
449
+ data &= $ code
450
+ when message is string :
451
+ data &= " \c\L Content-Length:" & $ len(message)
452
+ data &= " \c\L " & headersArr & " \c\L\c\L " & message
453
+ else :
454
+ data &= " \c\L Content-Length:" & $ len($ message)
455
+ data &= " \c\L " & headersArr & " \c\L\c\L " & $ message
456
+ req.unsafeSend(data)
405
457
# HTTP BEAST
406
458
elif enableHttpBeast:
407
459
var headersArr = " "
@@ -440,7 +492,7 @@ when enableHttpBeast:
440
492
441
493
442
494
template answerJson* (req: Request, data: untyped , code: HttpCode = Http200,
443
- headers: HttpHeaders = newHttpHeaders([(" Content-Type" , " application/json; charset=utf-8" )])): untyped =
495
+ headers: HttpHeaders = newHttpHeaders([(" Content-Type" , " application/json;charset=utf-8" )])): untyped =
444
496
# # Answers to request with json data
445
497
# #
446
498
# # ⚠ `Low-level API` ⚠
@@ -461,7 +513,7 @@ template answerJson*(req: Request, data: untyped, code: HttpCode = Http200,
461
513
462
514
463
515
template answerHtml* (req: Request, data: string | TagRef, code: HttpCode = Http200,
464
- headers: HttpHeaders = newHttpHeaders([(" Content-Type" , " text/html; charset=utf-8" )])): untyped =
516
+ headers: HttpHeaders = newHttpHeaders([(" Content-Type" , " text/html;charset=utf-8" )])): untyped =
465
517
# # Answers to request with HTML data
466
518
# #
467
519
# # ⚠ `Low-level API` ⚠
0 commit comments