|
|
@ -20,7 +20,10 @@ import Big from 'big.js';
|
|
|
|
import { countries } from 'countries-list';
|
|
|
|
import { countries } from 'countries-list';
|
|
|
|
import { addDays, format, isSameDay } from 'date-fns';
|
|
|
|
import { addDays, format, isSameDay } from 'date-fns';
|
|
|
|
import yahooFinance from 'yahoo-finance2';
|
|
|
|
import yahooFinance from 'yahoo-finance2';
|
|
|
|
import type { Price } from 'yahoo-finance2/dist/esm/src/modules/quoteSummary-iface';
|
|
|
|
import type {
|
|
|
|
|
|
|
|
Price,
|
|
|
|
|
|
|
|
QuoteSummaryResult
|
|
|
|
|
|
|
|
} from 'yahoo-finance2/dist/esm/src/modules/quoteSummary-iface';
|
|
|
|
|
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
@Injectable()
|
|
|
|
export class YahooFinanceService implements DataProviderInterface {
|
|
|
|
export class YahooFinanceService implements DataProviderInterface {
|
|
|
@ -89,8 +92,7 @@ export class YahooFinanceService implements DataProviderInterface {
|
|
|
|
response.assetSubClass = assetSubClass;
|
|
|
|
response.assetSubClass = assetSubClass;
|
|
|
|
response.currency = assetProfile.price.currency;
|
|
|
|
response.currency = assetProfile.price.currency;
|
|
|
|
response.dataSource = this.getName();
|
|
|
|
response.dataSource = this.getName();
|
|
|
|
response.name =
|
|
|
|
response.name = this.formatName(assetProfile);
|
|
|
|
assetProfile.price.longName || assetProfile.price.shortName || symbol;
|
|
|
|
|
|
|
|
response.symbol = aSymbol;
|
|
|
|
response.symbol = aSymbol;
|
|
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
if (
|
|
|
@ -296,6 +298,25 @@ export class YahooFinanceService implements DataProviderInterface {
|
|
|
|
return { items };
|
|
|
|
return { items };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private formatName(aAssetProfile: QuoteSummaryResult) {
|
|
|
|
|
|
|
|
let name = aAssetProfile.price.longName;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (name) {
|
|
|
|
|
|
|
|
name = name.replace('iShares ETF (CH) - ', '');
|
|
|
|
|
|
|
|
name = name.replace('iShares III Public Limited Company - ', '');
|
|
|
|
|
|
|
|
name = name.replace('iShares VI Public Limited Company - ', '');
|
|
|
|
|
|
|
|
name = name.replace('iShares VII PLC - ', '');
|
|
|
|
|
|
|
|
name = name.replace('Multi Units Luxembourg - ', '');
|
|
|
|
|
|
|
|
name = name.replace('VanEck ETFs N.V. - ', '');
|
|
|
|
|
|
|
|
name = name.replace('Vaneck Vectors Ucits Etfs Plc - ', '');
|
|
|
|
|
|
|
|
name = name.replace('Vanguard Funds Public Limited Company - ', '');
|
|
|
|
|
|
|
|
name = name.replace('Vanguard Index Funds - ', '');
|
|
|
|
|
|
|
|
name = name.replace('Xtrackers (IE) Plc - ', '');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return name || aAssetProfile.price.shortName || aAssetProfile.price.symbol;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private parseAssetClass(aPrice: Price): {
|
|
|
|
private parseAssetClass(aPrice: Price): {
|
|
|
|
assetClass: AssetClass;
|
|
|
|
assetClass: AssetClass;
|
|
|
|
assetSubClass: AssetSubClass;
|
|
|
|
assetSubClass: AssetSubClass;
|
|
|
|