@accounter/modern-poalim-scraper
Version:
Modern scraper for Israeli banks (Hapoalim, Isracard, Max)
58 lines • 2 kB
JavaScript
import { v4 as uuidv4 } from 'uuid';
export async function fetchPostWithinPage(page, url, data, extraHeaders = {}) {
return page.evaluate((url, data, extraHeaders) => {
return new Promise((resolve, reject) => {
fetch(url, {
method: 'POST',
body: JSON.stringify(data),
credentials: 'include',
headers: new Headers(Object.assign({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
}, extraHeaders)),
})
.then(result => {
if (result.status === 204) {
// No content response
resolve(null);
}
else {
resolve(result.json());
}
})
.catch(e => {
reject(e);
});
});
}, url, data, extraHeaders);
}
export async function fetchGetWithinPage(page, url) {
return page.evaluate(url => {
return new Promise((resolve, reject) => {
fetch(url, { credentials: 'include' })
.then(result => {
if (result.status === 204) {
resolve(null);
}
else {
resolve(result.json());
}
})
.catch(e => {
reject(e);
});
});
}, url);
}
export async function fetchPoalimXSRFWithinPage(page, url, pageUuid) {
const cookies = await page.cookies();
const XSRFCookie = cookies.find(cookie => cookie.name === 'XSRF-TOKEN');
const headers = {};
if (XSRFCookie != null) {
headers['X-XSRF-TOKEN'] = XSRFCookie.value;
}
headers['pageUuid'] = pageUuid;
headers['uuid'] = uuidv4();
headers['Content-Type'] = 'application/json;charset=UTF-8';
return fetchPostWithinPage(page, url, {}, headers);
}
//# sourceMappingURL=fetch.js.map