moonstream/backend/moonstream/api.py

55 wiersze
1.4 KiB
Python
Czysty Zwykły widok Historia

2021-07-19 10:31:18 +00:00
"""
The Moonstream HTTP API
"""
import logging
import time
2021-08-23 17:04:26 +00:00
from fastapi import FastAPI
2021-07-19 10:31:18 +00:00
from fastapi.middleware.cors import CORSMiddleware
from . import data
2021-09-16 16:56:12 +00:00
from .routes.address_info import app as addressinfo_api
from .routes.nft import app as nft_api
from .routes.subscriptions import app as subscriptions_api
2021-08-02 10:59:32 +00:00
from .routes.streams import app as streams_api
2021-09-16 16:56:12 +00:00
from .routes.txinfo import app as txinfo_api
from .routes.users import app as users_api
2021-07-21 16:51:28 +00:00
from .settings import ORIGINS
2021-07-19 10:31:18 +00:00
from .version import MOONSTREAM_VERSION
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
app = FastAPI(openapi_url=None)
2021-07-19 10:31:18 +00:00
app.add_middleware(
CORSMiddleware,
allow_origins=ORIGINS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/ping", response_model=data.PingResponse)
async def ping_handler() -> data.PingResponse:
2021-07-19 10:31:18 +00:00
return data.PingResponse(status="ok")
@app.get("/version", response_model=data.VersionResponse)
async def version_handler() -> data.VersionResponse:
2021-07-19 10:31:18 +00:00
return data.VersionResponse(version=MOONSTREAM_VERSION)
@app.get("/now", tags=["time"])
2021-08-23 17:04:26 +00:00
async def now_handler() -> data.NowResponse:
return data.NowResponse(epoch_time=time.time())
app.mount("/subscriptions", subscriptions_api)
app.mount("/users", users_api)
2021-08-02 10:59:32 +00:00
app.mount("/streams", streams_api)
app.mount("/txinfo", txinfo_api)
2021-08-27 11:02:43 +00:00
app.mount("/address_info", addressinfo_api)
2021-09-16 16:56:12 +00:00
app.mount("/nft", nft_api)