From 411e0970b8661b7a95468d56e831f274216f9126 Mon Sep 17 00:00:00 2001 From: Rainer Killinger Date: Wed, 9 Feb 2022 18:59:55 +0100 Subject: [PATCH] refactor: remove inheritance from daia provider --- .../daia-availability.component.spec.ts | 4 +-- src/app/modules/hebis/daia-data.provider.ts | 30 ++++++++----------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts b/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts index a56538b1..b4cea465 100644 --- a/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts +++ b/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts @@ -102,10 +102,10 @@ describe('DaiaAvailabilityComponent', () => { beforeEach(async () => { dataProvider = TestBed.get(DaiaDataProvider); const workingDAIAurl = 'https://daia.hebis.de/DAIA2/UB_Frankfurt'; - dataProvider.backendUrl = workingDAIAurl; + dataProvider.daiaServiceUrl = workingDAIAurl; translateService = TestBed.get(TranslateService); refresher = jasmine.createSpyObj('refresher', ['complete']); - spyOn(dataProvider, 'get' as any).and.returnValue( + spyOn(dataProvider, 'getAvailability' as any).and.returnValue( Promise.resolve(sampleThing), ); spyOn( diff --git a/src/app/modules/hebis/daia-data.provider.ts b/src/app/modules/hebis/daia-data.provider.ts index ade73256..e787c84d 100644 --- a/src/app/modules/hebis/daia-data.provider.ts +++ b/src/app/modules/hebis/daia-data.provider.ts @@ -13,15 +13,11 @@ * this program. If not, see . */ import {Injectable} from '@angular/core'; -import {Client} from '@openstapps/api/lib/client'; import {SCDaiaAvailabilityResponse, SCDaiaHoldings} from './protocol/response'; import {StorageProvider} from '../storage/storage.provider'; -import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider'; -import {HttpClient} from '@angular/common/http'; -import {DataProvider} from '../data/data.provider'; +import {HttpClient, HttpHeaders} from '@angular/common/http'; import {ConfigProvider} from '../config/config.provider'; import {SCFeatureConfiguration} from '@openstapps/core'; -import {environment} from '../../../environments/environment'; import {NGXLogger} from 'ngx-logger'; /** @@ -33,7 +29,7 @@ import {NGXLogger} from 'ngx-logger'; @Injectable({ providedIn: 'root', }) -export class DaiaDataProvider extends DataProvider { +export class DaiaDataProvider { /** * TODO */ @@ -43,43 +39,41 @@ export class DaiaDataProvider extends DataProvider { configProvider: ConfigProvider; - backendUrl = environment.backend_url; + daiaServiceUrl: string | undefined; + + clientHeaders = new HttpHeaders(); /** * TODO * - * @param stAppsWebHttpClient TODO * @param storageProvider TODO * @param httpClient TODO * @param configProvider TODO * @param logger TODO */ constructor( - stAppsWebHttpClient: StAppsWebHttpClient, storageProvider: StorageProvider, httpClient: HttpClient, configProvider: ConfigProvider, private readonly logger: NGXLogger, ) { - super(stAppsWebHttpClient, storageProvider); this.storageProvider = storageProvider; this.httpClient = httpClient; this.configProvider = configProvider; - this.client = new Client( - stAppsWebHttpClient, - this.backendUrl, - this.appVersion, + this.clientHeaders = this.clientHeaders.set( + 'Content-Type', + 'application/json', ); } async getAvailability(id: string): Promise { - if (this.backendUrl === environment.backend_url) { + if (typeof this.daiaServiceUrl === 'undefined') { try { const features = (await this.configProvider.getValue( 'features', )) as SCFeatureConfiguration; if (features.extern?.daia?.url) { - this.backendUrl = features.extern?.daia?.url; + this.daiaServiceUrl = features.extern?.daia?.url; } else { this.logger.error('Daia service url undefined'); return undefined; @@ -89,9 +83,11 @@ export class DaiaDataProvider extends DataProvider { return undefined; } } + return new Promise(resolve => this.httpClient - .get(this.backendUrl, {params: {id}}) + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + .get(this.daiaServiceUrl!, {params: {id}}) .subscribe( (response: SCDaiaAvailabilityResponse) => { const holdings: SCDaiaHoldings[] = [];