diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts index 643cd6dadd4955e6a85a875dc2819f5dc208db29..7ec3b6d54f9264c324dfa937be0ae6488824daa2 100644 --- a/api/src/engine/connectors/datashield/main.connector.ts +++ b/api/src/engine/connectors/datashield/main.connector.ts @@ -1,15 +1,40 @@ import { HttpService } from "@nestjs/axios"; +import { Request } from "express"; import { Observable } from "rxjs"; import { IEngineOptions, IEngineService } from "src/engine/engine.interfaces"; export default class DataShieldService implements IEngineService { constructor(private readonly options: IEngineOptions, private readonly httpService: HttpService) { } - getAlgorithms(): Observable<string> { + demo(): string { + return "datashield"; + } + + getExperiment(uuid: string): Observable<string> { throw new Error("Method not implemented."); } - demo(): string { - return "datashield"; + deleteExperiment(uuid: string, request: Request): Observable<string> { + throw new Error("Method not implemented."); + } + + editExperiment(uuid: string, request: Request): Observable<string> { + throw new Error("Method not implemented."); + } + + startExperimentTransient(request: Request): Observable<string> { + throw new Error("Method not implemented."); + } + + startExperiment(request: Request): Observable<string> { + throw new Error("Method not implemented."); + } + + getExperiments(): Observable<string> { + throw new Error("Method not implemented."); + } + + getAlgorithms(): Observable<string> { + throw new Error("Method not implemented."); } } \ No newline at end of file diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts index 10aa6527111885ca57e7898d85b69d47f03ede18..681e43be17165758634a7086e881c39beaf4b75f 100644 --- a/api/src/engine/connectors/exareme/main.connector.ts +++ b/api/src/engine/connectors/exareme/main.connector.ts @@ -1,10 +1,63 @@ import { HttpService } from "@nestjs/axios"; +import { Request } from "express"; import { map, Observable } from "rxjs"; import { IEngineOptions, IEngineService } from "src/engine/engine.interfaces"; export default class ExaremeService implements IEngineService { constructor(private readonly options: IEngineOptions, private readonly httpService: HttpService) { } + demo(): string { + return "exareme" + } + + getExperiment(uuid: string): Observable<string> { + const path = this.options.baseurl + `experiments/${uuid}`; + + return this.httpService.get<string>(path).pipe( + map(response => response.data) + ); + } + + deleteExperiment(uuid: string): Observable<string> { + const path = this.options.baseurl + `experiments/${uuid}`; + + return this.httpService.delete(path).pipe( + map(response => response.data) + ) + } + + editExperiment(uuid: string, request: Request): Observable<string> { + const path = this.options.baseurl + `experiments/${uuid}`; + + return this.httpService.post(path,request.body).pipe( + map(response => response.data) + ) + } + + startExperimentTransient(request: Request): Observable<string> { + const path = this.options.baseurl + "experiments/transient"; + + return this.httpService.post(path, request.body).pipe( + map(response => response.data) + ) + } + + startExperiment(request: Request): Observable<string> { + const path = this.options.baseurl + "experiments"; + + return this.httpService.post(path, request.body).pipe( + map(response => response.data) + ) + } + + 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"; @@ -12,8 +65,4 @@ export default class ExaremeService implements IEngineService { map(response => response.data) ); } - - demo(): string { - return "exareme" - } } \ No newline at end of file diff --git a/api/src/engine/engine.controller.ts b/api/src/engine/engine.controller.ts index a5bae286a29e3894151772cf53ffcc44b4901f7f..28aa754d7f1101ad5e31c1189104dd59ddd87b1e 100644 --- a/api/src/engine/engine.controller.ts +++ b/api/src/engine/engine.controller.ts @@ -1,12 +1,12 @@ -import { HttpService } from '@nestjs/axios'; -import { Controller, Get, Inject } from '@nestjs/common'; +import { Controller, Delete, Get, Inject, Param, Patch, Post, 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 +14,37 @@ 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); + } + + @Get("/experiments/:uuid") + getExperiment(@Param('uuid') uuid: string): Observable<string> { + return this.engineService.getExperiment(uuid); + } + + @Delete("/experiments/:uuid") + deleteExperiment(@Param('uuid') uuid: string, @Req() request: Request): Observable<string> { + return this.engineService.deleteExperiment(uuid, request); + } + + @Patch("/experiments/:uuid") + editExperiment(@Param('uuid') uuid: string, @Req() request: Request): Observable<string> { + return this.engineService.editExperiment(uuid, request); + } + + @Post("experiments/transient") + startExperimentTransient(@Req() request: Request): Observable<string> { + return this.engineService.startExperimentTransient(request); + } + + @Post("experiments") + startExperiment(@Req() request: Request): Observable<string> { + return this.engineService.startExperiment(request); } } diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts index f9cbacc686ab0c60abc5321904aa25e00f304618..861393e5237ab4cf3be73666559143bf7733ef8f 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,17 @@ export interface IEngineOptions { export interface IEngineService { demo(): string; - getAlgorithms(): Observable<string>; + getAlgorithms(request: Request): Observable<string>; + + getExperiments(request: Request): Observable<string>; + + getExperiment(uuid: string): Observable<string>; + + deleteExperiment(uuid: string, request: Request): Observable<string>; + + editExperiment(uuid: string, request: Request): Observable<string>; + + startExperimentTransient(request: Request): Observable<string>; + + startExperiment(request: Request): Observable<string>; } \ No newline at end of file