Browse Source

Support Fear & Greed Index from GHOSTFOLIO data provider for self-hosted environments

pull/7364/head
Thomas Kaul 3 days ago
parent
commit
735c6c3329
  1. 2
      apps/api/src/app/symbol/symbol.module.ts
  2. 14
      apps/api/src/app/symbol/symbol.service.ts
  3. 12
      apps/api/src/services/data-provider/data-provider.service.ts

2
apps/api/src/app/symbol/symbol.module.ts

@ -3,7 +3,6 @@ import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptor
import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module';
import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module';
import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module';
import { PropertyModule } from '@ghostfolio/api/services/property/property.module';
import { Module } from '@nestjs/common';
@ -17,7 +16,6 @@ import { SymbolService } from './symbol.service';
DataProviderModule,
MarketDataModule,
PrismaModule,
PropertyModule,
TransformDataSourceInRequestModule,
TransformDataSourceInResponseModule
],

14
apps/api/src/app/symbol/symbol.service.ts

@ -1,12 +1,10 @@
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { DataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces';
import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import {
ghostfolioFearAndGreedIndexDataSourceCryptocurrencies,
ghostfolioFearAndGreedIndexSymbolCryptocurrencies,
ghostfolioFearAndGreedIndexSymbolStocks,
PROPERTY_API_KEY_GHOSTFOLIO
ghostfolioFearAndGreedIndexSymbolStocks
} from '@ghostfolio/common/config';
import {
DATE_FORMAT,
@ -30,8 +28,7 @@ export class SymbolService {
public constructor(
private readonly dataProviderService: DataProviderService,
private readonly marketDataService: MarketDataService,
private readonly propertyService: PropertyService
private readonly marketDataService: MarketDataService
) {}
public async get({
@ -136,12 +133,7 @@ export class SymbolService {
}: {
includeHistoricalData: number;
}): Promise<MarketDataOfMarketsResponse> {
const hasApiKeyForDataProviderGhostfolio =
!!(await this.propertyService.getByKey<string>(
PROPERTY_API_KEY_GHOSTFOLIO
));
if (hasApiKeyForDataProviderGhostfolio) {
if (await this.dataProviderService.isDataProviderGhostfolioConfigured()) {
return this.dataProviderService.getMarketDataOfMarkets({
includeHistoricalData
});

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

@ -195,11 +195,7 @@ export class DataProviderService implements OnModuleInit {
return DataSource[dataSource];
});
const ghostfolioApiKey = await this.propertyService.getByKey<string>(
PROPERTY_API_KEY_GHOSTFOLIO
);
if (ghostfolioApiKey) {
if (await this.isDataProviderGhostfolioConfigured()) {
dataSources.push('GHOSTFOLIO');
}
@ -824,6 +820,12 @@ export class DataProviderService implements OnModuleInit {
return response;
}
public async isDataProviderGhostfolioConfigured(): Promise<boolean> {
return !!(await this.propertyService.getByKey<string>(
PROPERTY_API_KEY_GHOSTFOLIO
));
}
public async search({
includeIndices = false,
query,

Loading…
Cancel
Save