Support /photo/1 endpoint

Fixes #43
このコミットが含まれているのは:
Zed 2019-09-20 14:10:10 +02:00
コミット fd20fcf3ee
3個のファイルの変更55行の追加3行の削除

ファイルの表示

@ -5,13 +5,14 @@ import jester
import types, config, prefs import types, config, prefs
import views/[general, about] import views/[general, about]
import routes/[preferences, timeline, media, search, rss] import routes/[preferences, timeline, status, media, search, rss]
const configPath {.strdefine.} = "./nitter.conf" const configPath {.strdefine.} = "./nitter.conf"
let cfg = getConfig(configPath) let cfg = getConfig(configPath)
createPrefRouter(cfg) createPrefRouter(cfg)
createTimelineRouter(cfg) createTimelineRouter(cfg)
createStatusRouter(cfg)
createSearchRouter(cfg) createSearchRouter(cfg)
createMediaRouter(cfg) createMediaRouter(cfg)
createRssRouter(cfg) createRssRouter(cfg)
@ -32,6 +33,7 @@ routes:
extend rss, "" extend rss, ""
extend search, "" extend search, ""
extend timeline, "" extend timeline, ""
extend status, ""
extend media, "" extend media, ""
runForever() runForever()

52
src/routes/status.nim ノーマルファイル
ファイルの表示

@ -0,0 +1,52 @@
import asyncdispatch, strutils, sequtils, uri
import jester
import router_utils
import ".."/[api, prefs, types, utils, cache, formatters, agents, query]
import ../views/[general, profile, timeline, status, search]
export uri, sequtils
export router_utils
export api, cache, formatters, query, agents
export profile, status
proc createStatusRouter*(cfg: Config) =
setProfileCacheTime(cfg.profileCacheTime)
router status:
get "/@name/status/@id":
cond '.' notin @"name"
let prefs = cookiePrefs()
let conversation = await getTweet(@"name", @"id", getAgent())
if conversation == nil or conversation.tweet.id.len == 0:
if conversation != nil and conversation.tweet.tombstone.len > 0:
resp Http404, showError(conversation.tweet.tombstone, cfg.title)
else:
resp Http404, showError("Tweet not found", cfg.title)
let path = getPath()
let title = pageTitle(conversation.tweet.profile)
let desc = conversation.tweet.text
let html = renderConversation(conversation, prefs, path)
if conversation.tweet.video.isSome():
let thumb = get(conversation.tweet.video).thumb
let vidUrl = getVideoEmbed(conversation.tweet.id)
resp renderMain(html, prefs, cfg.title, title, desc, path, images = @[thumb],
`type`="video", video=vidUrl)
elif conversation.tweet.gif.isSome():
let thumb = get(conversation.tweet.gif).thumb
let vidUrl = getVideoEmbed(conversation.tweet.id)
resp renderMain(html, prefs, cfg.title, title, desc, path, images = @[thumb],
`type`="video", video=vidUrl)
else:
resp renderMain(html, prefs, cfg.title, title, desc, path,
images=conversation.tweet.photos, `type`="photo")
get "/@name/status/@id/photo/1":
redirect("/$1/status/$2" % [@"name", @"id"])
get "/i/web/status/@id":
redirect("/i/status/" & @"id")

ファイルの表示

@ -6,8 +6,6 @@ import router_utils
import ".."/[api, prefs, types, utils, cache, formatters, agents, query] import ".."/[api, prefs, types, utils, cache, formatters, agents, query]
import ../views/[general, profile, timeline, status, search] import ../views/[general, profile, timeline, status, search]
include "../views/rss.nimf"
export uri, sequtils export uri, sequtils
export router_utils export router_utils
export api, cache, formatters, query, agents export api, cache, formatters, query, agents