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 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

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

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