israeli-bank-scrapers-core
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGhlbiIsImNhdGNoIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImlubmVyRGF0YSIsImlubmVyRXh0cmFIZWFkZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvZmV0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vZGVGZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcblxuY29uc3QgSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbic7XG5cbmZ1bmN0aW9uIGdldEpzb25IZWFkZXJzKCkge1xuICByZXR1cm4ge1xuICAgIEFjY2VwdDogSlNPTl9DT05URU5UX1RZUEUsXG4gICAgJ0NvbnRlbnQtVHlwZSc6IEpTT05fQ09OVEVOVF9UWVBFLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHZXQ8VFJlc3VsdD4odXJsOiBzdHJpbmcsIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBsZXQgaGVhZGVycyA9IGdldEpzb25IZWFkZXJzKCk7XG4gIGlmIChleHRyYUhlYWRlcnMpIHtcbiAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBleHRyYUhlYWRlcnMpO1xuICB9XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9O1xuICBjb25zdCBmZXRjaFJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuXG4gIGlmIChmZXRjaFJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIGluc3RpdHV0ZSBzZXJ2ZXIgcmV0dXJuZWQgd2l0aCBzdGF0dXMgY29kZSAke2ZldGNoUmVzdWx0LnN0YXR1c31gKTtcbiAgfVxuXG4gIHJldHVybiBmZXRjaFJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBvc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAuLi5nZXRKc29uSGVhZGVycygpLCAuLi5leHRyYUhlYWRlcnMgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG4gIHJldHVybiByZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHcmFwaHFsPFRSZXN1bHQ+KFxuICB1cmw6IHN0cmluZyxcbiAgcXVlcnk6IHN0cmluZyxcbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3QodXJsLCB7IG9wZXJhdGlvbk5hbWU6IG51bGwsIHF1ZXJ5LCB2YXJpYWJsZXMgfSwgZXh0cmFIZWFkZXJzKTtcbiAgaWYgKHJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3JzWzBdLm1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiByZXN1bHQuZGF0YSBhcyBQcm9taXNlPFRSZXN1bHQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hHZXRXaXRoaW5QYWdlPFRSZXN1bHQ+KHBhZ2U6IFBhZ2UsIHVybDogc3RyaW5nKTogUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4ge1xuICByZXR1cm4gcGFnZS5ldmFsdWF0ZShpbm5lclVybCA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRSZXN1bHQgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmZXRjaChpbm5lclVybCwge1xuICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaFBvc3RXaXRoaW5QYWdlPFRSZXN1bHQ+KFxuICBwYWdlOiBQYWdlLFxuICB1cmw6IHN0cmluZyxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4pOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIHJldHVybiBwYWdlLmV2YWx1YXRlKFxuICAgIChpbm5lclVybDogc3RyaW5nLCBpbm5lckRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlubmVyRXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8VFJlc3VsdCB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZmV0Y2goaW5uZXJVcmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShpbm5lckRhdGEpLFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICAgICAgaGVhZGVyczogT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnIH0sXG4gICAgICAgICAgICBpbm5lckV4dHJhSGVhZGVycyxcbiAgICAgICAgICApLFxuICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICAgIC8vIE5vIGNvbnRlbnQgcmVzcG9uc2VcbiAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb24oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVybCxcbiAgICBkYXRhLFxuICAgIGV4dHJhSGVhZGVycyxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFtQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUduQyxNQUFNRyxpQkFBaUIsR0FBRyxrQkFBa0I7QUFFNUMsU0FBU0MsY0FBY0EsQ0FBQSxFQUFHO0VBQ3hCLE9BQU87SUFDTEMsTUFBTSxFQUFFRixpQkFBaUI7SUFDekIsY0FBYyxFQUFFQTtFQUNsQixDQUFDO0FBQ0g7QUFFTyxlQUFlRyxRQUFRQSxDQUFVQyxHQUFXLEVBQUVDLFlBQWlDLEVBQW9CO0VBQ3hHLElBQUlDLE9BQU8sR0FBR0wsY0FBYyxDQUFDLENBQUM7RUFDOUIsSUFBSUksWUFBWSxFQUFFO0lBQ2hCQyxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDRixPQUFPLEVBQUVELFlBQVksQ0FBQztFQUNoRDtFQUNBLE1BQU1JLE9BQU8sR0FBRztJQUNkQyxNQUFNLEVBQUUsS0FBSztJQUNiSjtFQUNGLENBQUM7RUFDRCxNQUFNSyxXQUFXLEdBQUcsTUFBTSxJQUFBQyxrQkFBUyxFQUFDUixHQUFHLEVBQUVLLE9BQU8sQ0FBQztFQUVqRCxJQUFJRSxXQUFXLENBQUNFLE1BQU0sS0FBSyxHQUFHLEVBQUU7SUFDOUIsTUFBTSxJQUFJQyxLQUFLLENBQUMsdUVBQXVFSCxXQUFXLENBQUNFLE1BQU0sRUFBRSxDQUFDO0VBQzlHO0VB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