From fd6e5f60a92d38f3f04629e49abf6710e033cc4a Mon Sep 17 00:00:00 2001 From: gccollect <55197763+gccollect@users.noreply.github.com> Date: Wed, 22 May 2024 14:00:00 +0100 Subject: [PATCH] add postprocessor attribute to ScraperConfiguration --- .../data-provider/manual/manual.service.ts | 17 +++++++++++------ .../symbol-profile/symbol-profile.service.ts | 1 + .../scraper-configuration.interface.ts | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 5066a4d3a..387835104 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -256,13 +256,15 @@ export class ManualService implements DataProviderInterface { signal: abortController.signal }); + let factor = isNaN(+scraperConfiguration.postprocessor) + ? 1.0 + : +scraperConfiguration.postprocessor; if (headers['content-type'] === 'application/json') { const data = JSON.parse(body); const value = String( jsonpath.query(data, scraperConfiguration.selector)[0] ); - - return extractNumberFromString({ locale, value }); + return factor * extractNumberFromString({ locale, value }); } else { const $ = cheerio.load(body); @@ -272,10 +274,13 @@ export class ManualService implements DataProviderInterface { } catch {} } - return extractNumberFromString({ - locale, - value: $(scraperConfiguration.selector).first().text() - }); + return ( + factor * + extractNumberFromString({ + locale, + value: $(scraperConfiguration.selector).first().text() + }) + ); } } catch (error) { throw error; diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 915b2f716..fba09d932 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -211,6 +211,7 @@ export class SymbolProfileService { headers: scraperConfiguration.headers as ScraperConfiguration['headers'], locale: scraperConfiguration.locale as string, + postprocessor: scraperConfiguration.postprocessor as string, selector: scraperConfiguration.selector as string, url: scraperConfiguration.url as string }; diff --git a/libs/common/src/lib/interfaces/scraper-configuration.interface.ts b/libs/common/src/lib/interfaces/scraper-configuration.interface.ts index ef5506328..560428070 100644 --- a/libs/common/src/lib/interfaces/scraper-configuration.interface.ts +++ b/libs/common/src/lib/interfaces/scraper-configuration.interface.ts @@ -2,6 +2,7 @@ export interface ScraperConfiguration { defaultMarketPrice?: number; headers?: { [key: string]: string }; locale?: string; + postprocessor?: string; selector: string; url: string; }