From 99976484f93693e7c14ba80cda09ffc40594fb56 Mon Sep 17 00:00:00 2001
From: Samuel Guillemet <samuel.guillemet@telecom-sudparis.eu>
Date: Fri, 21 Jul 2023 15:17:45 +0200
Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20Use=20load=5Fmodules?=
 =?UTF-8?q?=20to=20load=20endpoints?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/api/v1/api.py                |  8 ++------
 src/app/api/v1/endpoints/__init__.py |  3 ---
 src/app/api/v1/endpoints/webhook.py  | 14 +++++++-------
 3 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/src/app/api/v1/api.py b/src/app/api/v1/api.py
index ec2de71..e8beeab 100644
--- a/src/app/api/v1/api.py
+++ b/src/app/api/v1/api.py
@@ -1,15 +1,11 @@
 """ API v1 router. """
 
-import importlib
-
 from fastapi import APIRouter
 
 from app.api.v1 import endpoints
+from app.utils.load_submodules import load_submodules
 
-endpoints_module = [
-    importlib.import_module(f"app.api.v1.endpoints.{module}")
-    for module in endpoints.__all__
-]
+endpoints_module = load_submodules(endpoints)
 
 api_v1_router = APIRouter()
 
diff --git a/src/app/api/v1/endpoints/__init__.py b/src/app/api/v1/endpoints/__init__.py
index aef3ae2..e69de29 100644
--- a/src/app/api/v1/endpoints/__init__.py
+++ b/src/app/api/v1/endpoints/__init__.py
@@ -1,3 +0,0 @@
-from . import webhook
-
-__all__ = ["webhook"]
diff --git a/src/app/api/v1/endpoints/webhook.py b/src/app/api/v1/endpoints/webhook.py
index e9369b0..28decba 100644
--- a/src/app/api/v1/endpoints/webhook.py
+++ b/src/app/api/v1/endpoints/webhook.py
@@ -18,12 +18,6 @@ logger = logging.getLogger("app.api.v1.webhook")
 
 router = APIRouter(tags=["webhook"], prefix="/webhook")
 
-# Common responses for the error cases.
-responses = {
-    403: {"description": "Webhook signature verification failed.", "model": ErrorModel},
-    501: {"description": "Webhook event not supported.", "model": ErrorModel},
-}
-
 # Load all webhook components and create a list of tuples containing
 # the event name, handler function, and response model.
 components_tuple: list[
@@ -44,7 +38,13 @@ components_tuple: list[
     response_model=Union[
         tuple(response_model for _, _, response_model in components_tuple)  # type: ignore
     ],
-    responses={**responses},
+    responses={
+        403: {
+            "description": "Webhook signature verification failed.",
+            "model": ErrorModel,
+        },
+        501: {"description": "Webhook event not supported.", "model": ErrorModel},
+    },
 )
 async def webhook_route(webhook_event: BaseWebhookEvent):
     """
-- 
GitLab