from os import environ
import os
from fastapi import FastAPI, Body, Request, Depends
import json
from fastapi.exceptions import HTTPException

from fastapi.param_functions import Header
from fastapi_responses import custom_openapi
from app.auth import auth_hook, auth_web, check_ref
from app.pack import Pack


if not os.environ.get("DOCKER"):
    from dotenv import load_dotenv
    load_dotenv
    
app = FastAPI()

app.openapi = custom_openapi(app)

pack = Pack()
pack.clone()

@app.get("/", dependencies=[Depends(auth_web)])
@app.post("/", dependencies=[Depends(auth_hook), Depends(check_ref)])
async def hook(req: Request):
    pack.pull()
    pack.collate()
    pack.compress()
    pack.hash()
    pack.upload()
    return "Update"