diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts index 35b61aff43aeae7953690e3cb46625071faa4d0b..dc9b74ea9107c40f69719813d4c62ba1d41c8ad1 100644 --- a/api/src/engine/connectors/exareme/main.connector.ts +++ b/api/src/engine/connectors/exareme/main.connector.ts @@ -3,10 +3,13 @@ import { BadRequestException, HttpException, HttpStatus, + Inject, Injectable, } from '@nestjs/common'; +import { REQUEST } from '@nestjs/core'; import { Request } from 'express'; import { firstValueFrom, map, Observable } from 'rxjs'; +import { ENGINE_MODULE_OPTIONS } from 'src/engine/engine.constants'; import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces'; import { Domain } from 'src/engine/models/domain.model'; import { Algorithm } from 'src/engine/models/experiment/algorithm.model'; @@ -35,8 +38,9 @@ import { Pathology } from './interfaces/pathology.interface'; @Injectable() export default class ExaremeService implements IEngineService { constructor( - private readonly options: IEngineOptions, + @Inject(ENGINE_MODULE_OPTIONS) private readonly options: IEngineOptions, private readonly httpService: HttpService, + @Inject(REQUEST) private readonly req: Request, ) {} async logout() { @@ -158,11 +162,11 @@ export default class ExaremeService implements IEngineService { .pipe(map((response) => response.data)); } - editActiveUser(request: Request): Observable<string> { + editActiveUser(): Observable<string> { const path = this.options.baseurl + 'activeUser/agreeNDA'; return this.httpService - .post<string>(path, request.body) + .post<string>(path, this.req.body) .pipe(map((response) => response.data)); } @@ -180,43 +184,43 @@ export default class ExaremeService implements IEngineService { return this.httpService.delete(path).pipe(map((response) => response.data)); } - editExperimentREST(uuid: string, request: Request): Observable<string> { + editExperimentREST(uuid: string): Observable<string> { const path = this.options.baseurl + `experiments/${uuid}`; return this.httpService - .patch(path, request.body) + .patch(path, this.req.body) .pipe(map((response) => response.data)); } - startExperimentTransient(request: Request): Observable<string> { + startExperimentTransient(): Observable<string> { const path = this.options.baseurl + 'experiments/transient'; return this.httpService - .post(path, request.body) + .post(path, this.req.body) .pipe(map((response) => response.data)); } - startExperiment(request: Request): Observable<string> { + startExperiment(): Observable<string> { const path = this.options.baseurl + 'experiments'; return this.httpService - .post(path, request.body) + .post(path, this.req.body) .pipe(map((response) => response.data)); } - getExperiments(request: Request): Observable<string> { + getExperiments(): Observable<string> { const path = this.options.baseurl + 'experiments'; return this.httpService - .get<string>(path, { params: request.query }) + .get<string>(path, { params: this.req.query }) .pipe(map((response) => response.data)); } - getAlgorithmsREST(request: Request): Observable<string> { + getAlgorithmsREST(): Observable<string> { const path = this.options.baseurl + 'algorithms'; return this.httpService - .get<string>(path, { params: request.query }) + .get<string>(path, { params: this.req.query }) .pipe(map((response) => response.data)); } diff --git a/api/src/engine/engine.controller.ts b/api/src/engine/engine.controller.ts index 266f1a28e4531edb1b3776a701ab2c3715197d95..d7f34d493e03ae0f08401baf9aab1b888851b9f9 100644 --- a/api/src/engine/engine.controller.ts +++ b/api/src/engine/engine.controller.ts @@ -6,10 +6,8 @@ import { Param, Patch, Post, - Req, UseInterceptors, } from '@nestjs/common'; -import { Request } from 'express'; import { Observable } from 'rxjs'; import { ENGINE_SERVICE } from './engine.constants'; import { IEngineService } from './engine.interfaces'; @@ -23,13 +21,13 @@ export class EngineController { ) {} @Get('/algorithms') - getAlgorithms(@Req() request: Request): Observable<string> | string { - return this.engineService.getAlgorithmsREST(request); + getAlgorithms(): Observable<string> | string { + return this.engineService.getAlgorithmsREST(); } @Get('/experiments') - getExperiments(@Req() request: Request): Observable<string> | string { - return this.engineService.getExperiments(request); + getExperiments(): Observable<string> | string { + return this.engineService.getExperiments(); } @Get('/experiments/:uuid') @@ -38,41 +36,33 @@ export class EngineController { } @Delete('/experiments/:uuid') - deleteExperiment( - @Param('uuid') uuid: string, - @Req() request: Request, - ): Observable<string> | string { - return this.engineService.deleteExperiment(uuid, request); + deleteExperiment(@Param('uuid') uuid: string): Observable<string> | string { + return this.engineService.deleteExperiment(uuid); } @Patch('/experiments/:uuid') - editExperiment( - @Param('uuid') uuid: string, - @Req() request: Request, - ): Observable<string> | string { - return this.engineService.editExperimentREST(uuid, request); + editExperiment(@Param('uuid') uuid: string): Observable<string> | string { + return this.engineService.editExperimentREST(uuid); } @Post('experiments/transient') - startExperimentTransient( - @Req() request: Request, - ): Observable<string> | string { - return this.engineService.startExperimentTransient(request); + startExperimentTransient(): Observable<string> | string { + return this.engineService.startExperimentTransient(); } @Post('experiments') - startExperiment(@Req() request: Request): Observable<string> | string { - return this.engineService.startExperiment(request); + startExperiment(): Observable<string> | string { + return this.engineService.startExperiment(); } @Get('activeUser') - getActiveUser(@Req() request: Request): Observable<string> | string { - return this.engineService.getActiveUser(request); + getActiveUser(): Observable<string> | string { + return this.engineService.getActiveUser(); } @Post('activeUser/agreeNDA') - agreeNDA(@Req() request: Request): Observable<string> | string { - return this.engineService.editActiveUser(request); + agreeNDA(): Observable<string> | string { + return this.engineService.editActiveUser(); } @Get('logout') diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts index 331ffe7fec9a53a3ed62e87b23283d0e8b393580..29e57f161a8dc2a69c747d415fa529b4c986002a 100644 --- a/api/src/engine/engine.interfaces.ts +++ b/api/src/engine/engine.interfaces.ts @@ -1,4 +1,3 @@ -import { Request } from 'express'; import { Observable } from 'rxjs'; import { Domain } from './models/domain.model'; import { Algorithm } from './models/experiment/algorithm.model'; @@ -43,26 +42,23 @@ export interface IEngineService { getAlgorithms(): Promise<Algorithm[]> | Algorithm[]; // Standard REST API call - getAlgorithmsREST(request: Request): Observable<string> | string; + getAlgorithmsREST(): Observable<string> | string; - getExperiments(request: Request): Observable<string> | string; + getExperiments(): Observable<string> | string; getExperimentREST(uuid: string): Observable<string> | string; - deleteExperiment(uuid: string, request: Request): Observable<string> | string; + deleteExperiment(uuid: string): Observable<string> | string; - editExperimentREST( - uuid: string, - request: Request, - ): Observable<string> | string; + editExperimentREST(uuid: string): Observable<string> | string; - startExperimentTransient(request: Request): Observable<string> | string; + startExperimentTransient(): Observable<string> | string; - startExperiment(request: Request): Observable<string> | string; + startExperiment(): Observable<string> | string; - getActiveUser(request: Request): Observable<string> | string; + getActiveUser(): Observable<string> | string; - editActiveUser(request: Request): Observable<string> | string; + editActiveUser(): Observable<string> | string; logout(): void; } diff --git a/api/src/engine/engine.module.ts b/api/src/engine/engine.module.ts index 182cecf3e7d8239e734071c07a797dcaefb86961..48442588a8d1a2c5120e99fa15d60e7da3c29739 100644 --- a/api/src/engine/engine.module.ts +++ b/api/src/engine/engine.module.ts @@ -1,5 +1,6 @@ import { HttpModule, HttpService } from '@nestjs/axios'; import { DynamicModule, Global, Logger, Module } from '@nestjs/common'; +import { REQUEST } from '@nestjs/core'; import { GraphQLModule } from '@nestjs/graphql'; import { join } from 'path'; import { ENGINE_MODULE_OPTIONS, ENGINE_SERVICE } from './engine.constants'; @@ -20,10 +21,10 @@ export class EngineModule { const engineProvider = { provide: ENGINE_SERVICE, - useFactory: async (httpService: HttpService) => { - return await this.createEngineConnection(options, httpService); + useFactory: async (httpService: HttpService, req: Request) => { + return await this.createEngineConnection(options, httpService, req); }, - inject: [HttpService], + inject: [HttpService, REQUEST], }; return { @@ -43,14 +44,13 @@ export class EngineModule { private static async createEngineConnection( options: IEngineOptions, httpService: HttpService, + req: Request, ): Promise<IEngineService> { try { const service = await import( `./connectors/${options.type}/main.connector` ); - const engine = new service.default(options, httpService); - - this.logger.log(`The connector '${options.type}' has been loaded`); + const engine = new service.default(options, httpService, req); return engine; } catch {