| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import asyncdispatch, strutils, sequtils, uri
- import jester
- import router_utils
- import ".."/[api, types, formatters, agents]
- import ../views/[general, status]
- export uri, sequtils
- export router_utils
- export api, formatters, agents
- export status
- proc createStatusRouter*(cfg: Config) =
- router status:
- get "/@name/status/@id":
- cond '.' notin @"name"
- let prefs = cookiePrefs()
- let conversation = await getTweet(@"name", @"id", @"after", 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
- title = pageTitle(conversation.tweet.profile)
- desc = conversation.tweet.text
- html = renderConversation(conversation, prefs, getPath())
- if conversation.tweet.video.isSome():
- let thumb = get(conversation.tweet.video).thumb
- let vidUrl = getVideoEmbed(conversation.tweet.id)
- resp renderMain(html, request, cfg.title, title, desc, 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, request, cfg.title, title, desc, images = @[thumb],
- `type`="video", video=vidUrl)
- else:
- resp renderMain(html, request, cfg.title, title, desc,
- images=conversation.tweet.photos, `type`="photo")
- get "/@name/status/@id/photo/@i":
- redirect("/$1/status/$2" % [@"name", @"id"])
- get "/@name/statuses/@id":
- redirect("/$1/status/$2" % [@"name", @"id"])
- get "/i/web/status/@id":
- redirect("/i/status/" & @"id")
|