diff --git a/main.py b/main.py index 6aaffc2..b58bfcd 100644 --- a/main.py +++ b/main.py @@ -7,43 +7,10 @@ from db import get_session, engine, Base from models import WeatherRecord from datetime import datetime from fastapi.responses import HTMLResponse, JSONResponse -#from tenacity import retry, stop_after_attempt, wait_fixed #DODANE -import asyncio -import asyncpg -import redis -import json - -redis_client = redis.StrictRedis(host='localhost', port=6379, db=0, decode_responses=True) app = FastAPI() templates = Jinja2Templates(directory="templates") -@app.middleware("http") -async def log_user_action(request: Request, call_next): - method = request.method - path = request.url.path - query = dict(request.query_params) - timestamp = datetime.utcnow().isoformat() - - action = { - "method": method, - "path": path, - "query": query, - "timestamp": timestamp - } - - # Zapisujemy jako JSON w liście w Redis - redis_client.rpush("user_actions", json.dumps(action)) - - response = await call_next(request) - return response - -@app.get("/logs") -def get_logs(): - entries = redis_client.lrange("user_actions", 0, -1) - return [json.loads(e) for e in entries] - - CITIES = { "warszawa": (52.23, 21.01), "krakow": (50.06, 19.94), @@ -115,27 +82,11 @@ CITIES = { } -''' + @app.on_event("startup") async def startup(): async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) -''' - -@app.on_event("startup") -async def startup(): - for attempt in range(50): - try: - async with engine.begin() as conn: - await conn.run_sync(Base.metadata.create_all) - print("Połączono z bazą danych.") - break - except asyncpg.InvalidPasswordError: - print("Nieprawidłowe hasło.") - #raise - except Exception as e: - #print(f"Próba {attempt+1}/10 nieudana: {e}") - await asyncio.sleep(2) @app.get("/weather") async def get_weather(city: str = Query("warszawa"), session: AsyncSession = Depends(get_session)): @@ -143,7 +94,7 @@ async def get_weather(city: str = Query("warszawa"), session: AsyncSession = Dep if not coords: return {"error": "Miasto nieobsługiwane"} - url = f"http://api.open-meteo.com/v1/forecast?latitude={coords[0]}&longitude={coords[1]}¤t_weather=true" + url = f"https://api.open-meteo.com/v1/forecast?latitude={coords[0]}&longitude={coords[1]}¤t_weather=true" async with httpx.AsyncClient() as client: res = await client.get(url) @@ -208,7 +159,7 @@ async def get_weather_by_coords( session: AsyncSession = Depends(get_session) ): url = ( - f"http://api.open-meteo.com/v1/forecast?" + f"https://api.open-meteo.com/v1/forecast?" f"latitude={latitude}&longitude={longitude}¤t_weather=true" ) @@ -258,7 +209,7 @@ async def get_forecast( ) url = ( - f"http://api.open-meteo.com/v1/forecast?" + f"https://api.open-meteo.com/v1/forecast?" f"latitude={coords[0]}&longitude={coords[1]}" f"&daily=temperature_2m_max,temperature_2m_min,precipitation_sum" f"&timezone=Europe/Warsaw" @@ -297,7 +248,7 @@ async def get_forecast_geo( days: int = Query(3, ge=1, le=16) ): url = ( - f"http://api.open-meteo.com/v1/forecast?" + f"https://api.open-meteo.com/v1/forecast?" f"latitude={latitude}&longitude={longitude}" f"&daily=temperature_2m_max,temperature_2m_min,precipitation_sum" f"&timezone=Europe/Warsaw" @@ -337,7 +288,7 @@ async def get_hourly_forecast_geo( hours: int = Query(12, ge=1, le=48) ): url = ( - f"http://api.open-meteo.com/v1/forecast?" + f"https://api.open-meteo.com/v1/forecast?" f"latitude={latitude}&longitude={longitude}" f"&hourly=temperature_2m,windspeed_10m,precipitation" f"&timezone=Europe/Warsaw" @@ -394,7 +345,7 @@ async def get_hourly_forecast_city( latitude, longitude = coords url = ( - f"http://api.open-meteo.com/v1/forecast?" + f"https://api.open-meteo.com/v1/forecast?" f"latitude={latitude}&longitude={longitude}" f"&hourly=temperature_2m,windspeed_10m,precipitation" f"&timezone=Europe/Warsaw" @@ -454,7 +405,7 @@ async def get_weather_history_range( latitude, longitude = coords url = ( - f"http://archive-api.open-meteo.com/v1/archive?" + f"https://archive-api.open-meteo.com/v1/archive?" f"latitude={latitude}&longitude={longitude}" f"&daily=temperature_2m_max,temperature_2m_min,precipitation_sum" f"&start_date={start_date}&end_date={end_date}" @@ -497,7 +448,7 @@ async def get_weather_history_range_geo( end_date: str = Query(..., description="Końcowa data w formacie YYYY-MM-DD") ): url = ( - f"http://archive-api.open-meteo.com/v1/archive?" + f"https://archive-api.open-meteo.com/v1/archive?" f"latitude={latitude}&longitude={longitude}" f"&daily=temperature_2m_max,temperature_2m_min,precipitation_sum" f"&start_date={start_date}&end_date={end_date}" @@ -534,4 +485,3 @@ async def get_weather_history_range_geo( "history": daily }) - diff --git a/requirements.txt b/requirements.txt index b63b525..f037d93 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,3 @@ sqlalchemy asyncpg jinja2 uvicorn -redis[asyncio] -python-multipart -aioredis