UNPKG

israeli-bank-scrapers-core

Version:

Provide scrapers for all major Israeli banks and credit card companies

113 lines (112 loc) 16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _moment = _interopRequireDefault(require("moment")); var _debug = require("../helpers/debug"); var _elementsInteractions = require("../helpers/elements-interactions"); var _fetch = require("../helpers/fetch"); var _waiting = require("../helpers/waiting"); var _transactions = require("../transactions"); var _baseScraperWithBrowser = require("./base-scraper-with-browser"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const BASE_URL = 'https://www.behatsdaa.org.il'; const LOGIN_URL = `${BASE_URL}/login`; const PURCHASE_HISTORY_URL = 'https://back.behatsdaa.org.il/api/purchases/purchaseHistory'; const debug = (0, _debug.getDebug)('behatsdaa'); function variantToTransaction(variant) { // The price is positive, make it negative as it's an expense const originalAmount = -variant.customerPrice; return { type: _transactions.TransactionTypes.Normal, identifier: variant.tTransactionID, date: (0, _moment.default)(variant.orderDate).format('YYYY-MM-DD'), processedDate: (0, _moment.default)(variant.orderDate).format('YYYY-MM-DD'), originalAmount, originalCurrency: 'ILS', chargedAmount: originalAmount, chargedCurrency: 'ILS', description: variant.name, status: _transactions.TransactionStatuses.Completed, memo: variant.variantName }; } class BehatsdaaScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser { getLoginOptions(credentials) { return { loginUrl: LOGIN_URL, fields: [{ selector: '#loginId', value: credentials.id }, { selector: '#loginPassword', value: credentials.password }], checkReadiness: async () => { await Promise.all([(0, _elementsInteractions.waitUntilElementFound)(this.page, '#loginPassword'), (0, _elementsInteractions.waitUntilElementFound)(this.page, '#loginId')]); }, possibleResults: { [_baseScraperWithBrowser.LoginResults.Success]: [`${BASE_URL}/`], [_baseScraperWithBrowser.LoginResults.InvalidPassword]: ['.custom-input-error-label'] }, submitButtonSelector: async () => { await (0, _waiting.sleep)(1000); debug('Trying to find submit button'); const button = await this.page.$('xpath=//button[contains(., "התחברות")]'); if (button) { debug('Submit button found'); await button.click(); } else { debug('Submit button not found'); } } }; } async fetchData() { const token = await this.page.evaluate(() => window.localStorage.getItem('userToken')); if (!token) { debug('Token not found in local storage'); return { success: false, errorMessage: 'TokenNotFound' }; } const body = { FromDate: (0, _moment.default)(this.options.startDate).format('YYYY-MM-DDTHH:mm:ss'), ToDate: (0, _moment.default)().format('YYYY-MM-DDTHH:mm:ss'), BenefitStatusId: null }; debug('Fetching data'); const res = await (0, _fetch.fetchPostWithinPage)(this.page, PURCHASE_HISTORY_URL, body, { authorization: `Bearer ${token}`, 'Content-Type': 'application/json', organizationid: '20' }); debug('Data fetched'); if (res?.errorDescription || res?.data?.errorDescription) { debug('Error fetching data', res.errorDescription || res.data?.errorDescription); return { success: false, errorMessage: res.errorDescription }; } if (!res?.data) { debug('No data found'); return { success: false, errorMessage: 'NoData' }; } debug('Data fetched successfully'); return { success: true, accounts: [{ accountNumber: res.data.memberId, txns: res.data.variants.map(variantToTransaction) }] }; } } var _default = exports.default = BehatsdaaScraper; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkJBU0VfVVJMIiwiTE9HSU5fVVJMIiwiUFVSQ0hBU0VfSElTVE9SWV9VUkwiLCJkZWJ1ZyIsImdldERlYnVnIiwidmFyaWFudFRvVHJhbnNhY3Rpb24iLCJ2YXJpYW50Iiwib3JpZ2luYWxBbW91bnQiLCJjdXN0b21lclByaWNlIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwidFRyYW5zYWN0aW9uSUQiLCJkYXRlIiwibW9tZW50Iiwib3JkZXJEYXRlIiwiZm9ybWF0IiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJuYW1lIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsIm1lbW8iLCJ2YXJpYW50TmFtZSIsIkJlaGF0c2RhYVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwiY3JlZGVudGlhbHMiLCJsb2dpblVybCIsImZpZWxkcyIsInNlbGVjdG9yIiwidmFsdWUiLCJpZCIsInBhc3N3b3JkIiwiY2hlY2tSZWFkaW5lc3MiLCJQcm9taXNlIiwiYWxsIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwicGFnZSIsInBvc3NpYmxlUmVzdWx0cyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInNsZWVwIiwiYnV0dG9uIiwiJCIsImNsaWNrIiwiZmV0Y2hEYXRhIiwidG9rZW4iLCJldmFsdWF0ZSIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJzdWNjZXNzIiwiZXJyb3JNZXNzYWdlIiwiYm9keSIsIkZyb21EYXRlIiwib3B0aW9ucyIsInN0YXJ0RGF0ZSIsIlRvRGF0ZSIsIkJlbmVmaXRTdGF0dXNJZCIsInJlcyIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJhdXRob3JpemF0aW9uIiwib3JnYW5pemF0aW9uaWQiLCJlcnJvckRlc2NyaXB0aW9uIiwiZGF0YSIsImFjY291bnRzIiwiYWNjb3VudE51bWJlciIsIm1lbWJlcklkIiwidHhucyIsInZhcmlhbnRzIiwibWFwIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JlaGF0c2RhYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCB0eXBlIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3d3dy5iZWhhdHNkYWEub3JnLmlsJztcbmNvbnN0IExPR0lOX1VSTCA9IGAke0JBU0VfVVJMfS9sb2dpbmA7XG5jb25zdCBQVVJDSEFTRV9ISVNUT1JZX1VSTCA9ICdodHRwczovL2JhY2suYmVoYXRzZGFhLm9yZy5pbC9hcGkvcHVyY2hhc2VzL3B1cmNoYXNlSGlzdG9yeSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2JlaGF0c2RhYScpO1xuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbnR5cGUgVmFyaWFudCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YXJpYW50TmFtZTogc3RyaW5nO1xuICBjdXN0b21lclByaWNlOiBudW1iZXI7XG4gIG9yZGVyRGF0ZTogc3RyaW5nOyAvLyBJU08gdGltZXN0YW1wIHdpdGggbm8gdGltZXpvbmVcbiAgdFRyYW5zYWN0aW9uSUQ6IHN0cmluZztcbn07XG5cbnR5cGUgUHVyY2hhc2VIaXN0b3J5UmVzcG9uc2UgPSB7XG4gIGRhdGE/OiB7XG4gICAgZXJyb3JEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBtZW1iZXJJZDogc3RyaW5nO1xuICAgIHZhcmlhbnRzOiBWYXJpYW50W107XG4gIH07XG4gIGVycm9yRGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiB2YXJpYW50VG9UcmFuc2FjdGlvbih2YXJpYW50OiBWYXJpYW50KTogVHJhbnNhY3Rpb24ge1xuICAvLyBUaGUgcHJpY2UgaXMgcG9zaXRpdmUsIG1ha2UgaXQgbmVnYXRpdmUgYXMgaXQncyBhbiBleHBlbnNlXG4gIGNvbnN0IG9yaWdpbmFsQW1vdW50ID0gLXZhcmlhbnQuY3VzdG9tZXJQcmljZTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICBpZGVudGlmaWVyOiB2YXJpYW50LnRUcmFuc2FjdGlvbklELFxuICAgIGRhdGU6IG1vbWVudCh2YXJpYW50Lm9yZGVyRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyksXG4gICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KHZhcmlhbnQub3JkZXJEYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcbiAgICBvcmlnaW5hbEFtb3VudCxcbiAgICBvcmlnaW5hbEN1cnJlbmN5OiAnSUxTJyxcbiAgICBjaGFyZ2VkQW1vdW50OiBvcmlnaW5hbEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6ICdJTFMnLFxuICAgIGRlc2NyaXB0aW9uOiB2YXJpYW50Lm5hbWUsXG4gICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICBtZW1vOiB2YXJpYW50LnZhcmlhbnROYW1lLFxuICB9O1xufVxuXG5jbGFzcyBCZWhhdHNkYWFTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwdWJsaWMgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBzZWxlY3RvcjogJyNsb2dpbklkJywgdmFsdWU6IGNyZWRlbnRpYWxzLmlkIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6ICcjbG9naW5QYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgICAgXSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luUGFzc3dvcmQnKSxcbiAgICAgICAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luSWQnKSxcbiAgICAgICAgXSk7XG4gICAgICB9LFxuICAgICAgcG9zc2libGVSZXN1bHRzOiB7XG4gICAgICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtgJHtCQVNFX1VSTH0vYF0sXG4gICAgICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogWycuY3VzdG9tLWlucHV0LWVycm9yLWxhYmVsJ10sXG4gICAgICB9LFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICAgIGRlYnVnKCdUcnlpbmcgdG8gZmluZCBzdWJtaXQgYnV0dG9uJyk7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMucGFnZS4kKCd4cGF0aD0vL2J1dHRvbltjb250YWlucyguLCBcIteU16rXl9eR16jXldeqXCIpXScpO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgZGVidWcoJ1N1Ym1pdCBidXR0b24gZm91bmQnKTtcbiAgICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWJ1ZygnU3VibWl0IGJ1dHRvbiBub3QgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnBhZ2UuZXZhbHVhdGUoKCkgPT4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyVG9rZW4nKSk7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgZGVidWcoJ1Rva2VuIG5vdCBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnVG9rZW5Ob3RGb3VuZCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBGcm9tRGF0ZTogbW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcycpLFxuICAgICAgVG9EYXRlOiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERUSEg6bW06c3MnKSxcbiAgICAgIEJlbmVmaXRTdGF0dXNJZDogbnVsbCxcbiAgICB9O1xuXG4gICAgZGVidWcoJ0ZldGNoaW5nIGRhdGEnKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8UHVyY2hhc2VIaXN0b3J5UmVzcG9uc2U+KHRoaXMucGFnZSwgUFVSQ0hBU0VfSElTVE9SWV9VUkwsIGJvZHksIHtcbiAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIG9yZ2FuaXphdGlvbmlkOiAnMjAnLFxuICAgIH0pO1xuXG4gICAgZGVidWcoJ0RhdGEgZmV0Y2hlZCcpO1xuXG4gICAgaWYgKHJlcz8uZXJyb3JEZXNjcmlwdGlvbiB8fCByZXM/LmRhdGE/LmVycm9yRGVzY3JpcHRpb24pIHtcbiAgICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBkYXRhJywgcmVzLmVycm9yRGVzY3JpcHRpb24gfHwgcmVzLmRhdGE/LmVycm9yRGVzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yTWVzc2FnZTogcmVzLmVycm9yRGVzY3JpcHRpb24gfTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcz8uZGF0YSkge1xuICAgICAgZGVidWcoJ05vIGRhdGEgZm91bmQnKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvck1lc3NhZ2U6ICdOb0RhdGEnIH07XG4gICAgfVxuXG4gICAgZGVidWcoJ0RhdGEgZmV0Y2hlZCBzdWNjZXNzZnVsbHknKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiByZXMuZGF0YS5tZW1iZXJJZCxcbiAgICAgICAgICB0eG5zOiByZXMuZGF0YS52YXJpYW50cy5tYXAodmFyaWFudFRvVHJhbnNhY3Rpb24pLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJlaGF0c2RhYVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQXNHLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBR3RHLE1BQU1HLFFBQVEsR0FBRyw4QkFBOEI7QUFDL0MsTUFBTUMsU0FBUyxHQUFHLEdBQUdELFFBQVEsUUFBUTtBQUNyQyxNQUFNRSxvQkFBb0IsR0FBRyw2REFBNkQ7QUFFMUYsTUFBTUMsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxXQUFXLENBQUM7QUFxQm5DLFNBQVNDLG9CQUFvQkEsQ0FBQ0MsT0FBZ0IsRUFBZTtFQUMzRDtFQUNBLE1BQU1DLGNBQWMsR0FBRyxDQUFDRCxPQUFPLENBQUNFLGFBQWE7RUFDN0MsT0FBTztJQUNMQyxJQUFJLEVBQUVDLDhCQUFnQixDQUFDQyxNQUFNO0lBQzdCQyxVQUFVLEVBQUVOLE9BQU8sQ0FBQ08sY0FBYztJQUNsQ0MsSUFBSSxFQUFFLElBQUFDLGVBQU0s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