blob: 12aaf49b8aa180b98727b25a1a716f41640d3099 (
plain) (
tree)
|
|
discard """
action: compile
"""
import asyncdispatch, times
import jester
import database, views/user, views/general
proc userLogin(db: Database, request: Request, user: var User): bool =
if request.cookies.hasKey("username"):
if not db.findUser(request.cookies["username"], user):
user = User(username: request.cookies["username"], following: @[])
db.create(user)
return true
else:
return false
let db = newDatabase()
routes:
get "/":
var user: User
if db.userLogin(request, user):
let messages = db.findMessages(user.following & user.username)
resp renderMain(renderTimeline(user.username, messages))
else:
resp renderMain(renderLogin())
get "/@name":
cond '.' notin @"name"
var user: User
if not db.findUser(@"name", user):
halt "User not found"
let messages = db.findMessages(@[user.username])
var currentUser: User
if db.userLogin(request, currentUser):
resp renderMain(renderUser(user, currentUser) & renderMessages(messages))
else:
resp renderMain(renderUser(user) & renderMessages(messages))
post "/follow":
var follower: User
var target: User
if not db.findUser(@"follower", follower):
halt "Follower not found"
if not db.findUser(@"target", target):
halt "Follow target not found"
db.follow(follower, target)
redirect(uri("/" & @"target"))
post "/login":
setCookie("username", @"username", getTime().getGMTime() + 2.hours)
redirect("/")
post "/createMessage":
let message = Message(
username: @"username",
time: getTime(),
msg: @"message"
)
db.post(message)
redirect("/")
runForever()
|