UNPKG

israeli-bank-scrapers

Version:

Provide scrapers for all major Israeli banks and credit card companies

118 lines (117 loc) 17 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("../helpers/transactions"); var _transactions2 = 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, options) { // The price is positive, make it negative as it's an expense const originalAmount = -variant.customerPrice; const result = { type: _transactions2.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: _transactions2.TransactionStatuses.Completed, memo: variant.variantName }; if (options?.includeRawTransaction) { result.rawTransaction = (0, _transactions.getRawTransaction)(variant); } return result; } 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(variant => variantToTransaction(variant, this.options)) }] }; } } var _default = exports.default = BehatsdaaScraper; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMiLCJfdHJhbnNhY3Rpb25zMiIsIl9iYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJMT0dJTl9VUkwiLCJQVVJDSEFTRV9ISVNUT1JZX1VSTCIsImRlYnVnIiwiZ2V0RGVidWciLCJ2YXJpYW50VG9UcmFuc2FjdGlvbiIsInZhcmlhbnQiLCJvcHRpb25zIiwib3JpZ2luYWxBbW91bnQiLCJjdXN0b21lclByaWNlIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwidFRyYW5zYWN0aW9uSUQiLCJkYXRlIiwibW9tZW50Iiwib3JkZXJEYXRlIiwiZm9ybWF0IiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJuYW1lIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsIm1lbW8iLCJ2YXJpYW50TmFtZSIsImluY2x1ZGVSYXdUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiZ2V0UmF3VHJhbnNhY3Rpb24iLCJCZWhhdHNkYWFTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImNyZWRlbnRpYWxzIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsImNoZWNrUmVhZGluZXNzIiwiUHJvbWlzZSIsImFsbCIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsInBhZ2UiLCJwb3NzaWJsZVJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJzbGVlcCIsImJ1dHRvbiIsIiQiLCJjbGljayIsImZldGNoRGF0YSIsInRva2VuIiwiZXZhbHVhdGUiLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwic3VjY2VzcyIsImVycm9yTWVzc2FnZSIsImJvZHkiLCJGcm9tRGF0ZSIsInN0YXJ0RGF0ZSIsIlRvRGF0ZSIsIkJlbmVmaXRTdGF0dXNJZCIsInJlcyIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJhdXRob3JpemF0aW9uIiwib3JnYW5pemF0aW9uaWQiLCJlcnJvckRlc2NyaXB0aW9uIiwiZGF0YSIsImFjY291bnRzIiwiYWNjb3VudE51bWJlciIsIm1lbWJlcklkIiwidHhucyIsInZhcmlhbnRzIiwibWFwIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JlaGF0c2RhYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgZ2V0UmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIHR5cGUgTG9naW5PcHRpb25zLCBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vd3d3LmJlaGF0c2RhYS5vcmcuaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9VUkx9L2xvZ2luYDtcbmNvbnN0IFBVUkNIQVNFX0hJU1RPUllfVVJMID0gJ2h0dHBzOi8vYmFjay5iZWhhdHNkYWEub3JnLmlsL2FwaS9wdXJjaGFzZXMvcHVyY2hhc2VIaXN0b3J5JztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnYmVoYXRzZGFhJyk7XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfTtcblxudHlwZSBWYXJpYW50ID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhcmlhbnROYW1lOiBzdHJpbmc7XG4gIGN1c3RvbWVyUHJpY2U6IG51bWJlcjtcbiAgb3JkZXJEYXRlOiBzdHJpbmc7IC8vIElTTyB0aW1lc3RhbXAgd2l0aCBubyB0aW1lem9uZVxuICB0VHJhbnNhY3Rpb25JRDogc3RyaW5nO1xufTtcblxudHlwZSBQdXJjaGFzZUhpc3RvcnlSZXNwb25zZSA9IHtcbiAgZGF0YT86IHtcbiAgICBlcnJvckRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG1lbWJlcklkOiBzdHJpbmc7XG4gICAgdmFyaWFudHM6IFZhcmlhbnRbXTtcbiAgfTtcbiAgZXJyb3JEZXNjcmlwdGlvbj86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHZhcmlhbnRUb1RyYW5zYWN0aW9uKHZhcmlhbnQ6IFZhcmlhbnQsIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyk6IFRyYW5zYWN0aW9uIHtcbiAgLy8gVGhlIHByaWNlIGlzIHBvc2l0aXZlLCBtYWtlIGl0IG5lZ2F0aXZlIGFzIGl0J3MgYW4gZXhwZW5zZVxuICBjb25zdCBvcmlnaW5hbEFtb3VudCA9IC12YXJpYW50LmN1c3RvbWVyUHJpY2U7XG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgaWRlbnRpZmllcjogdmFyaWFudC50VHJhbnNhY3Rpb25JRCxcbiAgICBkYXRlOiBtb21lbnQodmFyaWFudC5vcmRlckRhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudCh2YXJpYW50Lm9yZGVyRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyksXG4gICAgb3JpZ2luYWxBbW91bnQsXG4gICAgb3JpZ2luYWxDdXJyZW5jeTogJ0lMUycsXG4gICAgY2hhcmdlZEFtb3VudDogb3JpZ2luYWxBbW91bnQsXG4gICAgY2hhcmdlZEN1cnJlbmN5OiAnSUxTJyxcbiAgICBkZXNjcmlwdGlvbjogdmFyaWFudC5uYW1lLFxuICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgbWVtbzogdmFyaWFudC52YXJpYW50TmFtZSxcbiAgfTtcblxuICBpZiAob3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgcmVzdWx0LnJhd1RyYW5zYWN0aW9uID0gZ2V0UmF3VHJhbnNhY3Rpb24odmFyaWFudCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5jbGFzcyBCZWhhdHNkYWFTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwdWJsaWMgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBzZWxlY3RvcjogJyNsb2dpbklkJywgdmFsdWU6IGNyZWRlbnRpYWxzLmlkIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6ICcjbG9naW5QYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgICAgXSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luUGFzc3dvcmQnKSxcbiAgICAgICAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luSWQnKSxcbiAgICAgICAgXSk7XG4gICAgICB9LFxuICAgICAgcG9zc2libGVSZXN1bHRzOiB7XG4gICAgICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtgJHtCQVNFX1VSTH0vYF0sXG4gICAgICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogWycuY3VzdG9tLWlucHV0LWVycm9yLWxhYmVsJ10sXG4gICAgICB9LFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICAgIGRlYnVnKCdUcnlpbmcgdG8gZmluZCBzdWJtaXQgYnV0dG9uJyk7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMucGFnZS4kKCd4cGF0aD0vL2J1dHRvbltjb250YWlucyguLCBcIteU16rXl9eR16jXldeqXCIpXScpO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgZGVidWcoJ1N1Ym1pdCBidXR0b24gZm91bmQnKTtcbiAgICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWJ1ZygnU3VibWl0IGJ1dHRvbiBub3QgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnBhZ2UuZXZhbHVhdGUoKCkgPT4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyVG9rZW4nKSk7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgZGVidWcoJ1Rva2VuIG5vdCBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnVG9rZW5Ob3RGb3VuZCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBGcm9tRGF0ZTogbW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcycpLFxuICAgICAgVG9EYXRlOiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERUSEg6bW06c3MnKSxcbiAgICAgIEJlbmVmaXRTdGF0dXNJZDogbnVsbCxcbiAgICB9O1xuXG4gICAgZGVidWcoJ0ZldGNoaW5nIGRhdGEnKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8UHVyY2hhc2VIaXN0b3J5UmVzcG9uc2U+KHRoaXMucGFnZSwgUFVSQ0hBU0VfSElTVE9SWV9VUkwsIGJvZHksIHtcbiAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIG9yZ2FuaXphdGlvbmlkOiAnMjAnLFxuICAgIH0pO1xuXG4gICAgZGVidWcoJ0RhdGEgZmV0Y2hlZCcpO1xuXG4gICAgaWYgKHJlcz8uZXJyb3JEZXNjcmlwdGlvbiB8fCByZXM/LmRhdGE/LmVycm9yRGVzY3JpcHRpb24pIHtcbiAgICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBkYXRhJywgcmVzLmVycm9yRGVzY3JpcHRpb24gfHwgcmVzLmRhdGE/LmVycm9yRGVzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yTWVzc2FnZTogcmVzLmVycm9yRGVzY3JpcHRpb24gfTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcz8uZGF0YSkge1xuICAgICAgZGVidWcoJ05vIGRhdGEgZm91bmQnKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvck1lc3NhZ2U6ICdOb0RhdGEnIH07XG4gICAgfVxuXG4gICAgZGVidWcoJ0RhdGEgZmV0Y2hlZCBzdWNjZXNzZnVsbHknKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiByZXMuZGF0YS5tZW1iZXJJZCxcbiAgICAgICAgICB0eG5zOiByZXMuZGF0YS52YXJpYW50cy5tYXAodmFyaWFudCA9PiB2YXJpYW50VG9UcmFuc2FjdGlvbih2YXJpYW50LCB0aGlzLm9wdGlvbnMpKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCZWhhdHNkYWFTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sdUJBQUEsR0FBQVAsT0FBQTtBQUFzRyxTQUFBRCx1QkFBQVMsQ0FBQSxXQUFB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