Browse Source

Bugfix/fix exception in scraper configuration (#4196)

* Fix exception in scraper configuration

* Update changelog
pull/4197/head
Thomas Kaul 3 days ago
committed by GitHub
parent
commit
ec79a9efb6
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 52
      apps/api/src/services/data-provider/manual/manual.service.ts

1
CHANGELOG.md

@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed ### Fixed
- Fixed an issue with the renaming of activities with type `FEE`, `INTEREST`, `ITEM` or `LIABILITY` - Fixed an issue with the renaming of activities with type `FEE`, `INTEREST`, `ITEM` or `LIABILITY`
- Handled an exception in the scraper configuration introduced by the migration from `got` to `fetch`
## 2.133.1 - 2025-01-09 ## 2.133.1 - 2025-01-09

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

@ -273,38 +273,36 @@ export class ManualService implements DataProviderInterface {
private async scrape( private async scrape(
scraperConfiguration: ScraperConfiguration scraperConfiguration: ScraperConfiguration
): Promise<number> { ): Promise<number> {
try { let locale = scraperConfiguration.locale;
let locale = scraperConfiguration.locale;
const response = await fetch(scraperConfiguration.url, {
headers: scraperConfiguration.headers as HeadersInit,
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
});
if (response.headers['content-type'].includes('application/json')) { const response = await fetch(scraperConfiguration.url, {
const data = await response.json(); headers: scraperConfiguration.headers as HeadersInit,
const value = String( signal: AbortSignal.timeout(
jsonpath.query(data, scraperConfiguration.selector)[0] this.configurationService.get('REQUEST_TIMEOUT')
); )
});
return extractNumberFromString({ locale, value }); if (response.headers['content-type']?.includes('application/json')) {
} else { const data = await response.json();
const $ = cheerio.load(await response.text());
if (!locale) { const value = String(
try { jsonpath.query(data, scraperConfiguration.selector)[0]
locale = $('html').attr('lang'); );
} catch {}
}
return extractNumberFromString({ return extractNumberFromString({ locale, value });
locale, } else {
value: $(scraperConfiguration.selector).first().text() const $ = cheerio.load(await response.text());
});
if (!locale) {
try {
locale = $('html').attr('lang');
} catch {}
} }
} catch (error) {
throw error; return extractNumberFromString({
locale,
value: $(scraperConfiguration.selector).first().text()
});
} }
} }
} }

Loading…
Cancel
Save