Browse Source

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

pull/7364/head
Thomas Kaul 4 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 { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module';
import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module';
import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module';
import { PropertyModule } from '@ghostfolio/api/services/property/property.module';
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
@ -17,7 +16,6 @@ import { SymbolService } from './symbol.service';
DataProviderModule, DataProviderModule,
MarketDataModule, MarketDataModule,
PrismaModule, PrismaModule,
PropertyModule,
TransformDataSourceInRequestModule, TransformDataSourceInRequestModule,
TransformDataSourceInResponseModule 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 { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { DataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces'; import { DataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces';
import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { import {
ghostfolioFearAndGreedIndexDataSourceCryptocurrencies, ghostfolioFearAndGreedIndexDataSourceCryptocurrencies,
ghostfolioFearAndGreedIndexSymbolCryptocurrencies, ghostfolioFearAndGreedIndexSymbolCryptocurrencies,
ghostfolioFearAndGreedIndexSymbolStocks, ghostfolioFearAndGreedIndexSymbolStocks
PROPERTY_API_KEY_GHOSTFOLIO
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { import {
DATE_FORMAT, DATE_FORMAT,
@ -30,8 +28,7 @@ export class SymbolService {
public constructor( public constructor(
private readonly dataProviderService: DataProviderService, private readonly dataProviderService: DataProviderService,
private readonly marketDataService: MarketDataService, private readonly marketDataService: MarketDataService
private readonly propertyService: PropertyService
) {} ) {}
public async get({ public async get({
@ -136,12 +133,7 @@ export class SymbolService {
}: { }: {
includeHistoricalData: number; includeHistoricalData: number;
}): Promise<MarketDataOfMarketsResponse> { }): Promise<MarketDataOfMarketsResponse> {
const hasApiKeyForDataProviderGhostfolio = if (await this.dataProviderService.isDataProviderGhostfolioConfigured()) {
!!(await this.propertyService.getByKey<string>(
PROPERTY_API_KEY_GHOSTFOLIO
));
if (hasApiKeyForDataProviderGhostfolio) {
return this.dataProviderService.getMarketDataOfMarkets({ return this.dataProviderService.getMarketDataOfMarkets({
includeHistoricalData includeHistoricalData
}); });

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

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

Loading…
Cancel
Save