from fastapi import Request, HTTPException, Depends
from fastapi.responses import JSONResponse
from .JwtUtils import JwtUtils
from .IoUtils import IoUtils
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
security = HTTPBearer()
jwtUtils = JwtUtils()


# async def verify_jwt(request: Request):
async def verify_jwt(request: Request,credentials: HTTPAuthorizationCredentials = Depends(security),
):
    # token = request.headers.get("Authorization")
    token = credentials.credentials 
    if token is None:
        raise HTTPException(status_code=403, detail="Missing Token in Header")
    ioUtils = IoUtils()
    response = ioUtils.validate_token(token=token)
    print('----- > ')
    r=response.json()
    print(f"Token: {token}")
    print(f"Status Code: {response.status_code}")
    print(f"Response JSON: {r}")
    if response.status_code !=200:
        raise HTTPException(status_code=403, detail="Invalid Authorization")
    request.state.decoded_token=r
