Browse Source

Improvements after code review

pull/105/head
Thomas 4 years ago
parent
commit
cfa94ef821
  1. 5
      apps/api/src/app/symbol/symbol.controller.ts
  2. 7
      apps/api/src/app/symbol/symbol.service.ts
  3. 13
      apps/api/src/services/data-provider.service.ts
  4. 2
      apps/api/src/services/interfaces/environment.interface.ts

5
apps/api/src/app/symbol/symbol.controller.ts

@ -29,10 +29,11 @@ export class SymbolController {
@Get('lookup') @Get('lookup')
@UseGuards(AuthGuard('jwt')) @UseGuards(AuthGuard('jwt'))
public async lookupSymbol( public async lookupSymbol(
@Query() { query } @Query() { query = '' }
): Promise<{ items: LookupItem[] }> { ): Promise<{ items: LookupItem[] }> {
try { try {
return this.symbolService.lookup(query); const encodedQuery = encodeURIComponent(query.toLowerCase());
return this.symbolService.lookup(encodedQuery);
} catch { } catch {
throw new HttpException( throw new HttpException(
getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR),

7
apps/api/src/app/symbol/symbol.service.ts

@ -25,11 +25,10 @@ export class SymbolService {
}; };
} }
public async lookup(aQuery = ''): Promise<{ items: LookupItem[] }> { public async lookup(aQuery: string): Promise<{ items: LookupItem[] }> {
const query = aQuery.toLowerCase();
const results: { items: LookupItem[] } = { items: [] }; const results: { items: LookupItem[] } = { items: [] };
if (!query) { if (!aQuery) {
return results; return results;
} }
@ -40,7 +39,7 @@ export class SymbolService {
// Add custom symbols // Add custom symbols
const scraperConfigurations = await this.ghostfolioScraperApiService.getScraperConfigurations(); const scraperConfigurations = await this.ghostfolioScraperApiService.getScraperConfigurations();
scraperConfigurations.forEach((scraperConfiguration) => { scraperConfigurations.forEach((scraperConfiguration) => {
if (scraperConfiguration.name.toLowerCase().startsWith(query)) { if (scraperConfiguration.name.toLowerCase().startsWith(aQuery)) {
results.items.push({ results.items.push({
dataSource: DataSource.GHOSTFOLIO, dataSource: DataSource.GHOSTFOLIO,
name: scraperConfiguration.name, name: scraperConfiguration.name,

13
apps/api/src/services/data-provider.service.ts

@ -187,20 +187,17 @@ export class DataProviderService implements DataProviderInterface {
} }
public async search(aSymbol: string) { public async search(aSymbol: string) {
let results: { items: LookupItem[] } = { items: [] }; return this.getDataProvider().search(aSymbol);
}
private getDataProvider() {
switch (this.configurationService.get('DATA_SOURCES')[0]) { switch (this.configurationService.get('DATA_SOURCES')[0]) {
case DataSource.ALPHA_VANTAGE: case DataSource.ALPHA_VANTAGE:
results = await this.alphaVantageService.search(aSymbol); return this.alphaVantageService;
break;
case DataSource.YAHOO: case DataSource.YAHOO:
results = await this.yahooFinanceService.search(aSymbol); return this.yahooFinanceService;
break;
default: default:
console.error('No data provider has been found.');
throw new Error('No data provider has been found.'); throw new Error('No data provider has been found.');
} }
return results;
} }
} }

2
apps/api/src/services/interfaces/environment.interface.ts

@ -4,7 +4,7 @@ export interface Environment extends CleanedEnvAccessors {
ACCESS_TOKEN_SALT: string; ACCESS_TOKEN_SALT: string;
ALPHA_VANTAGE_API_KEY: string; ALPHA_VANTAGE_API_KEY: string;
CACHE_TTL: number; CACHE_TTL: number;
DATA_SOURCES: string[]; DATA_SOURCES: string | string[]; // string is not correct, error in envalid?
ENABLE_FEATURE_CUSTOM_SYMBOLS: boolean; ENABLE_FEATURE_CUSTOM_SYMBOLS: boolean;
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean; ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean;
ENABLE_FEATURE_SOCIAL_LOGIN: boolean; ENABLE_FEATURE_SOCIAL_LOGIN: boolean;

Loading…
Cancel
Save