israeli-bank-scrapers
Version:
Provide scrapers for all major Israeli banks and credit card companies
99 lines (98 loc) • 11.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchGet = fetchGet;
exports.fetchGetWithinPage = fetchGetWithinPage;
exports.fetchGraphql = fetchGraphql;
exports.fetchPost = fetchPost;
exports.fetchPostWithinPage = fetchPostWithinPage;
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const JSON_CONTENT_TYPE = 'application/json';
function getJsonHeaders() {
return {
Accept: JSON_CONTENT_TYPE,
'Content-Type': JSON_CONTENT_TYPE
};
}
async function fetchGet(url, extraHeaders) {
let headers = getJsonHeaders();
if (extraHeaders) {
headers = Object.assign(headers, extraHeaders);
}
const request = {
method: 'GET',
headers
};
const fetchResult = await (0, _nodeFetch.default)(url, request);
if (fetchResult.status !== 200) {
throw new Error(`sending a request to the institute server returned with status code ${fetchResult.status}`);
}
return fetchResult.json();
}
async function fetchPost(url, data, extraHeaders = {}) {
const request = {
method: 'POST',
headers: {
...getJsonHeaders(),
...extraHeaders
},
body: JSON.stringify(data)
};
const result = await (0, _nodeFetch.default)(url, request);
return result.json();
}
async function fetchGraphql(url, query, variables = {}, extraHeaders = {}) {
const result = await fetchPost(url, {
operationName: null,
query,
variables
}, extraHeaders);
if (result.errors?.length) {
throw new Error(result.errors[0].message);
}
return result.data;
}
function fetchGetWithinPage(page, url) {
return page.evaluate(innerUrl => {
return new Promise((resolve, reject) => {
fetch(innerUrl, {
credentials: 'include'
}).then(result => {
if (result.status === 204) {
resolve(null);
} else {
resolve(result.json());
}
}).catch(e => {
reject(e);
});
});
}, url);
}
function fetchPostWithinPage(page, url, data, extraHeaders = {}) {
return page.evaluate((innerUrl, innerData, innerExtraHeaders) => {
return new Promise((resolve, reject) => {
fetch(innerUrl, {
method: 'POST',
body: JSON.stringify(innerData),
credentials: 'include',
// eslint-disable-next-line prefer-object-spread
headers: Object.assign({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}, innerExtraHeaders)
}).then(result => {
if (result.status === 204) {
// No content response
resolve(null);
} else {
resolve(result.json());
}
}).catch(e => {
reject(e);
});
});
}, url, data, extraHeaders);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGhlbiIsImNhdGNoIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImlubmVyRGF0YSIsImlubmVyRXh0cmFIZWFkZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvZmV0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vZGVGZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmNvbnN0IEpTT05fQ09OVEVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuXG5mdW5jdGlvbiBnZXRKc29uSGVhZGVycygpIHtcbiAgcmV0dXJuIHtcbiAgICBBY2NlcHQ6IEpTT05fQ09OVEVOVF9UWVBFLFxuICAgICdDb250ZW50LVR5cGUnOiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoR2V0PFRSZXN1bHQ+KHVybDogc3RyaW5nLCBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgbGV0IGhlYWRlcnMgPSBnZXRKc29uSGVhZGVycygpO1xuICBpZiAoZXh0cmFIZWFkZXJzKSB7XG4gICAgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oaGVhZGVycywgZXh0cmFIZWFkZXJzKTtcbiAgfVxuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVycyxcbiAgfTtcbiAgY29uc3QgZmV0Y2hSZXN1bHQgPSBhd2FpdCBub2RlRmV0Y2godXJsLCByZXF1ZXN0KTtcblxuICBpZiAoZmV0Y2hSZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSBpbnN0aXR1dGUgc2VydmVyIHJldHVybmVkIHdpdGggc3RhdHVzIGNvZGUgJHtmZXRjaFJlc3VsdC5zdGF0dXN9YCk7XG4gIH1cblxuICByZXR1cm4gZmV0Y2hSZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3N0KHVybDogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSkge1xuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IHsgLi4uZ2V0SnNvbkhlYWRlcnMoKSwgLi4uZXh0cmFIZWFkZXJzIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gIH07XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuICByZXR1cm4gcmVzdWx0Lmpzb24oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoR3JhcGhxbDxUUmVzdWx0PihcbiAgdXJsOiBzdHJpbmcsXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbiAgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4pOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0KHVybCwgeyBvcGVyYXRpb25OYW1lOiBudWxsLCBxdWVyeSwgdmFyaWFibGVzIH0sIGV4dHJhSGVhZGVycyk7XG4gIGlmIChyZXN1bHQuZXJyb3JzPy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yc1swXS5tZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmRhdGEgYXMgUHJvbWlzZTxUUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoR2V0V2l0aGluUGFnZTxUUmVzdWx0PihwYWdlOiBQYWdlLCB1cmw6IHN0cmluZyk6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgcmV0dXJuIHBhZ2UuZXZhbHVhdGUoaW5uZXJVcmwgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZmV0Y2goaW5uZXJVcmwsIHtcbiAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuanNvbigpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9LCB1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hQb3N0V2l0aGluUGFnZTxUUmVzdWx0PihcbiAgcGFnZTogUGFnZSxcbiAgdXJsOiBzdHJpbmcsXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuKTogUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4ge1xuICByZXR1cm4gcGFnZS5ldmFsdWF0ZShcbiAgICAoaW5uZXJVcmw6IHN0cmluZywgaW5uZXJEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbm5lckV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFRSZXN1bHQgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGZldGNoKGlubmVyVXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaW5uZXJEYXRhKSxcbiAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItb2JqZWN0LXNwcmVhZFxuICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04JyB9LFxuICAgICAgICAgICAgaW5uZXJFeHRyYUhlYWRlcnMsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcbiAgICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAgICAgICAvLyBObyBjb250ZW50IHJlc3BvbnNlXG4gICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB1cmwsXG4gICAgZGF0YSxcbiAgICBleHRyYUhlYWRlcnMsXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBbUMsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHbkMsTUFBTUcsaUJBQWlCLEdBQUcsa0JBQWtCO0FBRTVDLFNBQVNDLGNBQWNBLENBQUEsRUFBRztFQUN4QixPQUFPO0lBQ0xDLE1BQU0sRUFBRUYsaUJBQWlCO0lBQ3pCLGNBQWMsRUFBRUE7RUFDbEIsQ0FBQztBQUNIO0FBRU8sZUFBZUcsUUFBUUEsQ0FBVUMsR0FBVyxFQUFFQyxZQUFpQyxFQUFvQjtFQUN4RyxJQUFJQyxPQUFPLEdBQUdMLGNBQWMsQ0FBQyxDQUFDO0VBQzlCLElBQUlJLFlBQVksRUFBRTtJQUNoQkMsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0YsT0FBTyxFQUFFRCxZQUFZLENBQUM7RUFDaEQ7RUFDQSxNQUFNSSxPQUFPLEdBQUc7SUFDZEMsTUFBTSxFQUFFLEtBQUs7SUFDYko7RUFDRixDQUFDO0VBQ0QsTUFBTUssV0FBVyxHQUFHLE1BQU0sSUFBQUMsa0JBQVMsRUFBQ1IsR0FBRyxFQUFFSyxPQUFPLENBQUM7RUFFakQsSUFBSUUsV0FBVyxDQUFDRSxNQUFNLEtBQUssR0FBRyxFQUFFO0lBQzlCLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHVFQUF1RUgsV0FBVyxDQUFDRSxNQUFNLEVBQUUsQ0FBQztFQUM5RztFQUVBLE9BQU9GLFdBQVcsQ0FBQ0ksSUFBSSxDQUFDLENBQUM7QUFDM0I7QUFFTyxlQUFlQyxTQUFTQSxDQUFDWixHQUFXLEVBQUVhLElBQXlCLEVBQUVaLFlBQWlDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDOUcsTUFBTUksT0FBTyxHQUFHO0lBQ2RDLE1BQU0sRUFBRSxNQUFNO0lBQ2RKLE9BQU8sRUFBRTtNQUFFLEdBQUdMLGNBQWMsQ0FBQyxDQUFDO01BQUUsR0FBR0k7SUFBYSxDQUFDO0lBQ2pEYSxJQUFJLEVBQUVDLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxJQUFJO0VBQzNCLENBQUM7RUFDRCxNQUFNSSxNQUFNLEdBQUcsTUFBTSxJQUFBVCxrQkFBUyxFQUFDUixHQUFHLEVBQUVLLE9BQU8sQ0FBQztFQUM1QyxPQUFPWSxNQUFNLENBQUNOLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0FBRU8sZUFBZU8sWUFBWUEsQ0FDaENsQixHQUFXLEVBQ1htQixLQUFhLEVBQ2JDLFNBQWtDLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZDbkIsWUFBaUMsR0FBRyxDQUFDLENBQUMsRUFDcEI7RUFDbEIsTUFBTWdCLE1BQU0sR0FBRyxNQUFNTCxTQUFTLENBQUNaLEdBQUcsRUFBRTtJQUFFcUIsYUFBYSxFQUFFLElBQUk7SUFBRUYsS0FBSztJQUFFQztFQUFVLENBQUMsRUFBRW5CLFlBQVksQ0FBQztFQUM1RixJQUFJZ0IsTUFBTSxDQUFDSyxNQUFNLEVBQUVDLE1BQU0sRUFBRTtJQUN6QixNQUFNLElBQUliLEtBQUssQ0FBQ08sTUFBTSxDQUFDSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNFLE9BQU8sQ0FBQztFQUMzQztFQUNBLE9BQU9QLE1BQU0sQ0FBQ0osSUFBSTtBQUNwQjtBQUVPLFNBQVNZLGtCQUFrQkEsQ0FBVUMsSUFBVSxFQUFFMUIsR0FBVyxFQUEyQjtFQUM1RixPQUFPMEIsSUFBSSxDQUFDQyxRQUFRLENBQUNDLFFBQVEsSUFBSTtJQUMvQixPQUFPLElBQUlDLE9BQU8sQ0FBaUIsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7TUFDdERDLEtBQUssQ0FBQ0osUUFBUSxFQUFFO1FBQ2RLLFdBQVcsRUFBRTtNQUNmLENBQUMsQ0FBQyxDQUNDQyxJQUFJLENBQUNqQixNQUFNLElBQUk7UUFDZCxJQUFJQSxNQUFNLENBQUNSLE1BQU0sS0FBSyxHQUFHLEVBQUU7VUFDekJxQixPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxNQUFNO1VBQ0xBLE9BQU8sQ0FBQ2IsTUFBTSxDQUFDTixJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCO01BQ0YsQ0FBQyxDQUFDLENBQ0R3QixLQUFLLENBQUMxQyxDQUFDLElBQUk7UUFDVnNDLE1BQU0sQ0FBQ3RDLENBQUMsQ0FBQztNQUNYLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRU8sR0FBRyxDQUFDO0FBQ1Q7QUFFTyxTQUFTb0MsbUJBQW1CQSxDQUNqQ1YsSUFBVSxFQUNWMUIsR0FBVyxFQUNYYSxJQUF5QixFQUN6QlosWUFBaUMsR0FBRyxDQUFDLENBQUMsRUFDYjtFQUN6QixPQUFPeUIsSUFBSSxDQUFDQyxRQUFRLENBQ2xCLENBQUNDLFFBQWdCLEVBQUVTLFNBQThCLEVBQUVDLGlCQUFzQyxLQUFLO0lBQzVGLE9BQU8sSUFBSVQsT0FBTyxDQUFpQixDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztNQUN0REMsS0FBSyxDQUFDSixRQUFRLEVBQUU7UUFDZHRCLE1BQU0sRUFBRSxNQUFNO1FBQ2RRLElBQUksRUFBRUMsSUFBSSxDQUFDQyxTQUFTLENBQUNxQixTQUFTLENBQUM7UUFDL0JKLFdBQVcsRUFBRSxTQUFTO1FBQ3RCO1FBQ0EvQixPQUFPLEVBQUVDLE1BQU0sQ0FBQ0MsTUFBTSxDQUNwQjtVQUFFLGNBQWMsRUFBRTtRQUFtRCxDQUFDLEVBQ3RFa0MsaUJBQ0Y7TUFDRixDQUFDLENBQUMsQ0FDQ0osSUFBSSxDQUFDakIsTUFBTSxJQUFJO1FBQ2QsSUFBSUEsTUFBTSxDQUFDUixNQUFNLEtBQUssR0FBRyxFQUFFO1VBQ3pCO1VBQ0FxQixPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxNQUFNO1VBQ0xBLE9BQU8sQ0FBQ2IsTUFBTSxDQUFDTixJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCO01BQ0YsQ0FBQyxDQUFDLENBQ0R3QixLQUFLLENBQUMxQyxDQUFDLElBQUk7UUFDVnNDLE1BQU0sQ0FBQ3RDLENBQUMsQ0FBQztNQUNYLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztFQUNKLENBQUMsRUFDRE8sR0FBRyxFQUNIYSxJQUFJLEVBQ0paLFlBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119