from flask import Flask, request
import os
import subprocess
from colormap import rgb2hex
from tenacity import *

app = Flask(__name__)


@retry
@app.route("/on")
def on():
    os.system(
        f"gatttool -i hci0 -b b2:3b:03:00:14:d6 --char-write-req -a 0x0009 -n cc2333"
    )
    return "On"


@retry
@app.route("/off")
def off():
    os.system(
        f"gatttool -i hci0 -b b2:3b:03:00:14:d6 --char-write-req -a 0x0009 -n cc2433"
    )
    return "Off"


@retry
@app.route("/colour")
def hello():
    # a = request.query_string
    r = int(request.args.get("r"))
    g = int(request.args.get("g"))
    b = int(request.args.get("b"))
    hex = rgb2hex(r, g, b)
    hex = hex.replace("#", "")

    str = "56" + hex + "00f0aa"
    try:
        result = subprocess.run(
            [
                f"gatttool -i hci0 -b b2:3b:03:00:14:d6 --char-write-req -a 0x0009 -n {str}"
            ],
            stdout=subprocess.PIPE,
        ).stdout.decode("utf-8")
        if result != "Characteristic value was written successfully":
            raise Exception("Didn't work")
        else:
            return request.query_string
    except print(0):
        pass
