From c2e812ad2cb3a2b8f56bc34a7c322394f1eb1e89 Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Mon, 13 Sep 2021 16:54:18 +0200
Subject: [PATCH] Added get experiments

---
 .../connectors/datashield/main.connector.ts       |  4 ++++
 .../engine/connectors/exareme/main.connector.ts   |  8 ++++++++
 api/src/engine/engine.controller.ts               | 15 +++++++++++----
 api/src/engine/engine.interfaces.ts               |  5 ++++-
 4 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts
index 643cd6d..bcffa41 100644
--- a/api/src/engine/connectors/datashield/main.connector.ts
+++ b/api/src/engine/connectors/datashield/main.connector.ts
@@ -4,6 +4,10 @@ import { IEngineOptions, IEngineService } from "src/engine/engine.interfaces";
 
 export default class DataShieldService implements IEngineService {
     constructor(private readonly options: IEngineOptions, private readonly httpService: HttpService) { }
+    
+    getExperiments(): Observable<string> {
+        throw new Error("Method not implemented.");
+    }
 
     getAlgorithms(): 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 10aa652..ccad44c 100644
--- a/api/src/engine/connectors/exareme/main.connector.ts
+++ b/api/src/engine/connectors/exareme/main.connector.ts
@@ -5,6 +5,14 @@ import { IEngineOptions, IEngineService } from "src/engine/engine.interfaces";
 export default class ExaremeService implements IEngineService {
     constructor(private readonly options: IEngineOptions, private readonly httpService: HttpService) { }
 
+    getExperiments(): Observable<string> {
+        const path = this.options.baseurl + "experiments";
+
+        return this.httpService.get<string>(path).pipe(
+            map(response => response.data)
+        );
+    }
+
     getAlgorithms(): Observable<string> {
         const path = this.options.baseurl + "algorithms";
         
diff --git a/api/src/engine/engine.controller.ts b/api/src/engine/engine.controller.ts
index a5bae28..1d158d3 100644
--- a/api/src/engine/engine.controller.ts
+++ b/api/src/engine/engine.controller.ts
@@ -1,12 +1,13 @@
 import { HttpService } from '@nestjs/axios';
-import { Controller, Get, Inject } from '@nestjs/common';
+import { Controller, Get, Inject, Req } from '@nestjs/common';
+import { Request } from 'express';
 import { Observable } from 'rxjs';
 import { ENGINE_SERVICE } from './engine.constants';
 import { IEngineService } from './engine.interfaces';
 
 @Controller()
 export class EngineController {
-  constructor(@Inject(ENGINE_SERVICE) private readonly engineService: IEngineService, private readonly httpService: HttpService) { }
+  constructor(@Inject(ENGINE_SERVICE) private readonly engineService: IEngineService) { }
 
   @Get("/test")
   getTest(): string {
@@ -14,7 +15,13 @@ export class EngineController {
   }
 
   @Get('/algorithms')
-  getAlgorithms(): Observable<string> {
-    return this.engineService.getAlgorithms();
+  getAlgorithms(@Req() request: Request): Observable<string> {
+    return this.engineService.getAlgorithms(request);
   }
+
+  @Get('/experiments')
+  getExperiments(@Req() request: Request): Observable<string> {
+    return this.engineService.getExperiments(request);
+  }
+
 }
diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts
index f9cbacc..84c0a55 100644
--- a/api/src/engine/engine.interfaces.ts
+++ b/api/src/engine/engine.interfaces.ts
@@ -1,3 +1,4 @@
+import { Request } from "express";
 import { Observable } from "rxjs";
 
 export interface IEngineOptions {
@@ -8,5 +9,7 @@ export interface IEngineOptions {
 export interface IEngineService {
     demo(): string;
 
-    getAlgorithms(): Observable<string>;
+    getAlgorithms(request: Request): Observable<string>;
+
+    getExperiments(request: Request): Observable<string>;
 }
\ No newline at end of file
-- 
GitLab