import { Controller, Delete, Get, Inject, 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'; import { HeadersInterceptor } from './interceptors/headers.interceptor'; @UseInterceptors(HeadersInterceptor) @Controller() export class EngineController { constructor( @Inject(ENGINE_SERVICE) private readonly engineService: IEngineService, ) {} @Get('/algorithms') getAlgorithms(@Req() request: Request): Observable<string> | string { return this.engineService.getAlgorithmsREST(request); } @Get('/experiments') getExperiments(@Req() request: Request): Observable<string> | string { return this.engineService.getExperiments(request); } @Get('/experiments/:uuid') getExperiment(@Param('uuid') uuid: string): Observable<string> | string { return this.engineService.getExperimentREST(uuid); } @Delete('/experiments/:uuid') deleteExperiment( @Param('uuid') uuid: string, @Req() request: Request, ): Observable<string> | string { return this.engineService.deleteExperiment(uuid, request); } @Patch('/experiments/:uuid') editExperiment( @Param('uuid') uuid: string, @Req() request: Request, ): Observable<string> | string { return this.engineService.editExperimentREST(uuid, request); } @Post('experiments/transient') startExperimentTransient( @Req() request: Request, ): Observable<string> | string { return this.engineService.startExperimentTransient(request); } @Post('experiments') startExperiment(@Req() request: Request): Observable<string> | string { return this.engineService.startExperiment(request); } @Get('activeUser') getActiveUser(@Req() request: Request): Observable<string> | string { return this.engineService.getActiveUser(request); } @Post('activeUser/agreeNDA') agreeNDA(@Req() request: Request): Observable<string> | string { return this.engineService.editActiveUser(request); } }