mirror of
https://github.com/zedeus/nitter
synced 2026-09-05 14:49:32 +00:00
36 lines
1 KiB
Nim
36 lines
1 KiB
Nim
# SPDX-License-Identifier: AGPL-3.0-only
|
|
import asyncdispatch, strutils
|
|
import jester
|
|
|
|
import router_utils
|
|
import ".."/[types, formatters, redis_cache]
|
|
import ../views/[general, space]
|
|
import media
|
|
|
|
export space
|
|
|
|
proc createSpaceRouter*(cfg: Config) =
|
|
router spaceRoute:
|
|
get "/i/spaces/@id":
|
|
cond @"id".allCharsInSet({'a'..'z', 'A'..'Z', '0'..'9'})
|
|
let sp = await getCachedAudioSpace(@"id")
|
|
|
|
if sp.id.len == 0:
|
|
resp Http404, showError("Space not found", cfg)
|
|
|
|
let prefs = requestPrefs()
|
|
resp renderMain(renderSpace(sp, prefs, request.path), request, cfg, prefs,
|
|
sp.title, ogTitle=sp.title)
|
|
|
|
get "/i/spaces/@id/stream":
|
|
cond @"id".allCharsInSet({'a'..'z', 'A'..'Z', '0'..'9'})
|
|
let sp = await getCachedAudioSpace(@"id")
|
|
|
|
if sp.m3u8Url.len == 0:
|
|
resp Http404
|
|
|
|
let manifest = await safeFetch(sp.m3u8Url)
|
|
if manifest.len == 0:
|
|
resp Http502
|
|
|
|
resp proxifyVideo(manifest, requestPrefs().proxyVideos, sp.m3u8Url), m3u8Mime
|