mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-05-24 14:33:26 +00:00
Review fix
This commit is contained in:
parent
cb98517f67
commit
cf1a29d520
|
@ -1,27 +0,0 @@
|
|||
from jose import JWTError, jwt
|
||||
from pydantic import ValidationError
|
||||
|
||||
from fastapi import FastAPI, HTTPException, Security, status
|
||||
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
|
||||
from lib.api.schemas.entity import Token
|
||||
from lib.app import settings as lib_app_settings
|
||||
|
||||
app = FastAPI()
|
||||
settings = lib_app_settings.get_settings()
|
||||
|
||||
security = HTTPBearer()
|
||||
|
||||
|
||||
def get_token_data(
|
||||
authorization: HTTPAuthorizationCredentials = Security(security),
|
||||
) -> Token:
|
||||
token = authorization.credentials
|
||||
try:
|
||||
secret_key = settings.jwt_secret_key
|
||||
payload = jwt.decode(token, secret_key, algorithms=["HS256"])
|
||||
return Token(**payload)
|
||||
except (JWTError, ValidationError):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Could not validate credentials",
|
||||
)
|
|
@ -1,16 +1,15 @@
|
|||
import logging
|
||||
|
||||
import uvicorn
|
||||
|
||||
import lib.app.app as app_module
|
||||
from lib.app import settings as libs_app_settings
|
||||
import uvicorn
|
||||
from lib.app import settings as app_settings
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
app_instance = app_module.Application()
|
||||
app = app_instance.create_app()
|
||||
settings = libs_app_settings.get_settings()
|
||||
settings = app_settings.get_settings()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
|
@ -10,7 +10,7 @@ services:
|
|||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "${db_port}:5432"
|
||||
- "${db_port}:{db_port}"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data/
|
||||
restart: always
|
||||
|
@ -20,12 +20,12 @@ services:
|
|||
api:
|
||||
build:
|
||||
context: .
|
||||
container_name: fastapi
|
||||
container_name: fastapi_app
|
||||
image: fastapi_app
|
||||
restart: always
|
||||
entrypoint: ["/opt/app/entrypoint.sh"]
|
||||
ports:
|
||||
- "${server_port}:5432"
|
||||
- "${server_port}:{server_port}"
|
||||
depends_on:
|
||||
- db
|
||||
env_file:
|
||||
|
@ -45,15 +45,6 @@ services:
|
|||
networks:
|
||||
- api_network
|
||||
|
||||
redis:
|
||||
image: redis:7.0.11
|
||||
restart: always
|
||||
command: redis-server --bind 0.0.0.0
|
||||
ports:
|
||||
- "6379:6379"
|
||||
networks:
|
||||
- backend_network
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
|
|
@ -10,7 +10,7 @@ services:
|
|||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "127.0.0.1:${db_port}:5432"
|
||||
- "127.0.0.1:${db_port}:{db_port}"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data/
|
||||
restart: always
|
||||
|
@ -20,7 +20,7 @@ services:
|
|||
api:
|
||||
build:
|
||||
context: .
|
||||
container_name: fastapi
|
||||
container_name: fastapi_app
|
||||
image: fastapi_app
|
||||
restart: always
|
||||
entrypoint: ["/opt/app/entrypoint.sh"]
|
||||
|
@ -43,13 +43,6 @@ services:
|
|||
networks:
|
||||
- api_network
|
||||
|
||||
redis:
|
||||
image: redis:7.0.11
|
||||
restart: always
|
||||
command: redis-server --bind 0.0.0.0
|
||||
networks:
|
||||
- backend_network
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
import uuid
|
||||
|
||||
import sqlalchemy
|
||||
from sqlalchemy import Column, DateTime
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.ext.declarative import declared_attr
|
||||
|
||||
|
@ -9,7 +8,7 @@ from sqlalchemy.ext.declarative import declared_attr
|
|||
class BaseMixin:
|
||||
@declared_attr
|
||||
def id(cls):
|
||||
return Column(
|
||||
return sqlalchemy.Column(
|
||||
UUID(as_uuid=True),
|
||||
primary_key=True,
|
||||
default=uuid.uuid4,
|
||||
|
@ -19,8 +18,8 @@ class BaseMixin:
|
|||
|
||||
@declared_attr
|
||||
def created_at(cls):
|
||||
return Column(DateTime, server_default=sqlalchemy.func.now())
|
||||
return sqlalchemy.Column(sqlalchemy.DateTime, server_default=sqlalchemy.sql.func.now())
|
||||
|
||||
@declared_attr
|
||||
def updated_at(cls):
|
||||
return Column(DateTime, server_default=sqlalchemy.func.now())
|
||||
return sqlalchemy.Column(sqlalchemy.DateTime, server_default=sqlalchemy.sql.func.now())
|
27
src/fastapi_app/lib/api/services/token.py
Normal file
27
src/fastapi_app/lib/api/services/token.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
import fastapi
|
||||
|
||||
from jose import JWTError, jwt
|
||||
from pydantic import ValidationError
|
||||
|
||||
from lib.api import schemas as app_schemas
|
||||
from lib.app import settings as app_settings
|
||||
|
||||
app = fastapi.FastAPI()
|
||||
settings = app_settings.get_settings()
|
||||
|
||||
security = fastapi.security.HTTPBearer()
|
||||
|
||||
|
||||
def get_token_data(
|
||||
authorization: fastapi.security.HTTPAuthorizationCredentials = fastapi.Security(security),
|
||||
) -> app_schemas.entity.Token:
|
||||
token = authorization.credentials
|
||||
try:
|
||||
secret_key = settings.jwt_secret_key
|
||||
payload = jwt.decode(token, secret_key, algorithms=["HS256"])
|
||||
return app_schemas.entity.Token(**payload)
|
||||
except (JWTError, ValidationError):
|
||||
raise fastapi.HTTPException(
|
||||
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Could not validate credentials",
|
||||
)
|
|
@ -1,9 +1,10 @@
|
|||
import logging
|
||||
import logging.config as logging_config
|
||||
|
||||
import fastapi
|
||||
import lib.api.handlers as admin_api_handlers
|
||||
|
||||
import fastapi
|
||||
|
||||
from .logger import LOGGING
|
||||
from .settings import get_settings
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
import typing
|
||||
|
||||
from lib.app import settings as app_settings
|
||||
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
|
||||
from lib.app import settings as lib_app_settings
|
||||
|
||||
settings = lib_app_settings.get_settings()
|
||||
settings = app_settings.get_settings()
|
||||
|
||||
# Создаём базовый класс для будущих моделей
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
import logging
|
||||
|
||||
import faker
|
||||
|
||||
import backend.user.handlers as user_handlers
|
||||
import backend.user.repositories as user_repositories
|
||||
import backend.user.services as user_services
|
||||
import faker
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -12,7 +11,9 @@ logger = logging.getLogger(__name__)
|
|||
class App:
|
||||
def __init__(self):
|
||||
self._faker_client = faker.Faker()
|
||||
self._user_faker_client2 = user_repositories.UserFakerClient2(self._faker_client)
|
||||
self._user_faker_client2 = user_repositories.UserFakerClient2(
|
||||
self._faker_client
|
||||
)
|
||||
self._user_service = user_services.UserService(self._user_faker_client2)
|
||||
|
||||
self._handler1 = user_handlers.UserHandler1(self._user_service)
|
||||
|
@ -28,7 +29,7 @@ class App:
|
|||
del self._faker_client
|
||||
|
||||
|
||||
if __name__ == "__main__.py":
|
||||
if __name__ == "__main__":
|
||||
app = App()
|
||||
try:
|
||||
app.run()
|
||||
|
|
|
@ -33,5 +33,5 @@ def main() -> None:
|
|||
exit(os.EX_SOFTWARE)
|
||||
|
||||
|
||||
if __name__ == "__main__.py":
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import json
|
||||
|
||||
import aiohttp.web as aiohttp_web
|
||||
|
||||
import lib.utils.aiohttp as aiohttp_utils
|
||||
|
||||
|
||||
|
|
|
@ -4,11 +4,10 @@ import logging
|
|||
import typing
|
||||
|
||||
import aiohttp.web as aiohttp_web
|
||||
import typing_extensions
|
||||
|
||||
import lib.api.rest.v1.health as health_handlers
|
||||
import lib.app.errors as app_errors
|
||||
import lib.app.settings as app_settings
|
||||
import typing_extensions
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -103,7 +102,9 @@ class Application:
|
|||
logger.info("HTTP server has been interrupted")
|
||||
except BaseException as unexpected_error:
|
||||
logger.exception("HTTP server failed to start")
|
||||
raise app_errors.StartServerError("HTTP server failed to start") from unexpected_error
|
||||
raise app_errors.StartServerError(
|
||||
"HTTP server failed to start"
|
||||
) from unexpected_error
|
||||
|
||||
async def dispose(self) -> None:
|
||||
logger.info("Application is shutting down...")
|
||||
|
@ -121,7 +122,9 @@ class Application:
|
|||
|
||||
if len(dispose_errors) != 0:
|
||||
logger.error("Application has shut down with errors")
|
||||
raise app_errors.DisposeError("Application has shut down with errors, see logs above")
|
||||
raise app_errors.DisposeError(
|
||||
"Application has shut down with errors, see logs above"
|
||||
)
|
||||
|
||||
logger.info("Application has successfully shut down")
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user