diff --git a/thrimshim/thrimshim/main.py b/thrimshim/thrimshim/main.py index 3cff383..dd59b58 100644 --- a/thrimshim/thrimshim/main.py +++ b/thrimshim/thrimshim/main.py @@ -30,18 +30,28 @@ def cors(app): return handle -@app.route('/thrimshim/', methods=['GET', 'POST']) -def thrimshim(key): +@app.route('/thrimshim/', methods=['GET', 'POST']) +def thrimshim(ident): if flask.request.method == 'POST': row = flask.request.json else: - get_row(key) + conn = app.db_manager.get_conn() + with database.transaction(conn): + results = database.query(conn, 'SELECT * FROM events WHERE id = %s;', str(ident)) + row = results.fetchone() + if row is None: + flask.abort(404) + response = row._asdict() + response = {key:(response[key].isoformat() if isinstance(response[key], datetime.datetime) else response[key]) for key in response.keys()} + return json.dumps(response) + + def get_row(ident): conn = app.db_manager.get_conn() with database.transaction(conn): - results = database.query(conn, 'SELECT * FROM events WHERE id = %s;', ident) + results = database.query(conn, 'SELECT * FROM events WHERE id = %s;', str(ident)) row = results[0] assert row.id == ident response = row._asdict() @@ -81,7 +91,7 @@ def get_row(ident): -def main(host='0.0.0.0', port=8005, connection_string='', backdoor_port=0): +def main(host='0.0.0.0', port=8004, connection_string='', backdoor_port=0): server = WSGIServer((host, port), cors(app)) app.db_manager = database.DBManager(dsn=connection_string)