Browse Source

Introduce countries mapping

pull/6005/head
Thomas Kaul 4 weeks ago
parent
commit
4fa3ed2e78
  1. 22
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

22
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -44,6 +44,12 @@ import {
@Injectable()
export class FinancialModelingPrepService implements DataProviderInterface {
private static countriesMapping = {
'Korea (the Republic of)': 'South Korea',
'Russian Federation': 'Russia',
'Taiwan (Province of China)': 'Taiwan'
};
private apiKey: string;
public constructor(
@ -121,12 +127,19 @@ export class FinancialModelingPrepService implements DataProviderInterface {
}
).then((res) => res.json());
response.countries = etfCountryWeightings.map(
({ country: countryName, weightPercentage }) => {
response.countries = etfCountryWeightings
.filter(({ country: countryName }) => {
return countryName !== 'Other';
})
.map(({ country: countryName, weightPercentage }) => {
let countryCode: string;
for (const [code, country] of Object.entries(countries)) {
if (country.name === countryName) {
if (
country.name === countryName ||
country.name ===
FinancialModelingPrepService.countriesMapping[countryName]
) {
countryCode = code;
break;
}
@ -136,8 +149,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
code: countryCode,
weight: parseFloat(weightPercentage.slice(0, -1)) / 100
};
}
);
});
const etfHoldings = await fetch(
`${this.getUrl({ version: 'stable' })}/etf/holdings?symbol=${symbol}&apikey=${this.apiKey}`,

Loading…
Cancel
Save