nitter.nim 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import asyncdispatch, mimetypes
  2. from net import Port
  3. import jester
  4. import types, config, prefs, formatters, redis_cache, tokens
  5. import views/[general, about]
  6. import routes/[
  7. preferences, timeline, status, media, search, rss, list,
  8. unsupported, embed, resolver]
  9. const configPath {.strdefine.} = "./nitter.conf"
  10. let (cfg, fullCfg) = getConfig(configPath)
  11. updateDefaultPrefs(fullCfg)
  12. setCacheTimes(cfg)
  13. setHmacKey(cfg.hmacKey)
  14. initRedisPool(cfg)
  15. asyncCheck initTokenPool(cfg)
  16. createUnsupportedRouter(cfg)
  17. createResolverRouter(cfg)
  18. createPrefRouter(cfg)
  19. createTimelineRouter(cfg)
  20. createListRouter(cfg)
  21. createStatusRouter(cfg)
  22. createSearchRouter(cfg)
  23. createMediaRouter(cfg)
  24. createEmbedRouter(cfg)
  25. createRssRouter(cfg)
  26. settings:
  27. port = Port(cfg.port)
  28. staticDir = cfg.staticDir
  29. bindAddr = cfg.address
  30. routes:
  31. get "/":
  32. resp renderMain(renderSearch(), request, cfg)
  33. get "/about":
  34. resp renderMain(renderAbout(), request, cfg)
  35. get "/explore":
  36. redirect("/about")
  37. get "/help":
  38. redirect("/about")
  39. get "/i/redirect":
  40. let url = decodeUrl(@"url")
  41. if url.len == 0: resp Http404
  42. redirect(replaceUrl(url, cookiePrefs()))
  43. error Http404:
  44. resp Http404, showError("Page not found", cfg)
  45. extend unsupported, ""
  46. extend preferences, ""
  47. extend resolver, ""
  48. extend rss, ""
  49. extend search, ""
  50. extend timeline, ""
  51. extend list, ""
  52. extend status, ""
  53. extend media, ""
  54. extend embed, ""