Esempio n. 1
0
#  -*- 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:
Esempio n. 2
0
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)