nitter.nim 1.1 KB

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