from services import LCDService, LCD_LINE_1, LCD_LINE_2

from contextlib import asynccontextmanager

from fastapi import FastAPI, Response, status

import netifaces as ni
ip = ni.ifaddresses('wlan0')[ni.AF_INET][0]['addr']

PROJECT_NAME = "The Casino Cam"

lcd_service = LCDService()

@asynccontextmanager
async def lifespan(app: FastAPI):
    lcd_service.lcd_init()
    lcd_service.send_message(PROJECT_NAME, LCD_LINE_1)
    lcd_service.send_message(ip, LCD_LINE_2)
    yield
    lcd_service.clear()
    lcd_service.close()

app = FastAPI(lifespan=lifespan)

@app.post("/lcd/message")
def send_message_to_lcd(messages: list[str]):
    lcd_service.send_message(messages[0], LCD_LINE_1)
    lcd_service.send_message(messages[1], LCD_LINE_2)
    return Response(status_code=status.HTTP_204_NO_CONTENT)

@app.post("/lcd/clear")
def clear_lcd():
    lcd_service.clear()
    return Response(status_code=status.HTTP_204_NO_CONTENT)