Browse Source

Refactoring

pull/2808/head
Thomas Kaul 2 years ago
parent
commit
4300a6fedc
  1. 27
      apps/api/src/app/admin/admin.controller.ts
  2. 10
      apps/api/src/services/data-provider/manual/manual.service.ts

27
apps/api/src/app/admin/admin.controller.ts

@ -3,6 +3,7 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'
import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request.interceptor';
import { ApiService } from '@ghostfolio/api/services/api/api.service';
import { DataGatheringService } from '@ghostfolio/api/services/data-gathering/data-gathering.service';
import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service';
import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
import { PropertyDto } from '@ghostfolio/api/services/property/property.dto';
import {
@ -50,7 +51,6 @@ import { AdminService } from './admin.service';
import { UpdateAssetProfileDto } from './update-asset-profile.dto';
import { UpdateBulkMarketDataDto } from './update-bulk-market-data.dto';
import { UpdateMarketDataDto } from './update-market-data.dto';
import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service';
@Controller('admin')
export class AdminController {
@ -181,20 +181,9 @@ export class AdminController {
});
}
@Post('test-scraper')
@UseGuards(AuthGuard('jwt'))
public async testScraper(
@Body() data: { config: string }
): Promise<{ price: number }> {
const { url, selector } = JSON.parse(data.config);
let price = await this.manualService.scrape(url, selector);
return { price: price };
}
@Get('market-data')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@HasPermission(permissions.accessAdminControl)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async getMarketData(
@Query('assetSubClasses') filterByAssetSubClasses?: string,
@Query('presetId') presetId?: MarketDataPreset,
@ -229,6 +218,18 @@ export class AdminController {
return this.adminService.getMarketDataBySymbol({ dataSource, symbol });
}
@HasPermission(permissions.accessAdminControl)
@Post('test-scraper')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async testScraper(
@Body() data: { config: string }
): Promise<{ price: number }> {
const { url, selector } = JSON.parse(data.config);
const price = await this.manualService.scrape(url, selector);
return { price };
}
@HasPermission(permissions.accessAdminControl)
@Post('market-data/:dataSource/:symbol')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)

10
apps/api/src/services/data-provider/manual/manual.service.ts

@ -7,7 +7,6 @@ import {
} from '@ghostfolio/api/services/interfaces/interfaces';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config';
import {
DATE_FORMAT,
extractNumberFromString,
@ -77,7 +76,6 @@ export class ManualService implements DataProviderInterface {
url
} = symbolProfile.scraperConfiguration ?? {};
Logger.log(symbolProfile);
if (defaultMarketPrice) {
const historical: {
[symbol: string]: { [date: string]: IDataProviderHistoricalResponse };
@ -124,15 +122,17 @@ export class ManualService implements DataProviderInterface {
): Promise<number> {
const abortController = new AbortController();
setTimeout(() => {
abortController.abort();
}, this.configurationService.get('REQUEST_TIMEOUT'));
const { body } = await got(url, {
headers,
// @ts-ignore
signal: abortController.signal
});
setTimeout(() => {
abortController.abort();
}, this.configurationService.get('REQUEST_TIMEOUT'));
const $ = cheerio.load(body);
return extractNumberFromString($(selector).first().text());
}

Loading…
Cancel
Save