| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- import fastapi
- import fastapi.staticfiles
- import fastapi.responses
- import pathlib
- import os
- from . import *
- from .requests import *
- class server(fastapi.FastAPI):
- def __init__(self, config_file: str) -> None:
- super().__init__()
- location = pathlib.Path(config_file)
-
- self.__resources = config_loader(app_config) \
- .load(location) \
- .resources
-
- self.__static()
- self.__route_product()
- self.__route_users()
- @property
- def resources(self) -> app_resources:
- return self.__resources
- @property
- def product_app(self) -> product_app:
- return self.__resources.product_app
- @property
- def users_app(self) -> users_app:
- return self.__resources.users_app
- def __static(self) -> None:
- @self.get("/")
- async def root() -> str:
- with pathlib.Path("static/core.html").open() as core:
- return fastapi.responses.HTMLResponse(
- content = core.read(),
- status_code = 200
- )
-
- app_directory = fastapi.staticfiles.StaticFiles(
- directory = pathlib.Path("static/")
- )
- covers_directory = fastapi.staticfiles.StaticFiles(
- directory = self.resources.config.covers_path
- )
- self.mount(
- "/app",
- app_directory,
- name = "app_frontend"
- )
- self.mount(
- directory_image.server_path(),
- covers_directory,
- name = "covers"
- )
-
- def __route_product(self) -> None:
- @self.get("/products")
- async def products() -> dict:
- return self.product_app.all()
- @self.get("/product/get/barcode/{barcode}")
- async def product_get_barcode(barcode: int) -> dict:
- return self.product_app.get_barcode(str(barcode))
- @self.get("/product/get/name/{name}")
- async def product_get_name(name: str) -> dict:
- return self.product_app.get_name(name)
- @self.get("/product/search/name/{name}")
- async def product_search_name(name: str) -> dict:
- return self.product_app.search_name(name)
- @self.get("/product/search/author/{author}")
- async def product_search_author(author: str) -> dict:
- return self.product_app.search_author(author)
- @self.get("/product/check/barcode/{barcode}")
- async def product_check_barcode(barcode: int) -> dict:
- return self.product_app.check_barcode(str(barcode))
- @self.get("/product/check/name/{name}")
- async def product_check_name(name: str) -> dict:
- return self.product_app.check_name(name)
- @self.post("/product/update/barcode/{barcode}")
- async def product_barcode_update(
- barcode: str,
- product: product_update_request
- ) -> dict:
- body = product.dict()
- body["target_barcode"] = barcode
- return self.product_app.update(body)
- @self.post("/product/update/name/{name}")
- async def product_name_update(
- name: str,
- product: product_update_request
- ) -> dict:
- body = product.dict()
- body["target_name"] = name
- return self.product_app.update(body)
- @self.post("/product/update/image/barcode/{barcode}")
- async def product_image_barcode_update(
- barcode: str,
- product_image: product_update_image_request
- ) -> dict:
- body = product_image.dict()
- body["target_barcode"] = barcode
- return self.product_app.update_image(body)
-
- @self.post("/product/update/image/name/{name}")
- async def product_image_barcode_update(
- name: str,
- product_image: product_update_image_request
- ) -> dict:
- body = product_image.dict()
- body["target_name"] = name
- return self.product_app.update_image(body)
- @self.delete("/product/barcode/{barcode}")
- async def product_barcode_delete(
- barcode: str,
- request: apikey_request
- ) -> dict:
- body = request.dict()
- body["target_barcode"] = barcode
- return self.product_app.delete(body)
- @self.delete("/product/name/{name}")
- async def product_name_delete(
- name: str,
- request: apikey_request
- ) -> dict:
- body = request.dict()
- body["target_name"] = name
- return self.product_app.delete(body)
- @self.post("/product/create")
- async def product_create(product: product_create_request) -> dict:
- return self.product_app.create(product.dict())
- def __route_users(self) -> None:
- @self.post("/user/login")
- async def user_login(user: user_login_request) -> dict:
- return self.users_app.login(user.nick, user.password)
-
- @self.post("/user")
- async def user_get(body: user_get_request) -> dict:
- return self.users_app.get(body.apikey)
-
- instance = server(os.environ["config_file"])
|