Skip to content

Commit

Permalink
(BSR)[API] refactor: simplify use of public api http_codes for swagger
Browse files Browse the repository at this point in the history
  • Loading branch information
lixxday committed Aug 14, 2023
1 parent eb70e19 commit bb74755
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 110 deletions.
42 changes: 16 additions & 26 deletions api/src/pcapi/routes/public/collective/endpoints/categories.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
from collections import defaultdict
from typing import cast

from pcapi.core.categories import categories
from pcapi.core.categories import subcategories_v2
from pcapi.routes.public import blueprints
from pcapi.routes.public.collective.serialization import offers as offers_serialization
from pcapi.routes.serialization import BaseModel
from pcapi.serialization.decorator import spectree_serialize
from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse
from pcapi.validation.routes.users_authentifications import api_key_required
Expand All @@ -16,18 +14,14 @@
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
{
"HTTP_200": (
offers_serialization.CollectiveOffersListCategoriesResponseModel,
"La liste des catégories éligibles existantes.",
),
"HTTP_401": (
cast(BaseModel, offers_serialization.AuthErrorResponseModel),
"Authentification nécessaire",
),
}
)
HTTP_200=(
offers_serialization.CollectiveOffersListCategoriesResponseModel,
"La liste des catégories éligibles existantes.",
),
HTTP_401=(
offers_serialization.AuthErrorResponseModel,
"Authentification nécessaire",
),
),
)
@api_key_required
Expand All @@ -48,18 +42,14 @@ def list_categories() -> offers_serialization.CollectiveOffersListCategoriesResp
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
{
"HTTP_200": (
offers_serialization.CollectiveOffersListSubCategoriesResponseModel,
"La liste des sous-catégories éligibles existantes.",
),
"HTTP_401": (
cast(BaseModel, offers_serialization.AuthErrorResponseModel),
"Authentification nécessaire",
),
}
)
HTTP_200=(
offers_serialization.CollectiveOffersListSubCategoriesResponseModel,
"La liste des sous-catégories éligibles existantes.",
),
HTTP_401=(
offers_serialization.AuthErrorResponseModel,
"Authentification nécessaire",
),
),
)
@api_key_required
Expand Down
23 changes: 8 additions & 15 deletions api/src/pcapi/routes/public/collective/endpoints/domains.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
from typing import cast

from pcapi.core.educational import repository as educational_repository
from pcapi.routes.public import blueprints
from pcapi.routes.public.collective.serialization import domains as domains_serialization
from pcapi.routes.public.collective.serialization import offers as offers_serialization
from pcapi.routes.serialization import BaseModel
from pcapi.serialization.decorator import spectree_serialize
from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse
from pcapi.utils.cache import cached_view
Expand All @@ -16,18 +13,14 @@
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
{
"HTTP_200": (
domains_serialization.CollectiveOffersListDomainsResponseModel,
"La liste des domaines d'éducation.",
),
"HTTP_401": (
cast(BaseModel, offers_serialization.AuthErrorResponseModel),
"Authentification nécessaire",
),
}
)
HTTP_200=(
domains_serialization.CollectiveOffersListDomainsResponseModel,
"La liste des domaines d'éducation.",
),
HTTP_401=(
offers_serialization.AuthErrorResponseModel,
"Authentification nécessaire",
),
),
)
@api_key_required
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
from typing import cast

from pcapi.core.educational.api.institution import search_educational_institution
from pcapi.routes.public import blueprints
from pcapi.routes.public.collective.serialization import institutions as institutions_serialization
from pcapi.routes.public.collective.serialization import offers as offers_serialization
from pcapi.routes.serialization import BaseModel
from pcapi.serialization.decorator import spectree_serialize
from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse
from pcapi.validation.routes.users_authentifications import api_key_required
Expand All @@ -15,22 +12,18 @@
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
{
"HTTP_200": (
institutions_serialization.CollectiveOffersListEducationalInstitutionResponseModel,
"La liste des établissement scolaires éligibles.",
),
"HTTP_400": (
cast(BaseModel, offers_serialization.ErrorResponseModel),
"Requête malformée",
),
"HTTP_401": (
cast(BaseModel, offers_serialization.AuthErrorResponseModel),
"Authentification nécessaire",
),
}
)
HTTP_200=(
institutions_serialization.CollectiveOffersListEducationalInstitutionResponseModel,
"La liste des établissement scolaires éligibles.",
),
HTTP_400=(
offers_serialization.ErrorResponseModel,
"Requête malformée",
),
HTTP_401=(
offers_serialization.AuthErrorResponseModel,
"Authentification nécessaire",
),
),
)
@api_key_required
Expand Down
28 changes: 10 additions & 18 deletions api/src/pcapi/routes/public/collective/endpoints/offers.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,11 @@
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
BASE_CODE_DESCRIPTIONS
| {
"HTTP_200": (
offers_serialization.CollectiveOffersListResponseModel,
"L'offre collective existe",
),
}
)
**(BASE_CODE_DESCRIPTIONS),
HTTP_200=(
offers_serialization.CollectiveOffersListResponseModel,
"L'offre collective existe",
),
),
)
@api_key_required
Expand Down Expand Up @@ -76,15 +72,11 @@ def get_collective_offers_public(
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
BASE_CODE_DESCRIPTIONS
| {
"HTTP_200": (
offers_serialization.GetPublicCollectiveOfferResponseModel,
"L'offre collective existe",
),
}
)
**(BASE_CODE_DESCRIPTIONS),
HTTP_200=(
offers_serialization.GetPublicCollectiveOfferResponseModel,
"L'offre collective existe",
),
),
)
@api_key_required
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
from typing import cast

