#!/usr/bin/python3
import sys
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from uvicorn.main import Server
from yoovo.routers.controller_compiler import router
import uvicorn
from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware

app = FastAPI()
origins = ["http://localhost:4200", "localhost", "yoovo.io", "http://localhost", "http://yoovoio","https://yoovo.io", "https://yoovo.io:4557", "http://yoovo.io", "http://yoovo.io:4557", "https://44.202.110.125","https://44.202.110.125:4557"]
app.add_middleware(CORSMiddleware, allow_origins=origins,
                   allow_credentials=True, allow_methods=["*"], allow_headers=["*"])
app.include_router(router=router)
if __name__ == "__main__":
    __spec__ = None
    # print(os.environ["KEY_FILE"])
    # print(os.environ["CERT_FILE"])
    if "USER" in os.environ.keys():
        username = os.environ["USER"]
        if username == "ubuntu" or username == "admin":
            app.add_middleware(HTTPSRedirectMiddleware)
            uvicorn.run("yoovo.yoovo_api:app", host='0.0.0.0', port=4557,
                    reload=False, debug=True, workers=3, ssl_keyfile="/etc/letsencrypt/archive/yoovo.io/privkey2.pem", ssl_certfile="/etc/letsencrypt/archive/yoovo.io/cert2.pem")
        # elif username == "root":
        #     app.add_middleware(HTTPSRedirectMiddleware)
        #     uvicorn.run("yoovo.yoovo_api:app", host='0.0.0.0', port=4557,
        #             reload=False, debug=True, workers=3, ssl_keyfile=os.path.join(os.environ["SSL_KEY_CERT_BASE_PATH"], os.environ["SSL_KEY_FILE"]), ssl_certfile=os.path.join(os.environ["SSL_KEY_CERT_BASE_PATH"], os.environ["SSL_CERT_FILE"]))
        else:
            uvicorn.run("yoovo.yoovo_api:app", host="0.0.0.0", port=4557, reload=False, debug=True, workers=3)
    else:
        uvicorn.run("yoovo.yoovo_api:app", host="0.0.0.0", port=4557, reload=False, debug=True, workers=3)