From 5865a1a73b29d3b96fa168848d0e4852a1c0c1fc Mon Sep 17 00:00:00 2001
From: Joel von der Weid <joel.von-der-weid@hesge.ch>
Date: Mon, 17 Jun 2024 15:11:48 +0200
Subject: [PATCH] Add exercice route

---
 ExpressAPI/.env.vault                   |  6 ++--
 ExpressAPI/assets/OpenAPI/OpenAPI.yaml  | 47 +++++++++++++++++++++++++
 ExpressAPI/src/routes/ExerciseRoutes.ts |  6 ++++
 ExpressAPI/src/shared                   |  2 +-
 4 files changed, 57 insertions(+), 4 deletions(-)

diff --git a/ExpressAPI/.env.vault b/ExpressAPI/.env.vault
index a0ee539..3eeb0b4 100644
--- a/ExpressAPI/.env.vault
+++ b/ExpressAPI/.env.vault
@@ -4,11 +4,11 @@
 #/--------------------------------------------------/
 
 # development
-DOTENV_VAULT_DEVELOPMENT="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"
+DOTENV_VAULT_DEVELOPMENT="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"
 
 # production
-DOTENV_VAULT_PRODUCTION="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"
+DOTENV_VAULT_PRODUCTION="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"
 
 # test
-DOTENV_VAULT_TEST="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"
+DOTENV_VAULT_TEST="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"
 
diff --git a/ExpressAPI/assets/OpenAPI/OpenAPI.yaml b/ExpressAPI/assets/OpenAPI/OpenAPI.yaml
index 7014e5c..26d9499 100644
--- a/ExpressAPI/assets/OpenAPI/OpenAPI.yaml
+++ b/ExpressAPI/assets/OpenAPI/OpenAPI.yaml
@@ -554,6 +554,33 @@ paths:
                     $ref: '#/components/responses/NOT_FOUND'
                 default:
                     $ref: '#/components/responses/ERROR'
+    /exercises/{exerciseId}:
+        get:
+            tags:
+                - Exercise
+            summary: Get an exercise
+            security:
+                -   ExerciseChecker_Secret: [ ]
+            parameters:
+                -   $ref: '#/components/parameters/exerciseId'
+            responses:
+                '200':
+                    description: OK
+                    content:
+                        application/json:
+                            schema:
+                                allOf:
+                                    -   $ref: '#/components/schemas/DojoBackendResponse'
+                                    -   type: object
+                                        properties:
+                                            data:
+                                                $ref: '#/components/schemas/Exercise'
+                '401':
+                    $ref: '#/components/responses/UNAUTHORIZED'
+                '404':
+                    $ref: '#/components/responses/NOT_FOUND'
+                default:
+                    $ref: '#/components/responses/ERROR'
     /exercises/{exerciseId}/assignment:
         get:
             tags:
@@ -821,6 +848,16 @@ components:
                     type: boolean
                     examples:
                         - true
+                sonarKey:
+                    type: string
+                    examples:
+                        - dojodev_assignment_test-assignment-3_AY6etdT5SXprmuY6IlgR
+                sonarCreationInfo:
+                    type: object
+                    properties: { }
+                    externalDocs:
+                        description: Sonar project object
+                        url: https://next.sonarqube.com/sonarqube/web_api/api/projects/search
                 staff:
                     type: array
                     items:
@@ -880,6 +917,16 @@ components:
                     type: string
                     examples:
                         - '1992-09-30 19:00:00.000'
+                sonarKey:
+                    type: string
+                    examples:
+                        - dojodev_exercise_dojo-ex_test-assignment-6_dfddde9f-4288-460d-bf6e-67acc125355b_AY9OL1g7SXprmuY6ImSE
+                sonarCreationInfo:
+                    type: object
+                    properties: { }
+                    externalDocs:
+                        description: Sonar project object
+                        url: https://next.sonarqube.com/sonarqube/web_api/api/projects/search
             required:
                 - id
                 - assignmentName
diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index b8a89d7..69db635 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -74,6 +74,8 @@ class ExerciseRoutes implements RoutesManager {
     registerOnBackend(backend: Express) {
         backend.post('/assignments/:assignmentNameOrUrl/exercises', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_IS_PUBLISHED), ParamsValidatorMiddleware.validate(this.exerciseValidator), this.createExercise.bind(this));
 
+        backend.get('/exercises/:exerciseIdOrUrl', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), this.getExercise.bind(this));
+
         backend.get('/exercises/:exerciseIdOrUrl/assignment', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), this.getAssignment.bind(this));
 
         backend.post('/exercises/:exerciseIdOrUrl/results', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), ParamsValidatorMiddleware.validate(this.resultValidator), this.createResult.bind(this));
@@ -253,6 +255,10 @@ class ExerciseRoutes implements RoutesManager {
         });
     }
 
+    private async getExercise(req: express.Request, res: express.Response) {
+        return req.session.sendResponse(res, StatusCodes.OK, (req.boundParams.exercise as Exercise));
+    }
+
     private async createResult(req: express.Request, res: express.Response) {
         const params: { exitCode: number, commit: Record<string, string>, results: ExerciseResultsFile, files: Array<IFileDirStat>, archiveBase64: string } = req.body;
         const exercise: Exercise = req.boundParams.exercise!;
diff --git a/ExpressAPI/src/shared b/ExpressAPI/src/shared
index bf8d618..bd29fe7 160000
--- a/ExpressAPI/src/shared
+++ b/ExpressAPI/src/shared
@@ -1 +1 @@
-Subproject commit bf8d6180e6d86bf97bd8e8b16ee00826172ed287
+Subproject commit bd29fe76fdb1b124e3fe2f23e995a2b3b70694a7
-- 
GitLab