Files
OSIT-AE-API-FastAPI/app/main.py
2020-09-14 12:41:02 -04:00

94 lines
2.3 KiB
Python

import logging
from datetime import datetime, time, timedelta
from enum import Enum
from fastapi import Body, Cookie, Depends, FastAPI, File, Form, Header, HTTPException, Path, Query, Request, status, UploadFile
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse
from fastapi.staticfiles import StaticFiles
from functools import lru_cache
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from sqlalchemy import create_engine, text
from sqlalchemy.exc import IntegrityError, OperationalError
from . import config
from .lib_general import *
from .routers import items, users, websockets
app = FastAPI()
@lru_cache()
def get_settings():
return config.Settings()
app.mount('/static', StaticFiles(directory='static'), name='static')
app.include_router(
users.router,
prefix='/user',
tags=['Users'],
#dependencies=[Depends(get_token_header)],
#dependencies=[Depends(get_account_header)],
#responses={404: {'description': 'Not found'}},
)
app.include_router(
items.router,
prefix='/item',
tags=['Items'],
#dependencies=[Depends(get_token_header)],
#responses={404: {'description': 'Not found'}},
)
app.include_router(
websockets.router,
#prefix='/item',
tags=['Websockets'],
#dependencies=[Depends(get_token_header)],
#responses={404: {'description': 'Not found'}},
)
# BEGIN: CORS
origins = [
'http://fastapi.localhost',
'http://localhost',
'http://localhost:5000',
'http://fastapi.localhost:5000',
'https://example.org',
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_origin_regex='https://.*\.oneskyit\.com',
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
#expose_headers=[],
#max_age=600,
)
# END: CORS
#Add the processing time to the response header.
@app.middleware('http')
async def add_process_time_header(request: Request, call_next):
import time
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers['X-Process-Time'] = str(process_time)
return response
@app.get('/', tags=['Default'])
async def get_root():
print(config.settings.APP_NAME)
return {'hello': 'This is the Aether API using FastAPI.'}