このリポジトリは2023-09-09にアーカイブされています。 ファイルの閲覧とクローンは可能ですが、プッシュ、イシューの作成、プルリクエストはできません。
Nitter-mod/src/routes/router_utils.nim

48 行
1.5 KiB
Nim
Raw 通常表示 履歴

2021-12-27 10:37:38 +09:00
# SPDX-License-Identifier: AGPL-3.0-only
2022-01-06 08:42:18 +09:00
import strutils, sequtils, uri, tables, json
2020-06-09 23:45:21 +09:00
from jester import Request, cookies
import ../views/general
import ".."/[utils, prefs, types]
2022-01-15 02:01:47 +09:00
export utils, prefs, types, uri
2019-09-20 22:03:18 +09:00
2020-06-01 09:22:56 +09: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),
2022-01-15 02:01:47 +09:00
httpOnly=true, secure=cfg.useHttps, sameSite=None)
2019-09-06 09:42:35 +09:00
template cookiePrefs*(): untyped {.dirty.} =
getPrefs(cookies(request))
2019-09-06 09:42:35 +09:00
2020-06-09 23:45:21 +09:00
template cookiePref*(pref): untyped {.dirty.} =
getPref(cookies(request), pref)
template themePrefs*(): Prefs =
var res = defaultPrefs
res.theme = cookiePref(theme)
res
template showError*(error: string; cfg: Config): string =
renderMain(renderError(error), request, cfg, themePrefs(), "Error")
2019-09-06 09:42:35 +09:00
template getPath*(): untyped {.dirty.} =
$(parseUri(request.path) ? filterParams(request.params))
template refPath*(): untyped {.dirty.} =
if @"referer".len > 0: @"referer" else: "/"
2019-12-04 13:58:18 +09:00
2020-06-01 09:22:56 +09: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 13:58:18 +09:00
proc getNames*(name: string): seq[string] =
name.strip(chars={'/'}).split(",").filterIt(it.len > 0)
2022-01-06 08:42:18 +09:00
template respJson*(node: JsonNode) =
resp $node, "application/json"