|
|
@ -32,6 +32,7 @@ import { |
|
|
Get, |
|
|
Get, |
|
|
HttpException, |
|
|
HttpException, |
|
|
Inject, |
|
|
Inject, |
|
|
|
|
|
Logger, |
|
|
Param, |
|
|
Param, |
|
|
Patch, |
|
|
Patch, |
|
|
Post, |
|
|
Post, |
|
|
@ -218,17 +219,29 @@ export class AdminController { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@HasPermission(permissions.accessAdminControl) |
|
|
@HasPermission(permissions.accessAdminControl) |
|
|
@Post('test-scraper') |
|
|
@Post('market-data/:dataSource/:symbol/test') |
|
|
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) |
|
|
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) |
|
|
public async testScraper( |
|
|
public async testMarketData( |
|
|
@Body() data: { config: string } |
|
|
@Body() data: { scraperConfiguration: string }, |
|
|
|
|
|
@Param('dataSource') dataSource: DataSource, |
|
|
|
|
|
@Param('symbol') symbol: string |
|
|
): Promise<{ price: number }> { |
|
|
): Promise<{ price: number }> { |
|
|
const { selector, url } = JSON.parse(data.config); |
|
|
try { |
|
|
const price = await this.manualService.scrape(url, selector); |
|
|
const { headers, selector, url } = JSON.parse(data.scraperConfiguration); |
|
|
|
|
|
const price = await this.manualService.test({ headers, selector, url }); |
|
|
|
|
|
|
|
|
|
|
|
if (price) { |
|
|
return { price }; |
|
|
return { price }; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
throw new Error('Could not parse the current market price'); |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
Logger.error(error); |
|
|
|
|
|
|
|
|
|
|
|
throw new HttpException(error.message, StatusCodes.BAD_REQUEST); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@HasPermission(permissions.accessAdminControl) |
|
|
@HasPermission(permissions.accessAdminControl) |
|
|
@Post('market-data/:dataSource/:symbol') |
|
|
@Post('market-data/:dataSource/:symbol') |
|
|
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) |
|
|
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) |
|
|
|