123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import contextlib
- import os
- import flask
- import sys
- import lc.config as c
- import lc.error as e
- import lc.model as m
- import lc.request as r
- from lc.web import Endpoint, endpoint, render
- app = c.app
- @endpoint("/")
- class Index(Endpoint):
- def html(self):
- return render("main", title="main", content="whoo", user=self.user)
- @endpoint("/auth")
- class Auth(Endpoint):
- def api_post(self):
- _, token = m.User.login(r.User.from_json(flask.request.data))
- return token
- @endpoint("/login")
- class Login(Endpoint):
- def html(self):
- return render("main", title="login", content=render("login"), user=self.user)
- def api_post(self):
- print(flask.request.form)
- u, token = m.User.login(
- r.User(
- name=flask.request.form["username"],
- password=flask.request.form["password"],
- )
- )
- flask.session["auth"] = token
- raise e.LCRedirect(u.base_url())
- @endpoint("/logout")
- class Logout(Endpoint):
- def html(self):
- if "auth" in flask.session:
- del flask.session["auth"]
- raise e.LCRedirect("/")
- def api_post(self):
- if "auth" in flask.session:
- del flask.session["auth"]
- raise e.LCRedirect("/")
- @endpoint("/u")
- class CreateUser(Endpoint):
- def api_post(self):
- u = m.User.from_request(r.User.from_json(flask.request.data))
- return flask.redirect(u.base_url())
- @endpoint("/u/<string:slug>")
- class GetUser(Endpoint):
- def html(self, slug: str):
- u = m.User.by_slug(slug)
- pg = int(flask.request.args.get("page", 0))
- links = u.get_links(page=pg)
- return render(
- "main",
- title=f"user {u.name}",
- content=render("linklist", links=links),
- user=self.user,
- )
- def api_get(self, slug: str):
- return m.User.by_slug(slug).to_dict()
- @endpoint("/u/<string:user>/l")
- class CreateLink:
- def api_post(self, user: str):
- pass
- @endpoint("/u/<string:user>/l/<string:link>")
- class GetLink:
- def api_get(self, user: str, link: str):
- pass
- def html(self, user: str, link: str):
- pass
- @endpoint("/u/<string:user>/t/<path:tag>")
- class GetTaggedLinks:
- def html(self, user: str, tag: str):
- u = m.User.by_slug(user)
- pg = int(flask.request.args.get("page", 0))
- t = u.get_tag(tag)
- links = t.get_links(page=pg)
- return render(
- "main", title=f"tag {tag}", content=render("linklist", links=links), user=u,
- )
|