diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts index bcffa4122950331c28ab9267f2d2387ae67eb61e..7ec3b6d54f9264c324dfa937be0ae6488824daa2 100644 --- a/api/src/engine/connectors/datashield/main.connector.ts +++ b/api/src/engine/connectors/datashield/main.connector.ts @@ -1,19 +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) { } + + demo(): string { + return "datashield"; + } - getExperiments(): Observable<string> { + getExperiment(uuid: string): Observable<string> { throw new Error("Method not implemented."); } - getAlgorithms(): Observable<string> { + deleteExperiment(uuid: string, request: Request): Observable<string> { throw new Error("Method not implemented."); } - demo(): string { - return "datashield"; + 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 ccad44c232a568f2904ef8e5c6d2af95092a7640..bea87321a5e3dd2f85c6fcb4fa92acaeecbb302a 100644 --- a/api/src/engine/connectors/exareme/main.connector.ts +++ b/api/src/engine/connectors/exareme/main.connector.ts @@ -1,10 +1,50 @@ import { HttpService } from "@nestjs/axios"; +import { Request, response } 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, request: Request): Observable<string> { + const path = this.options.baseurl + `experiments/${uuid}`; + //request.query + + return this.httpService.delete(path).pipe( + map(response => response.data) + ) + } + + editExperiment(uuid: string, request: Request): Observable<string> { + const path = this.options.baseurl + `experiments/${uuid}`; + + throw new Error("Method not implemented."); + } + + startExperimentTransient(request: Request): Observable<string> { + const path = this.options.baseurl + "experiments"; + + throw new Error("Method not implemented."); + } + + startExperiment(request: Request): Observable<string> { + const path = this.options.baseurl + "experiments/transient"; + + throw new Error("Method not implemented."); + } + getExperiments(): Observable<string> { const path = this.options.baseurl + "experiments"; @@ -20,8 +60,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 1d158d345d3279b0eab0b48a548beb55fde28085..28aa754d7f1101ad5e31c1189104dd59ddd87b1e 100644 --- a/api/src/engine/engine.controller.ts +++ b/api/src/engine/engine.controller.ts @@ -1,5 +1,4 @@ -import { HttpService } from '@nestjs/axios'; -import { Controller, Get, Inject, Req } 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'; @@ -24,4 +23,28 @@ export class EngineController { 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 84c0a55edb9dbd4ea95ae74c8fe16d849df504dc..861393e5237ab4cf3be73666559143bf7733ef8f 100644 --- a/api/src/engine/engine.interfaces.ts +++ b/api/src/engine/engine.interfaces.ts @@ -12,4 +12,14 @@ export interface IEngineService { 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