Browse Source

Task/mask Ghostfolio data source (#7139)

* Mask Ghostfolio data source
pull/7138/head
Thomas Kaul 2 days ago
committed by GitHub
parent
commit
1efb5d241c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 13
      apps/api/src/helper/data-source.helper.ts
  2. 12
      apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts
  3. 12
      apps/api/src/services/data-provider/data-provider.service.ts

13
apps/api/src/helper/data-source.helper.ts

@ -0,0 +1,13 @@
import { DataSource } from '@prisma/client';
export function getMaskedGhostfolioDataSource({
dataSource,
ghostfolioDataSources
}: {
dataSource: DataSource;
ghostfolioDataSources: string[];
}) {
return ghostfolioDataSources.includes(dataSource)
? DataSource.GHOSTFOLIO
: dataSource;
}

12
apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts

@ -1,3 +1,4 @@
import { getMaskedGhostfolioDataSource } from '@ghostfolio/api/helper/data-source.helper';
import { redactPaths } from '@ghostfolio/api/helper/object.helper';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { encodeDataSource } from '@ghostfolio/common/helper';
@ -51,10 +52,15 @@ export class TransformDataSourceInResponseInterceptor<
const valueMap = this.encodedDataSourceMap;
if (isExportMode) {
for (const dataSource of this.configurationService.get(
const ghostfolioDataSources = this.configurationService.get(
'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER'
)) {
valueMap[dataSource] = 'GHOSTFOLIO';
) as DataSource[];
for (const dataSource of ghostfolioDataSources) {
valueMap[dataSource] = getMaskedGhostfolioDataSource({
dataSource,
ghostfolioDataSources
});
}
}

12
apps/api/src/services/data-provider/data-provider.service.ts

@ -1,5 +1,6 @@
import { ImportDataDto } from '@ghostfolio/api/app/import/import-data.dto';
import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service';
import { getMaskedGhostfolioDataSource } from '@ghostfolio/api/helper/data-source.helper';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface';
import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
@ -221,6 +222,9 @@ export class DataProviderService implements OnModuleInit {
} = {};
const dataSources = await this.getDataSources();
const ghostfolioDataSources = this.configurationService.get(
'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER'
);
for (const [
index,
@ -228,6 +232,10 @@ export class DataProviderService implements OnModuleInit {
] of activitiesDto.entries()) {
const activityPath =
maxActivitiesToImport === 1 ? 'activity' : `activities.${index}`;
const maskedDataSource = getMaskedGhostfolioDataSource({
dataSource,
ghostfolioDataSources
});
if (!dataSources.includes(dataSource)) {
throw new Error(
@ -243,7 +251,7 @@ export class DataProviderService implements OnModuleInit {
if (dataProvider.getDataProviderInfo().isPremium) {
throw new Error(
`${activityPath}.dataSource ("${dataSource}") is not valid`
`${activityPath}.dataSource ("${maskedDataSource}") requires Ghostfolio Premium`
);
}
}
@ -306,7 +314,7 @@ export class DataProviderService implements OnModuleInit {
if (!assetProfile?.name) {
throw new Error(
`activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${dataSource}")`
`activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${maskedDataSource}")`
);
}

Loading…
Cancel
Save