todo.sr.ht/todosrht/blueprints/api/__init__.py

41 lines
1.2 KiB
Python

import pkg_resources
from todosrht.types import User
from srht.flask import csrf_bypass
from srht.oauth import current_token, oauth
def get_user(username):
user = None
if username == None:
user = current_token.user
elif username.startswith("~"):
user = User.query.filter(User.username == username[1:]).one_or_none()
if not user:
abort(404)
return user
def register_api(app):
from todosrht.blueprints.api.trackers import trackers
from todosrht.blueprints.api.tickets import tickets
trackers = csrf_bypass(trackers)
tickets = csrf_bypass(tickets)
app.register_blueprint(trackers)
app.register_blueprint(tickets)
@app.route("/api/version")
def version():
try:
dist = pkg_resources.get_distribution("todosrht")
return { "version": dist.version }
except:
return { "version": "unknown" }
@app.route("/api/user/<username>")
@app.route("/api/user", defaults={"username": None})
@oauth(None)
def user_GET(username):
if username == None:
return current_token.user.to_dict()
return get_user(username).to_dict()