Best project in Budapest KIWI event
This commit is contained in:
42
regiojet_search/api.py
Normal file
42
regiojet_search/api.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from datetime import date
|
||||
|
||||
from fastapi import FastAPI
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
|
||||
from regiojet_search.cache import cache
|
||||
from regiojet_search.models import Result
|
||||
from regiojet_search.search import fetch_cities, search
|
||||
from regiojet_search.utils import lookup_city
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
|
||||
@app.get("/search", response_model=list[Result])
|
||||
def search_view(origin: str, destination: str, departure: date, currency: str = "EUR"):
|
||||
cities = fetch_cities()
|
||||
routes = search(
|
||||
from_city=lookup_city(origin, cities),
|
||||
to_city=lookup_city(destination, cities),
|
||||
departure_date=departure,
|
||||
currency=currency,
|
||||
)
|
||||
return routes
|
||||
|
||||
|
||||
@app.get("/whisper")
|
||||
def whisper(text: str):
|
||||
cached_cities = cache.get("cities")
|
||||
|
||||
if cached_cities is not None:
|
||||
return [cached_city["name"] for cached_city in cached_cities if text.lower() in cached_city["name"].lower()]
|
||||
|
||||
return []
|
||||
Reference in New Issue
Block a user