mirror of
https://github.com/katanemo/plano.git
synced 2026-04-25 16:56:24 +02:00
75 lines
1.9 KiB
Python
75 lines
1.9 KiB
Python
import random
|
|
from fastapi import FastAPI, Response
|
|
from datetime import datetime, date, timedelta, timezone
|
|
import logging
|
|
from pydantic import BaseModel
|
|
import pytz
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
logger = logging.getLogger(__name__)
|
|
|
|
app = FastAPI()
|
|
|
|
@app.get("/healthz")
|
|
async def healthz():
|
|
return {
|
|
"status": "ok"
|
|
}
|
|
|
|
class WeatherRequest(BaseModel):
|
|
city: str
|
|
|
|
|
|
@app.post("/weather")
|
|
async def weather(req: WeatherRequest, res: Response):
|
|
|
|
weather_forecast = {
|
|
"city": req.city,
|
|
"temperature": [],
|
|
"unit": "F",
|
|
}
|
|
for i in range(7):
|
|
min_temp = random.randrange(50,90)
|
|
max_temp = random.randrange(min_temp+5, min_temp+20)
|
|
weather_forecast["temperature"].append({
|
|
"date": str(date.today() + timedelta(days=i)),
|
|
"temperature": {
|
|
"min": min_temp,
|
|
"max": max_temp
|
|
}
|
|
})
|
|
|
|
return weather_forecast
|
|
|
|
|
|
class InsuranceClaimDetailsRequest(BaseModel):
|
|
policy_number: str
|
|
|
|
@app.post("/insurance_claim_details")
|
|
async def insurance_claim_details(req: InsuranceClaimDetailsRequest, res: Response):
|
|
|
|
claim_details = {
|
|
"policy_number": req.policy_number,
|
|
"claim_status": "Approved",
|
|
"claim_amount": random.randrange(1000, 10000),
|
|
"claim_date": str(date.today() - timedelta(days=random.randrange(1, 30))),
|
|
"claim_reason": "Car Accident",
|
|
}
|
|
|
|
return claim_details
|
|
|
|
@app.get("/current_time")
|
|
async def current_time(timezone: str):
|
|
tz = None
|
|
try:
|
|
timezone.strip('"')
|
|
tz = pytz.timezone(timezone)
|
|
except pytz.exceptions.UnknownTimeZoneError:
|
|
return {
|
|
"error": "Invalid timezone: {}".format(timezone)
|
|
}
|
|
current_time = datetime.now(tz)
|
|
return {
|
|
"timezone": timezone,
|
|
"current_time": current_time.strftime("%Y-%m-%d %H:%M:%S %Z")
|
|
}
|