# ========================================================================
# User ID API Endpoint
#

from fastapi import APIRouter
from api.core.EasyMessage import API_BaseRequest
from api.core.EasyMessage import API_BaseResponse
from api.core.EasySQL import EasySQL
from api.core.EasyUser import EasyUser
import base64

import json

print("SET AVATAR API ENDPOINT")

router = APIRouter()
sql_connection = EasySQL()
user = EasyUser()

class API_Request(API_BaseRequest):
    image_data: str = ""

class API_Response(API_BaseResponse):
    pass


@router.post("/users/set_avatar")
def update_avatar(request: API_Request):

    # Default Session Check
    api_response = API_Response()
    session_hash = request.session_hash
    username = user.authenticate_session(session_hash)

    if(username == False):
        api_response.success = False
        api_response.status_code = 403
        api_response.reason = "Login Failure"
        return api_response

    imgdata = base64.b64decode(request.image_data)
    filename = f"../Frontend/images/avatars/{username}.jpg"

    with open(filename, 'wb') as f:
        f.write(imgdata)

    user_attributes = user.get_attributes(username)
    user_attributes['avatar'] = username

    if(user.set_attributes(username, user_attributes) == False):
        api_response.success = False
        api_response.status_code = 500
        api_response.reason = "Internal Server Error"
        return api_response

    api_response.success = True
    api_response.status_code = 200
    api_response.reason = ""
    return api_response
