Browse Source

Refactoring

pull/5469/head
Thomas Kaul 1 week ago
parent
commit
177ddcbb73
  1. 42
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

42
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -35,6 +35,10 @@ import {
Quote, Quote,
QuoteResponseArray QuoteResponseArray
} from 'yahoo-finance2/esm/src/modules/quote'; } from 'yahoo-finance2/esm/src/modules/quote';
import {
Price,
QuoteSummaryResult
} from 'yahoo-finance2/esm/src/modules/quoteSummary';
import { SearchQuoteNonYahoo } from 'yahoo-finance2/esm/src/modules/search'; import { SearchQuoteNonYahoo } from 'yahoo-finance2/esm/src/modules/search';
@Injectable() @Injectable()
@ -191,10 +195,7 @@ export class YahooFinanceService implements DataProviderInterface {
); );
try { try {
let quotes: Pick< let quotes: Price[] | Quote[] = [];
Quote,
'currency' | 'marketState' | 'regularMarketPrice' | 'symbol'
>[] = [];
try { try {
quotes = await this.yahooFinance.quote(yahooFinanceSymbols); quotes = await this.yahooFinance.quote(yahooFinanceSymbols);
@ -357,23 +358,28 @@ export class YahooFinanceService implements DataProviderInterface {
private async getQuotesWithQuoteSummary(aYahooFinanceSymbols: string[]) { private async getQuotesWithQuoteSummary(aYahooFinanceSymbols: string[]) {
const quoteSummaryPromises = aYahooFinanceSymbols.map((symbol) => { const quoteSummaryPromises = aYahooFinanceSymbols.map((symbol) => {
return this.yahooFinance.quoteSummary(symbol).catch(() => { return this.yahooFinance.quoteSummary(symbol);
Logger.error(
`Could not get quote summary for ${symbol}`,
'YahooFinanceService'
);
return null;
});
}); });
const quoteSummaryItems = await Promise.all(quoteSummaryPromises); const settledResults = await Promise.allSettled(quoteSummaryPromises);
return settledResults
.filter(
(result): result is PromiseFulfilledResult<QuoteSummaryResult> => {
if (result.status === 'rejected') {
Logger.error(
`Could not get quote summary for symbol: ${result.reason}`,
'YahooFinanceService'
);
return quoteSummaryItems return false;
.filter((item) => { }
return item !== null;
}) return true;
.map(({ price }) => { }
return price; )
.map(({ value }) => {
return value.price;
}); });
} }
} }

Loading…
Cancel
Save