# -*- coding: utf-8 -*- from json import JSONDecodeError from fastapi import HTTPException from fastapi.routing import APIRouter from starlette import status from starlette.requests import Request from core.services.proxy import proxy, make_request from core.config import PEOPLE_MICROSERVICES, PLACES_MICROSERVICES router = APIRouter() router.get('/')(proxy(PEOPLE_MICROSERVICES)) router.get('/{people_id}')(proxy(PEOPLE_MICROSERVICES)) router.delete('/{people_id}')(proxy(PEOPLE_MICROSERVICES)) @router.post('/') async def create_people(request: Request): await validate_place_id(request) return await proxy(PEOPLE_MICROSERVICES)(request) @router.put('/{people_id}') async def update_people(request: Request): await validate_place_id(request) return await proxy(PEOPLE_MICROSERVICES)(request) async def validate_place_id(request): try:
from json import JSONDecodeError from fastapi import HTTPException, Depends from fastapi.routing import APIRouter from starlette import status from starlette.requests import Request from starlette.responses import UJSONResponse from apps.places.services.delete_people import send_delete_people_by_place from apps.places.services.get_people_list import send_list_people_filter_by_places from core import config from core.config import PEOPLE_MICROSERVICES, PLACES_MICROSERVICES from core.services.proxy import proxy, make_request router = APIRouter() router.delete('/{place_id}')(proxy(PLACES_MICROSERVICES)) @router.get('/') async def list_places(request: Request): url = '{}{}?{}'.format(PLACES_MICROSERVICES, re.sub('/api/v[1-9]+', '', request.url.path), request.url.query) status_code, response, headers = await make_request('get', url, {}, {}) if status_code == status.HTTP_200_OK: # TODO - improve performance await gather(*[send_list_people_filter_by_places(PEOPLE_MICROSERVICES, place, request) for place in response]) return UJSONResponse(response, status_code=status_code)