Support /photo/1 endpoint

Fixes #43
This commit is contained in:
Zed 2019-09-20 14:10:10 +02:00
parent 6b437d5f87
commit fd20fcf3ee
3 changed files with 55 additions and 3 deletions

View file

@ -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 Normal file
View file

@ -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")

View file

@ -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