nimstdlib.nim 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import asynchttpserver, asyncdispatch, db_postgres
  2. import defs, handlers
  3. const port = 8080
  4. proc main {.async.} =
  5. var server = newAsyncHttpServer()
  6. proc cb(req: Request) {.async.} =
  7. case req.reqMethod
  8. of HttpGet:
  9. case req.url.path
  10. of "/plaintext": await handlePlaintext(req)
  11. of "/json": await handleJson(req)
  12. of "/db": await handleDB(req)
  13. of "/queries": await handleQueries(req)
  14. of "/fortunes": await handleFortunes(req)
  15. of "/updates": await handleUpdates(req)
  16. else: await handleHTTPErrors(req, Http404, "URL doesn't exists")
  17. else: await handleHTTPErrors(req, Http405, "Method not allowed")
  18. server.listen Port(port)
  19. echo "Starting server on port: " & $port
  20. let dbPing = db.getValue(sql"select now()")
  21. echo "Connected to Database at: " & $dbPing
  22. while true:
  23. if server.shouldAcceptRequest():
  24. await server.acceptRequest(cb)
  25. else:
  26. poll()
  27. asyncCheck main()
  28. runForever()