router_utils.nim 795 B

123456789101112131415161718192021222324252627
  1. import strutils, sequtils, asyncdispatch, httpclient
  2. import ../utils, ../prefs
  3. export utils, prefs
  4. from net import SslError
  5. template cookiePrefs*(): untyped {.dirty.} =
  6. getPrefs(request.cookies.getOrDefault("preferences"), cfg)
  7. template getPath*(): untyped {.dirty.} =
  8. $(parseUri(request.path) ? filterParams(request.params))
  9. template refPath*(): untyped {.dirty.} =
  10. if @"referer".len > 0: @"referer" else: "/"
  11. proc getNames*(name: string): seq[string] =
  12. name.strip(chars={'/'}).split(",").filterIt(it.len > 0)
  13. proc safeClose*(client: AsyncHttpClient) =
  14. try: client.close()
  15. except SslError: discard
  16. proc safeFetch*(url: string): Future[string] {.async.} =
  17. let client = newAsyncHttpClient()
  18. try: result = await client.getContent(url)
  19. except: discard
  20. client.safeClose()