from flask import Flask, request, jsonify
from cal import CalMan
import json


app = Flask("rc")
calman = CalMan("config.yaml")

@app.route("/group/<string:group_token>")
def list_group(group_token: str):
    group_id = calman.tokens.get(group_token)

    if group_id:
        status = 200
        mtype = "application/json"
        cont = json.dumps(calman.list_group(group_id))
    else:
        status = 500
        mtype = "text/plain"
        cont = "Invalid group token"

    response = app.response_class(
            response=cont,
            status=status,
            mimetype=mtype,
            headers={'Access-Control-Allow-Origin':"*"}
    )
    return response

@app.route("/calendar/<string:cal_id>")
def get_cal(cal_id: str):
    try:
        status = 200
        mtype = "application/json"
        cont = json.dumps(calman.load_cal(cal_id))
    except KeyError:
        status = 500
        mtype = "text/plain"
        cont = "Invalid calendar identifier"

    response = app.response_class(
            response=cont,
            status=status,
            mimetype=mtype,
            headers={'Access-Control-Allow-Origin':"*"}
    )
    return response

@app.route("/calendar_group/<string:group_token>")
def get_cal_group(group_token: str):
    group_id = calman.tokens.get(group_token)

    if group_id:
        status = 200
        mtype = "application/json"
        cont = json.dumps(calman.load_cal_group(group_id))
    else:
        status = 500
        mtype = "text/plain"
        cont = "Invalid group token"

    response = app.response_class(
            response=cont,
            status=status,
            mimetype=mtype,
            headers={'Access-Control-Allow-Origin':"*"}
    )
    return response


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8014, debug=True)