add cors to rest api
All checks were successful
build / test (pull_request) Successful in 26s

This commit is contained in:
Johannes Kirschbauer 2023-08-25 12:02:28 +02:00 committed by Jörg Thalheim
parent fb1376b23d
commit f0bc59a1a2
3 changed files with 62 additions and 41 deletions

View File

@ -1,4 +1,5 @@
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.routing import APIRoute
from .routers import health, machines, root
@ -9,6 +10,14 @@ def setup_app() -> FastAPI:
app.include_router(health.router)
app.include_router(machines.router)
app.include_router(root.router)
# TODO make this configurable
app.add_middleware(
CORSMiddleware,
allow_origins="http://localhost:3000",
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
for route in app.routes:
if isinstance(route, APIRoute):

View File

@ -1,54 +1,24 @@
from enum import Enum
from typing import Annotated
from fastapi import APIRouter, Body
from pydantic import BaseModel, Field
from ...machines.create import create_machine as _create_machine
from ...machines.list import list_machines as _list_machines
from ..schemas import (
Config,
ConfigResponse,
Machine,
MachineCreate,
MachineResponse,
MachinesResponse,
Schema,
SchemaResponse,
Status,
)
router = APIRouter()
class Status(Enum):
ONLINE = "online"
OFFLINE = "offline"
UNKNOWN = "unknown"
class Machine(BaseModel):
name: str
status: Status
class MachineCreate(BaseModel):
name: str
class MachinesResponse(BaseModel):
machines: list[Machine]
class MachineResponse(BaseModel):
machine: Machine
class Config(BaseModel):
pass
class ConfigResponse(BaseModel):
config: Config
class Schema(BaseModel):
pass
class SchemaResponse(BaseModel):
schema_: Schema = Field(alias="schema")
@router.get("/api/machines")
async def list_machines() -> MachinesResponse:
machines = []

View File

@ -0,0 +1,42 @@
from enum import Enum
from pydantic import BaseModel, Field
class Status(Enum):
ONLINE = "online"
OFFLINE = "offline"
UNKNOWN = "unknown"
class Machine(BaseModel):
name: str
status: Status
class MachineCreate(BaseModel):
name: str
class MachinesResponse(BaseModel):
machines: list[Machine]
class MachineResponse(BaseModel):
machine: Machine
class Config(BaseModel):
pass
class ConfigResponse(BaseModel):
config: Config
class Schema(BaseModel):
pass
class SchemaResponse(BaseModel):
schema_: Schema = Field(alias="schema")