nitter/src/routes/router_utils.nim

41 lines
1.3 KiB
Nim
Raw Normal View History

2020-06-01 00:22:56 +00:00
import strutils, sequtils, asyncdispatch, httpclient, uri
from jester import Request
import ".."/[utils, prefs]
2019-09-20 23:08:30 +00:00
export utils, prefs
2019-09-20 13:03:18 +00:00
2020-06-01 00:22:56 +00:00
template savePref*(pref, value: string; req: Request; expire=false) =
if not expire or pref in cookies(req):
setCookie(pref, value, daysForward(when expire: -10 else: 360),
httpOnly=true, secure=cfg.useHttps)
2019-09-06 00:42:35 +00:00
template cookiePrefs*(): untyped {.dirty.} =
getPrefs(cookies(request))
2019-09-06 00:42:35 +00:00
template getPath*(): untyped {.dirty.} =
$(parseUri(request.path) ? filterParams(request.params))
template refPath*(): untyped {.dirty.} =
if @"referer".len > 0: @"referer" else: "/"
2019-12-04 04:58:18 +00:00
2020-06-01 00:22:56 +00:00
template getCursor*(): string =
let cursor = @"cursor"
decodeUrl(if cursor.len > 0: cursor else: @"max_position", false)
template getCursor*(req: Request): string =
let cursor = req.params.getOrDefault("cursor")
decodeUrl(if cursor.len > 0: cursor
else: req.params.getOrDefault("max_position"), false)
2019-12-04 04:58:18 +00:00
proc getNames*(name: string): seq[string] =
name.strip(chars={'/'}).split(",").filterIt(it.len > 0)
proc safeClose*(client: AsyncHttpClient) =
try: client.close()
2020-03-08 23:17:13 +00:00
except: discard
proc safeFetch*(url, agent: string): Future[string] {.async.} =
let client = newAsyncHttpClient(userAgent=agent)
try: result = await client.getContent(url)
except: discard
2020-03-08 23:17:13 +00:00
finally: client.safeClose()