from pcapi.core.educational import models as educational_models
from pcapi.routes.public import blueprints
from pcapi.routes.public.collective.serialization import offers as offers_serialization
from pcapi.routes.public.collective.serialization import students_levels as students_levels_serialization
from pcapi.routes.serialization import BaseModel
from pcapi.serialization.decorator import spectree_serialize
from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse
from pcapi.validation.routes.users_authentifications import api_key_required
Expand All @@ -15,18 +12,14 @@
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
{
"HTTP_200": (
students_levels_serialization.CollectiveOffersListStudentLevelsResponseModel,
"La liste des domaines d'éducation.",
),
"HTTP_401": (
cast(BaseModel, offers_serialization.AuthErrorResponseModel),
"Authentification nécessaire",
),
}
)
HTTP_200=(
students_levels_serialization.CollectiveOffersListStudentLevelsResponseModel,
"La liste des domaines d'éducation.",
),
HTTP_401=(
offers_serialization.AuthErrorResponseModel,
"Authentification nécessaire",
),
),
)
@api_key_required
Expand Down
23 changes: 8 additions & 15 deletions api/src/pcapi/routes/public/collective/endpoints/venues.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
from typing import cast

from pcapi.core.offerers import repository as offerers_repository
from pcapi.core.providers import repository as providers_repository
from pcapi.models.feature import FeatureToggle
from pcapi.routes.public import blueprints
from pcapi.routes.public.collective.serialization import offers as offers_serialization
from pcapi.routes.public.collective.serialization import venues as venues_serialization
from pcapi.routes.serialization import BaseModel
from pcapi.serialization.decorator import spectree_serialize
from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse
from pcapi.validation.routes.users_authentifications import api_key_required
Expand All @@ -18,18 +15,14 @@
api=blueprints.v2_prefixed_public_api_schema,
tags=["API offres collectives"],
resp=SpectreeResponse(
**(
{
"HTTP_200": (
venues_serialization.CollectiveOffersListVenuesResponseModel,
"La liste des lieux ou vous pouvez créer une offre.",
),
"HTTP_401": (
cast(BaseModel, offers_serialization.AuthErrorResponseModel),
"Authentification nécessaire",
),
}
)
HTTP_200=(
venues_serialization.CollectiveOffersListVenuesResponseModel,
"La liste des lieux ou vous pouvez créer une offre.",
),
HTTP_401=(
offers_serialization.AuthErrorResponseModel,
"Authentification nécessaire",
),
),
)
@api_key_required
Expand Down
4 changes: 2 additions & 2 deletions api/src/pcapi/serialization/decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
from flask import Response
from flask import make_response
from flask import request
import spectree
from werkzeug.exceptions import BadRequest

from pcapi.models.api_errors import ApiErrors
from pcapi.routes.apis import api as default_api
from pcapi.routes.serialization import BaseModel
from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse
from pcapi.serialization.spec_tree import ExtendedSpecTree


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -71,7 +71,7 @@ def spectree_serialize(
on_success_status: int = 200,
on_empty_status: int | None = None,
on_error_statuses: list[int] | None = None,
api: ExtendedSpecTree = default_api,
api: spectree.SpecTree = default_api,
json_format: bool = True,
response_headers: dict[str, str] | None = None,
resp: SpectreeResponse | None = None,
Expand Down

0 comments on commit bb74755

Please sign in to comment.