From 2b0ec1aaabc6b9281f008a411cc7a4241fe177e9 Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Tue, 14 Sep 2021 17:28:08 +0200
Subject: [PATCH] Add endpoint for active user

---
 .../connectors/datashield/main.connector.ts      | 16 +++++++++-------
 .../engine/connectors/exareme/main.connector.ts  | 16 ++++++++++++++++
 api/src/engine/engine.controller.ts              | 10 ++++++++++
 api/src/engine/engine.interfaces.ts              |  4 ++++
 4 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts
index b5a0c4f..a362265 100644
--- a/api/src/engine/connectors/datashield/main.connector.ts
+++ b/api/src/engine/connectors/datashield/main.connector.ts
@@ -1,17 +1,19 @@
-import { HttpService } from '@nestjs/axios';
 import { Observable } from 'rxjs';
-import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces';
+import { IEngineService } from 'src/engine/engine.interfaces';
 
 export default class DataShieldService implements IEngineService {
-  constructor(
-    private readonly options: IEngineOptions,
-    private readonly httpService: HttpService,
-  ) {}
-
   demo(): string {
     return 'datashield';
   }
 
+  getActiveUser(): Observable<string> {
+    throw new Error('Method not implemented.');
+  }
+
+  editActiveUser(): Observable<string> {
+    throw new Error('Method not implemented.');
+  }
+
   getExperiment(): Observable<string> {
     throw new Error('Method not implemented.');
   }
diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts
index 9baa296..b85b494 100644
--- a/api/src/engine/connectors/exareme/main.connector.ts
+++ b/api/src/engine/connectors/exareme/main.connector.ts
@@ -13,6 +13,22 @@ export default class ExaremeService implements IEngineService {
     return 'exareme';
   }
 
+  getActiveUser(): Observable<string> {
+    const path = this.options.baseurl + 'activeUser';
+
+    return this.httpService
+      .get<string>(path)
+      .pipe(map((response) => response.data));
+  }
+
+  editActiveUser(request: Request): Observable<string> {
+    const path = this.options.baseurl + 'activeUser/agreeNDA';
+
+    return this.httpService
+      .post<string>(path, request.body)
+      .pipe(map((response) => response.data));
+  }
+
   getExperiment(uuid: string): Observable<string> {
     const path = this.options.baseurl + `experiments/${uuid}`;
 
diff --git a/api/src/engine/engine.controller.ts b/api/src/engine/engine.controller.ts
index 8000ee7..a495a2c 100644
--- a/api/src/engine/engine.controller.ts
+++ b/api/src/engine/engine.controller.ts
@@ -64,4 +64,14 @@ export class EngineController {
   startExperiment(@Req() request: Request): Observable<string> {
     return this.engineService.startExperiment(request);
   }
+
+  @Get('activeUser')
+  getActiveUser(@Req() request: Request): Observable<string> {
+    return this.engineService.getActiveUser(request);
+  }
+
+  @Post('activeUser/agreeNDA')
+  agreeNDA(@Req() request: Request): Observable<string> {
+    return this.engineService.editActiveUser(request);
+  }
 }
diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts
index 1582d54..22f4a54 100644
--- a/api/src/engine/engine.interfaces.ts
+++ b/api/src/engine/engine.interfaces.ts
@@ -22,4 +22,8 @@ export interface IEngineService {
   startExperimentTransient(request: Request): Observable<string>;
 
   startExperiment(request: Request): Observable<string>;
+
+  getActiveUser(request: Request): Observable<string>;
+
+  editActiveUser(request: Request): Observable<string>;
 }
-- 
GitLab