Browse Source

Feature: refactor Trackinsight symbol search for improved clarity and error handling

pull/4296/head
Guillermo Fernandez 7 months ago
committed by Thomas Kaul
parent
commit
e7ead647a0
  1. 68
      apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts

68
apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts

@ -44,15 +44,13 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface {
return response; return response;
} }
let trackinsightSymbol = await this.searchTrackinsightSymbol( const trackinsightSymbol = await this.searchTrackinsightSymbol({
symbol, requestTimeout,
requestTimeout symbol
); });
if (trackinsightSymbol === '') {
trackinsightSymbol = await this.searchTrackinsightSymbol( if (!trackinsightSymbol) {
symbol.split('.')?.[0], return response;
requestTimeout
);
} }
const profile = await fetch( const profile = await fetch(
@ -158,11 +156,22 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface {
return Promise.resolve(response); return Promise.resolve(response);
} }
private async searchTrackinsightSymbol( public getName() {
symbol, return 'TRACKINSIGHT';
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') }
) {
return await fetch( public getTestSymbol() {
return 'QQQ';
}
private async searchTrackinsightSymbol({
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'),
symbol
}: {
symbol: string;
requestTimeout: number;
}) {
const newSymbol = await fetch(
`https://www.trackinsight.com/search-api/search_v2/${symbol}/_/ticker/default/0/3`, `https://www.trackinsight.com/search-api/search_v2/${symbol}/_/ticker/default/0/3`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
@ -174,18 +183,31 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface {
// Return the only ticker that matches the one in the search // Return the only ticker that matches the one in the search
return jsonRes['results']['docs'][0]['ticker']; return jsonRes['results']['docs'][0]['ticker'];
} }
return ''; return undefined;
}) })
.catch(() => { .catch(() => {
return ''; return undefined;
}); });
} if (newSymbol) {
return newSymbol;
public getName() { }
return 'TRACKINSIGHT';
}
public getTestSymbol() { return await fetch(
return 'QQQ'; `https://www.trackinsight.com/search-api/search_v2/${symbol.split('.')?.[0]}/_/ticker/default/0/3`,
{
signal: AbortSignal.timeout(requestTimeout)
}
)
.then((res) => res.json())
.then((jsonRes) => {
if (jsonRes['results']['count'] === 1) {
// Return the only ticker that matches the one in the search
return jsonRes['results']['docs'][0]['ticker'];
}
return undefined;
})
.catch(() => {
return undefined;
});
} }
} }

Loading…
Cancel
Save