diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts index 8619686de6a377639ea5692bec37808c75af812a..553fb0a9e567040281c9324adf25d83cf1ac6e76 100644 --- a/api/src/engine/connectors/exareme/main.connector.ts +++ b/api/src/engine/connectors/exareme/main.connector.ts @@ -8,6 +8,7 @@ import { } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { Request } from 'express'; +import { IncomingMessage } from 'http'; import { firstValueFrom, map, Observable } from 'rxjs'; import { ENGINE_MODULE_OPTIONS } from 'src/engine/engine.constants'; import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces'; @@ -37,16 +38,23 @@ import { Pathology } from './interfaces/pathology.interface'; @Injectable() export default class ExaremeService implements IEngineService { + headers = {}; constructor( @Inject(ENGINE_MODULE_OPTIONS) private readonly options: IEngineOptions, private readonly httpService: HttpService, - @Inject(REQUEST) private readonly req: Request, - ) {} + @Inject(REQUEST) private readonly req: Request, //TODO: remove inject, set request from manually take care of graphql request + ) { + const gqlRequest = req['req']; // graphql headers exception + this.headers = + gqlRequest && gqlRequest instanceof IncomingMessage + ? gqlRequest.headers + : req.headers; + } async logout() { const path = `${this.options.baseurl}logout`; - await firstValueFrom(this.httpService.get(path)); + await firstValueFrom(this.httpService.get(path, { headers: this.headers })); } async createExperiment( @@ -60,7 +68,7 @@ export default class ExaremeService implements IEngineService { const resultAPI = await firstValueFrom( this.httpService.post<ExperimentData>(path, form, { - headers: this.req.headers, + headers: this.headers, }), ); @@ -73,7 +81,7 @@ export default class ExaremeService implements IEngineService { const resultAPI = await firstValueFrom( this.httpService.get<ExperimentsData>(path, { params: { page, name }, - headers: this.req.headers, + headers: this.headers, }), ); @@ -88,7 +96,7 @@ export default class ExaremeService implements IEngineService { const resultAPI = await firstValueFrom( this.httpService.get<string>(path, { - headers: this.req.headers, + headers: this.headers, }), ); @@ -100,7 +108,7 @@ export default class ExaremeService implements IEngineService { const resultAPI = await firstValueFrom( this.httpService.get<ExperimentData>(path, { - headers: this.req.headers, + headers: this.headers, }), ); @@ -115,7 +123,7 @@ export default class ExaremeService implements IEngineService { const resultAPI = await firstValueFrom( this.httpService.patch<ExperimentData>(path, expriment, { - headers: this.req.headers, + headers: this.headers, }), ); @@ -128,7 +136,7 @@ export default class ExaremeService implements IEngineService { try { await firstValueFrom( this.httpService.delete(path, { - headers: this.req.headers, + headers: this.headers, }), ); return { @@ -145,7 +153,7 @@ export default class ExaremeService implements IEngineService { try { const data = await firstValueFrom( this.httpService.get<Pathology[]>(path, { - headers: this.req.headers, + headers: this.headers, }), ); @@ -249,7 +257,7 @@ export default class ExaremeService implements IEngineService { const path = this.options.baseurl + 'experiments'; return this.httpService - .get<string>(path, { params: this.req.query }) + .get<string>(path, { params: this.req.query, headers: this.headers }) .pipe(map((response) => response.data)); } @@ -257,7 +265,7 @@ export default class ExaremeService implements IEngineService { const path = this.options.baseurl + 'algorithms'; return this.httpService - .get<string>(path, { params: this.req.query }) + .get<string>(path, { params: this.req.query, headers: this.headers }) .pipe(map((response) => response.data)); } @@ -265,7 +273,7 @@ export default class ExaremeService implements IEngineService { const path = this.options.baseurl + suffix; return this.httpService - .get<string>(path, { params: this.req.query }) + .get<string>(path, { params: this.req.query, headers: this.headers }) .pipe(map((response) => response.data)); }