|
@ -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); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
const settledResults = await Promise.allSettled(quoteSummaryPromises); |
|
|
|
|
|
|
|
|
|
|
|
return settledResults |
|
|
|
|
|
.filter( |
|
|
|
|
|
(result): result is PromiseFulfilledResult<QuoteSummaryResult> => { |
|
|
|
|
|
if (result.status === 'rejected') { |
|
|
Logger.error( |
|
|
Logger.error( |
|
|
`Could not get quote summary for ${symbol}`, |
|
|
`Could not get quote summary: ${result.reason}`, |
|
|
'YahooFinanceService' |
|
|
'YahooFinanceService' |
|
|
); |
|
|
); |
|
|
return null; |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
const quoteSummaryItems = await Promise.all(quoteSummaryPromises); |
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return quoteSummaryItems |
|
|
return true; |
|
|
.filter((item) => { |
|
|
} |
|
|
return item !== null; |
|
|
) |
|
|
}) |
|
|
.map(({ value }) => { |
|
|
.map(({ price }) => { |
|
|
return value.price; |
|
|
return price; |
|
|
|
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|