@tomerh2001/israeli-bank-scrapers 6.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +425 -0
- package/lib/assertNever.d.ts +1 -0
- package/lib/assertNever.js +10 -0
- package/lib/constants.d.ts +10 -0
- package/lib/constants.js +17 -0
- package/lib/definitions.d.ts +105 -0
- package/lib/definitions.js +116 -0
- package/lib/helpers/browser.d.ts +10 -0
- package/lib/helpers/browser.js +21 -0
- package/lib/helpers/dates.d.ts +2 -0
- package/lib/helpers/dates.js +22 -0
- package/lib/helpers/debug.d.ts +2 -0
- package/lib/helpers/debug.js +12 -0
- package/lib/helpers/elements-interactions.d.ts +17 -0
- package/lib/helpers/elements-interactions.js +111 -0
- package/lib/helpers/fetch.d.ts +6 -0
- package/lib/helpers/fetch.js +111 -0
- package/lib/helpers/navigation.d.ts +6 -0
- package/lib/helpers/navigation.js +39 -0
- package/lib/helpers/storage.d.ts +2 -0
- package/lib/helpers/storage.js +14 -0
- package/lib/helpers/transactions.d.ts +5 -0
- package/lib/helpers/transactions.js +47 -0
- package/lib/helpers/waiting.d.ts +13 -0
- package/lib/helpers/waiting.js +58 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +85 -0
- package/lib/scrapers/amex.d.ts +6 -0
- package/lib/scrapers/amex.js +17 -0
- package/lib/scrapers/amex.test.d.ts +1 -0
- package/lib/scrapers/amex.test.js +49 -0
- package/lib/scrapers/base-beinleumi-group.d.ts +66 -0
- package/lib/scrapers/base-beinleumi-group.js +428 -0
- package/lib/scrapers/base-isracard-amex.d.ts +23 -0
- package/lib/scrapers/base-isracard-amex.js +324 -0
- package/lib/scrapers/base-scraper-with-browser.d.ts +57 -0
- package/lib/scrapers/base-scraper-with-browser.js +291 -0
- package/lib/scrapers/base-scraper-with-browser.test.d.ts +1 -0
- package/lib/scrapers/base-scraper-with-browser.test.js +53 -0
- package/lib/scrapers/base-scraper.d.ts +19 -0
- package/lib/scrapers/base-scraper.js +91 -0
- package/lib/scrapers/behatsdaa.d.ts +11 -0
- package/lib/scrapers/behatsdaa.js +113 -0
- package/lib/scrapers/behatsdaa.test.d.ts +1 -0
- package/lib/scrapers/behatsdaa.test.js +46 -0
- package/lib/scrapers/beinleumi.d.ts +7 -0
- package/lib/scrapers/beinleumi.js +15 -0
- package/lib/scrapers/beinleumi.test.d.ts +1 -0
- package/lib/scrapers/beinleumi.test.js +47 -0
- package/lib/scrapers/beyahad-bishvilha.d.ts +30 -0
- package/lib/scrapers/beyahad-bishvilha.js +149 -0
- package/lib/scrapers/beyahad-bishvilha.test.d.ts +1 -0
- package/lib/scrapers/beyahad-bishvilha.test.js +47 -0
- package/lib/scrapers/discount.d.ts +22 -0
- package/lib/scrapers/discount.js +120 -0
- package/lib/scrapers/discount.test.d.ts +1 -0
- package/lib/scrapers/discount.test.js +49 -0
- package/lib/scrapers/errors.d.ts +16 -0
- package/lib/scrapers/errors.js +32 -0
- package/lib/scrapers/factory.d.ts +2 -0
- package/lib/scrapers/factory.js +70 -0
- package/lib/scrapers/factory.test.d.ts +1 -0
- package/lib/scrapers/factory.test.js +19 -0
- package/lib/scrapers/hapoalim.d.ts +24 -0
- package/lib/scrapers/hapoalim.js +198 -0
- package/lib/scrapers/hapoalim.test.d.ts +1 -0
- package/lib/scrapers/hapoalim.test.js +47 -0
- package/lib/scrapers/interface.d.ts +186 -0
- package/lib/scrapers/interface.js +6 -0
- package/lib/scrapers/isracard.d.ts +6 -0
- package/lib/scrapers/isracard.js +17 -0
- package/lib/scrapers/isracard.test.d.ts +1 -0
- package/lib/scrapers/isracard.test.js +49 -0
- package/lib/scrapers/leumi.d.ts +21 -0
- package/lib/scrapers/leumi.js +200 -0
- package/lib/scrapers/leumi.test.d.ts +1 -0
- package/lib/scrapers/leumi.test.js +47 -0
- package/lib/scrapers/massad.d.ts +7 -0
- package/lib/scrapers/massad.js +15 -0
- package/lib/scrapers/max.d.ts +37 -0
- package/lib/scrapers/max.js +299 -0
- package/lib/scrapers/max.test.d.ts +1 -0
- package/lib/scrapers/max.test.js +64 -0
- package/lib/scrapers/mercantile.d.ts +20 -0
- package/lib/scrapers/mercantile.js +18 -0
- package/lib/scrapers/mercantile.test.d.ts +1 -0
- package/lib/scrapers/mercantile.test.js +45 -0
- package/lib/scrapers/mizrahi.d.ts +35 -0
- package/lib/scrapers/mizrahi.js +265 -0
- package/lib/scrapers/mizrahi.test.d.ts +1 -0
- package/lib/scrapers/mizrahi.test.js +56 -0
- package/lib/scrapers/one-zero-queries.d.ts +2 -0
- package/lib/scrapers/one-zero-queries.js +560 -0
- package/lib/scrapers/one-zero.d.ts +36 -0
- package/lib/scrapers/one-zero.js +238 -0
- package/lib/scrapers/one-zero.test.d.ts +1 -0
- package/lib/scrapers/one-zero.test.js +51 -0
- package/lib/scrapers/otsar-hahayal.d.ts +7 -0
- package/lib/scrapers/otsar-hahayal.js +15 -0
- package/lib/scrapers/otsar-hahayal.test.d.ts +1 -0
- package/lib/scrapers/otsar-hahayal.test.js +47 -0
- package/lib/scrapers/pagi.d.ts +7 -0
- package/lib/scrapers/pagi.js +15 -0
- package/lib/scrapers/pagi.test.d.ts +1 -0
- package/lib/scrapers/pagi.test.js +47 -0
- package/lib/scrapers/union-bank.d.ts +23 -0
- package/lib/scrapers/union-bank.js +242 -0
- package/lib/scrapers/union-bank.test.d.ts +1 -0
- package/lib/scrapers/union-bank.test.js +47 -0
- package/lib/scrapers/visa-cal.d.ts +20 -0
- package/lib/scrapers/visa-cal.js +318 -0
- package/lib/scrapers/visa-cal.test.d.ts +1 -0
- package/lib/scrapers/visa-cal.test.js +49 -0
- package/lib/scrapers/yahav.d.ts +25 -0
- package/lib/scrapers/yahav.js +247 -0
- package/lib/scrapers/yahav.test.d.ts +1 -0
- package/lib/scrapers/yahav.test.js +49 -0
- package/lib/transactions.d.ts +47 -0
- package/lib/transactions.js +17 -0
- package/package.json +91 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _moment = _interopRequireDefault(require("moment"));
|
|
8
|
+
var _debug = require("../helpers/debug");
|
|
9
|
+
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
10
|
+
var _fetch = require("../helpers/fetch");
|
|
11
|
+
var _waiting = require("../helpers/waiting");
|
|
12
|
+
var _transactions = require("../transactions");
|
|
13
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
const BASE_URL = 'https://www.behatsdaa.org.il';
|
|
16
|
+
const LOGIN_URL = `${BASE_URL}/login`;
|
|
17
|
+
const PURCHASE_HISTORY_URL = 'https://back.behatsdaa.org.il/api/purchases/purchaseHistory';
|
|
18
|
+
const debug = (0, _debug.getDebug)('behatsdaa');
|
|
19
|
+
function variantToTransaction(variant) {
|
|
20
|
+
// The price is positive, make it negative as it's an expense
|
|
21
|
+
const originalAmount = -variant.customerPrice;
|
|
22
|
+
return {
|
|
23
|
+
type: _transactions.TransactionTypes.Normal,
|
|
24
|
+
identifier: variant.tTransactionID,
|
|
25
|
+
date: (0, _moment.default)(variant.orderDate).format('YYYY-MM-DD'),
|
|
26
|
+
processedDate: (0, _moment.default)(variant.orderDate).format('YYYY-MM-DD'),
|
|
27
|
+
originalAmount,
|
|
28
|
+
originalCurrency: 'ILS',
|
|
29
|
+
chargedAmount: originalAmount,
|
|
30
|
+
chargedCurrency: 'ILS',
|
|
31
|
+
description: variant.name,
|
|
32
|
+
status: _transactions.TransactionStatuses.Completed,
|
|
33
|
+
memo: variant.variantName
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
class BehatsdaaScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
37
|
+
getLoginOptions(credentials) {
|
|
38
|
+
return {
|
|
39
|
+
loginUrl: LOGIN_URL,
|
|
40
|
+
fields: [{
|
|
41
|
+
selector: '#loginId',
|
|
42
|
+
value: credentials.id
|
|
43
|
+
}, {
|
|
44
|
+
selector: '#loginPassword',
|
|
45
|
+
value: credentials.password
|
|
46
|
+
}],
|
|
47
|
+
checkReadiness: async () => {
|
|
48
|
+
await Promise.all([(0, _elementsInteractions.waitUntilElementFound)(this.page, '#loginPassword'), (0, _elementsInteractions.waitUntilElementFound)(this.page, '#loginId')]);
|
|
49
|
+
},
|
|
50
|
+
possibleResults: {
|
|
51
|
+
[_baseScraperWithBrowser.LoginResults.Success]: [`${BASE_URL}/`],
|
|
52
|
+
[_baseScraperWithBrowser.LoginResults.InvalidPassword]: ['.custom-input-error-label']
|
|
53
|
+
},
|
|
54
|
+
submitButtonSelector: async () => {
|
|
55
|
+
await (0, _waiting.sleep)(1000);
|
|
56
|
+
debug('Trying to find submit button');
|
|
57
|
+
const button = await this.page.$('xpath=//button[contains(., "התחברות")]');
|
|
58
|
+
if (button) {
|
|
59
|
+
debug('Submit button found');
|
|
60
|
+
await button.click();
|
|
61
|
+
} else {
|
|
62
|
+
debug('Submit button not found');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async fetchData() {
|
|
68
|
+
const token = await this.page.evaluate(() => window.localStorage.getItem('userToken'));
|
|
69
|
+
if (!token) {
|
|
70
|
+
debug('Token not found in local storage');
|
|
71
|
+
return {
|
|
72
|
+
success: false,
|
|
73
|
+
errorMessage: 'TokenNotFound'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const body = {
|
|
77
|
+
FromDate: (0, _moment.default)(this.options.startDate).format('YYYY-MM-DDTHH:mm:ss'),
|
|
78
|
+
ToDate: (0, _moment.default)().format('YYYY-MM-DDTHH:mm:ss'),
|
|
79
|
+
BenefitStatusId: null
|
|
80
|
+
};
|
|
81
|
+
debug('Fetching data');
|
|
82
|
+
const res = await (0, _fetch.fetchPostWithinPage)(this.page, PURCHASE_HISTORY_URL, body, {
|
|
83
|
+
authorization: `Bearer ${token}`,
|
|
84
|
+
'Content-Type': 'application/json',
|
|
85
|
+
organizationid: '20'
|
|
86
|
+
});
|
|
87
|
+
debug('Data fetched');
|
|
88
|
+
if (res?.errorDescription || res?.data?.errorDescription) {
|
|
89
|
+
debug('Error fetching data', res.errorDescription || res.data?.errorDescription);
|
|
90
|
+
return {
|
|
91
|
+
success: false,
|
|
92
|
+
errorMessage: res.errorDescription
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (!res?.data) {
|
|
96
|
+
debug('No data found');
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
errorMessage: 'NoData'
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
debug('Data fetched successfully');
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
accounts: [{
|
|
106
|
+
accountNumber: res.data.memberId,
|
|
107
|
+
txns: res.data.variants.map(variantToTransaction)
|
|
108
|
+
}]
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
var _default = exports.default = BehatsdaaScraper;
|
|
113
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkJBU0VfVVJMIiwiTE9HSU5fVVJMIiwiUFVSQ0hBU0VfSElTVE9SWV9VUkwiLCJkZWJ1ZyIsImdldERlYnVnIiwidmFyaWFudFRvVHJhbnNhY3Rpb24iLCJ2YXJpYW50Iiwib3JpZ2luYWxBbW91bnQiLCJjdXN0b21lclByaWNlIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwidFRyYW5zYWN0aW9uSUQiLCJkYXRlIiwibW9tZW50Iiwib3JkZXJEYXRlIiwiZm9ybWF0IiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJuYW1lIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsIm1lbW8iLCJ2YXJpYW50TmFtZSIsIkJlaGF0c2RhYVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwiY3JlZGVudGlhbHMiLCJsb2dpblVybCIsImZpZWxkcyIsInNlbGVjdG9yIiwidmFsdWUiLCJpZCIsInBhc3N3b3JkIiwiY2hlY2tSZWFkaW5lc3MiLCJQcm9taXNlIiwiYWxsIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwicGFnZSIsInBvc3NpYmxlUmVzdWx0cyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInNsZWVwIiwiYnV0dG9uIiwiJCIsImNsaWNrIiwiZmV0Y2hEYXRhIiwidG9rZW4iLCJldmFsdWF0ZSIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJzdWNjZXNzIiwiZXJyb3JNZXNzYWdlIiwiYm9keSIsIkZyb21EYXRlIiwib3B0aW9ucyIsInN0YXJ0RGF0ZSIsIlRvRGF0ZSIsIkJlbmVmaXRTdGF0dXNJZCIsInJlcyIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJhdXRob3JpemF0aW9uIiwib3JnYW5pemF0aW9uaWQiLCJlcnJvckRlc2NyaXB0aW9uIiwiZGF0YSIsImFjY291bnRzIiwiYWNjb3VudE51bWJlciIsIm1lbWJlcklkIiwidHhucyIsInZhcmlhbnRzIiwibWFwIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JlaGF0c2RhYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCB0eXBlIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3d3dy5iZWhhdHNkYWEub3JnLmlsJztcbmNvbnN0IExPR0lOX1VSTCA9IGAke0JBU0VfVVJMfS9sb2dpbmA7XG5jb25zdCBQVVJDSEFTRV9ISVNUT1JZX1VSTCA9ICdodHRwczovL2JhY2suYmVoYXRzZGFhLm9yZy5pbC9hcGkvcHVyY2hhc2VzL3B1cmNoYXNlSGlzdG9yeSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2JlaGF0c2RhYScpO1xuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbnR5cGUgVmFyaWFudCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YXJpYW50TmFtZTogc3RyaW5nO1xuICBjdXN0b21lclByaWNlOiBudW1iZXI7XG4gIG9yZGVyRGF0ZTogc3RyaW5nOyAvLyBJU08gdGltZXN0YW1wIHdpdGggbm8gdGltZXpvbmVcbiAgdFRyYW5zYWN0aW9uSUQ6IHN0cmluZztcbn07XG5cbnR5cGUgUHVyY2hhc2VIaXN0b3J5UmVzcG9uc2UgPSB7XG4gIGRhdGE/OiB7XG4gICAgZXJyb3JEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBtZW1iZXJJZDogc3RyaW5nO1xuICAgIHZhcmlhbnRzOiBWYXJpYW50W107XG4gIH07XG4gIGVycm9yRGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiB2YXJpYW50VG9UcmFuc2FjdGlvbih2YXJpYW50OiBWYXJpYW50KTogVHJhbnNhY3Rpb24ge1xuICAvLyBUaGUgcHJpY2UgaXMgcG9zaXRpdmUsIG1ha2UgaXQgbmVnYXRpdmUgYXMgaXQncyBhbiBleHBlbnNlXG4gIGNvbnN0IG9yaWdpbmFsQW1vdW50ID0gLXZhcmlhbnQuY3VzdG9tZXJQcmljZTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICBpZGVudGlmaWVyOiB2YXJpYW50LnRUcmFuc2FjdGlvbklELFxuICAgIGRhdGU6IG1vbWVudCh2YXJpYW50Lm9yZGVyRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyksXG4gICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KHZhcmlhbnQub3JkZXJEYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcbiAgICBvcmlnaW5hbEFtb3VudCxcbiAgICBvcmlnaW5hbEN1cnJlbmN5OiAnSUxTJyxcbiAgICBjaGFyZ2VkQW1vdW50OiBvcmlnaW5hbEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6ICdJTFMnLFxuICAgIGRlc2NyaXB0aW9uOiB2YXJpYW50Lm5hbWUsXG4gICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICBtZW1vOiB2YXJpYW50LnZhcmlhbnROYW1lLFxuICB9O1xufVxuXG5jbGFzcyBCZWhhdHNkYWFTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwdWJsaWMgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBzZWxlY3RvcjogJyNsb2dpbklkJywgdmFsdWU6IGNyZWRlbnRpYWxzLmlkIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6ICcjbG9naW5QYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgICAgXSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luUGFzc3dvcmQnKSxcbiAgICAgICAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luSWQnKSxcbiAgICAgICAgXSk7XG4gICAgICB9LFxuICAgICAgcG9zc2libGVSZXN1bHRzOiB7XG4gICAgICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtgJHtCQVNFX1VSTH0vYF0sXG4gICAgICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogWycuY3VzdG9tLWlucHV0LWVycm9yLWxhYmVsJ10sXG4gICAgICB9LFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICAgIGRlYnVnKCdUcnlpbmcgdG8gZmluZCBzdWJtaXQgYnV0dG9uJyk7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMucGFnZS4kKCd4cGF0aD0vL2J1dHRvbltjb250YWlucyguLCBcIteU16rXl9eR16jXldeqXCIpXScpO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgZGVidWcoJ1N1Ym1pdCBidXR0b24gZm91bmQnKTtcbiAgICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWJ1ZygnU3VibWl0IGJ1dHRvbiBub3QgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnBhZ2UuZXZhbHVhdGUoKCkgPT4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyVG9rZW4nKSk7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgZGVidWcoJ1Rva2VuIG5vdCBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnVG9rZW5Ob3RGb3VuZCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBGcm9tRGF0ZTogbW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcycpLFxuICAgICAgVG9EYXRlOiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERUSEg6bW06c3MnKSxcbiAgICAgIEJlbmVmaXRTdGF0dXNJZDogbnVsbCxcbiAgICB9O1xuXG4gICAgZGVidWcoJ0ZldGNoaW5nIGRhdGEnKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8UHVyY2hhc2VIaXN0b3J5UmVzcG9uc2U+KHRoaXMucGFnZSwgUFVSQ0hBU0VfSElTVE9SWV9VUkwsIGJvZHksIHtcbiAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIG9yZ2FuaXphdGlvbmlkOiAnMjAnLFxuICAgIH0pO1xuXG4gICAgZGVidWcoJ0RhdGEgZmV0Y2hlZCcpO1xuXG4gICAgaWYgKHJlcz8uZXJyb3JEZXNjcmlwdGlvbiB8fCByZXM/LmRhdGE/LmVycm9yRGVzY3JpcHRpb24pIHtcbiAgICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBkYXRhJywgcmVzLmVycm9yRGVzY3JpcHRpb24gfHwgcmVzLmRhdGE/LmVycm9yRGVzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yTWVzc2FnZTogcmVzLmVycm9yRGVzY3JpcHRpb24gfTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcz8uZGF0YSkge1xuICAgICAgZGVidWcoJ05vIGRhdGEgZm91bmQnKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvck1lc3NhZ2U6ICdOb0RhdGEnIH07XG4gICAgfVxuXG4gICAgZGVidWcoJ0RhdGEgZmV0Y2hlZCBzdWNjZXNzZnVsbHknKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiByZXMuZGF0YS5tZW1iZXJJZCxcbiAgICAgICAgICB0eG5zOiByZXMuZGF0YS52YXJpYW50cy5tYXAodmFyaWFudFRvVHJhbnNhY3Rpb24pLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJlaGF0c2RhYVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQXNHLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBR3RHLE1BQU1HLFFBQVEsR0FBRyw4QkFBOEI7QUFDL0MsTUFBTUMsU0FBUyxHQUFHLEdBQUdELFFBQVEsUUFBUTtBQUNyQyxNQUFNRSxvQkFBb0IsR0FBRyw2REFBNkQ7QUFFMUYsTUFBTUMsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxXQUFXLENBQUM7QUFxQm5DLFNBQVNDLG9CQUFvQkEsQ0FBQ0MsT0FBZ0IsRUFBZTtFQUMzRDtFQUNBLE1BQU1DLGNBQWMsR0FBRyxDQUFDRCxPQUFPLENBQUNFLGFBQWE7RUFDN0MsT0FBTztJQUNMQyxJQUFJLEVBQUVDLDhCQUFnQixDQUFDQyxNQUFNO0lBQzdCQyxVQUFVLEVBQUVOLE9BQU8sQ0FBQ08sY0FBYztJQUNsQ0MsSUFBSSxFQUFFLElBQUFDLGVBQU0s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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _definitions = require("../definitions");
|
|
4
|
+
var _testsUtils = require("../tests/tests-utils");
|
|
5
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
6
|
+
var _behatsdaa = _interopRequireDefault(require("./behatsdaa"));
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
9
|
+
describe('Behatsdaa scraper', () => {
|
|
10
|
+
beforeAll(() => {
|
|
11
|
+
(0, _testsUtils.extendAsyncTimeout)();
|
|
12
|
+
});
|
|
13
|
+
it('should expose login fields in scrapers constant', () => {
|
|
14
|
+
expect(_definitions.SCRAPERS[_definitions.CompanyTypes.behatsdaa]).toBeDefined();
|
|
15
|
+
expect(_definitions.SCRAPERS[_definitions.CompanyTypes.behatsdaa].loginFields).toContain('id');
|
|
16
|
+
expect(_definitions.SCRAPERS[_definitions.CompanyTypes.behatsdaa].loginFields).toContain('password');
|
|
17
|
+
});
|
|
18
|
+
(0, _testsUtils.maybeTestCompanyAPI)(_definitions.CompanyTypes.behatsdaa, config => config.companyAPI.invalidPassword)('should fail on invalid user/password"', async () => {
|
|
19
|
+
const scraper = new _behatsdaa.default({
|
|
20
|
+
...testsConfig.options,
|
|
21
|
+
companyId: _definitions.CompanyTypes.behatsdaa
|
|
22
|
+
});
|
|
23
|
+
const result = await scraper.scrape({
|
|
24
|
+
id: 'foofoofoo',
|
|
25
|
+
password: 'barbarbar'
|
|
26
|
+
});
|
|
27
|
+
expect(result).toBeDefined();
|
|
28
|
+
expect(result.success).toBeFalsy();
|
|
29
|
+
expect(result.errorType).toBe(_baseScraperWithBrowser.LoginResults.InvalidPassword);
|
|
30
|
+
});
|
|
31
|
+
(0, _testsUtils.maybeTestCompanyAPI)(_definitions.CompanyTypes.behatsdaa)('should scrape transactions', async () => {
|
|
32
|
+
const scraper = new _behatsdaa.default({
|
|
33
|
+
...testsConfig.options,
|
|
34
|
+
companyId: _definitions.CompanyTypes.behatsdaa
|
|
35
|
+
});
|
|
36
|
+
const result = await scraper.scrape(testsConfig.credentials[_definitions.CompanyTypes.behatsdaa]);
|
|
37
|
+
expect(result).toBeDefined();
|
|
38
|
+
expect(result.errorMessage).toBeFalsy();
|
|
39
|
+
expect(result.errorType).toBeFalsy();
|
|
40
|
+
expect(result.success).toBeTruthy();
|
|
41
|
+
expect(result.accounts).toBeDefined();
|
|
42
|
+
expect(result.accounts).toHaveLength(1);
|
|
43
|
+
(0, _testsUtils.exportTransactions)(_definitions.CompanyTypes.behatsdaa, result.accounts || []);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmaW5pdGlvbnMiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9iZWhhdHNkYWEiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidGVzdHNDb25maWciLCJnZXRUZXN0c0NvbmZpZyIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiZXh0ZW5kQXN5bmNUaW1lb3V0IiwiaXQiLCJleHBlY3QiLCJTQ1JBUEVSUyIsIkNvbXBhbnlUeXBlcyIsImJlaGF0c2RhYSIsInRvQmVEZWZpbmVkIiwibG9naW5GaWVsZHMiLCJ0b0NvbnRhaW4iLCJtYXliZVRlc3RDb21wYW55QVBJIiwiY29uZmlnIiwiY29tcGFueUFQSSIsImludmFsaWRQYXNzd29yZCIsInNjcmFwZXIiLCJCZWhhdHNkYWFTY3JhcGVyIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInJlc3VsdCIsInNjcmFwZSIsImlkIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3JNZXNzYWdlIiwidG9CZVRydXRoeSIsImFjY291bnRzIiwidG9IYXZlTGVuZ3RoIiwiZXhwb3J0VHJhbnNhY3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JlaGF0c2RhYS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBhbnlUeXBlcywgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBleHBvcnRUcmFuc2FjdGlvbnMsIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIG1heWJlVGVzdENvbXBhbnlBUEkgfSBmcm9tICcuLi90ZXN0cy90ZXN0cy11dGlscyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IEJlaGF0c2RhYVNjcmFwZXIgZnJvbSAnLi9iZWhhdHNkYWEnO1xuXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdCZWhhdHNkYWEgc2NyYXBlcicsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBleHRlbmRBc3luY1RpbWVvdXQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSU1tDb21wYW55VHlwZXMuYmVoYXRzZGFhXSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlNbQ29tcGFueVR5cGVzLmJlaGF0c2RhYV0ubG9naW5GaWVsZHMpLnRvQ29udGFpbignaWQnKTtcbiAgICBleHBlY3QoU0NSQVBFUlNbQ29tcGFueVR5cGVzLmJlaGF0c2RhYV0ubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDb21wYW55VHlwZXMuYmVoYXRzZGFhLCBjb25maWcgPT4gY29uZmlnLmNvbXBhbnlBUEkuaW52YWxpZFBhc3N3b3JkKShcbiAgICAnc2hvdWxkIGZhaWwgb24gaW52YWxpZCB1c2VyL3Bhc3N3b3JkXCInLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgQmVoYXRzZGFhU2NyYXBlcih7XG4gICAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzLmJlaGF0c2RhYSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh7IGlkOiAnZm9vZm9vZm9vJywgcGFzc3dvcmQ6ICdiYXJiYXJiYXInIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICAgIH0sXG4gICk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDb21wYW55VHlwZXMuYmVoYXRzZGFhKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBCZWhhdHNkYWFTY3JhcGVyKHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENvbXBhbnlUeXBlcy5iZWhhdHNkYWEsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh0ZXN0c0NvbmZpZy5jcmVkZW50aWFsc1tDb21wYW55VHlwZXMuYmVoYXRzZGFhXSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QocmVzdWx0LmVycm9yTWVzc2FnZSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvclR5cGUpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChyZXN1bHQuc3VjY2VzcykudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChyZXN1bHQuYWNjb3VudHMpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KHJlc3VsdC5hY2NvdW50cykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGV4cG9ydFRyYW5zYWN0aW9ucyhDb21wYW55VHlwZXMuYmVoYXRzZGFhLCByZXN1bHQuYWNjb3VudHMgfHwgW10pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHVCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFBMkMsU0FBQUksdUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFM0MsTUFBTUcsV0FBVyxHQUFHLElBQUFDLDBCQUFjLEVBQUMsQ0FBQztBQUVwQ0MsUUFBUSxDQUFDLG1CQUFtQixFQUFFLE1BQU07RUFDbENDLFNBQVMsQ0FBQyxNQUFNO0lBQ2QsSUFBQUMsOEJBQWtCLEVBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRkMsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLE1BQU07SUFDMURDLE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MseUJBQVksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDdERKLE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MseUJBQVksQ0FBQ0MsU0FBUyxDQUFDLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3BFTixNQUFNLENBQUNDLHFCQUFRLENBQUNDLHlCQUFZLENBQUNDLFNBQVMsQ0FBQyxDQUFDRSxXQUFXLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQztFQUM1RSxDQUFDLENBQUM7RUFFRixJQUFBQywrQkFBbUIsRUFBQ0wseUJBQVksQ0FBQ0MsU0FBUyxFQUFFSyxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDQyxlQUFlLENBQUMsQ0FDdEYsdUNBQXVDLEVBQ3ZDLFlBQVk7SUFDVixNQUFNQyxPQUFPLEdBQUcsSUFBSUMsa0JBQWdCLENBQUM7TUFDbkMsR0FBR2xCLFdBQVcsQ0FBQ21CLE9BQU87TUFDdEJDLFNBQVMsRUFBRVoseUJBQVksQ0FBQ0M7SUFDMUIsQ0FBQyxDQUFDO0lBRUYsTUFBTVksTUFBTSxHQUFHLE1BQU1KLE9BQU8sQ0FBQ0ssTUFBTSxDQUFDO01BQUVDLEVBQUUsRUFBRSxXQUFXO01BQUVDLFFBQVEsRUFBRTtJQUFZLENBQUMsQ0FBQztJQUUvRWxCLE1BQU0sQ0FBQ2UsTUFBTSxDQUFDLENBQUNYLFdBQVcsQ0FBQyxDQUFDO0lBQzVCSixNQUFNLENBQUNlLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDcEIsTUFBTSxDQUFDZSxNQUFNLENBQUNNLFNBQVMsQ0FBQyxDQUFDQyxJQUFJLENBQUNDLG9DQUFZLENBQUNDLGVBQWUsQ0FBQztFQUM3RCxDQUNGLENBQUM7RUFFRCxJQUFBakIsK0JBQW1CLEVBQUNMLHlCQUFZLENBQUNDLFNBQVMsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLFlBQVk7SUFDcEYsTUFBTVEsT0FBTyxHQUFHLElBQUlDLGtCQUFnQixDQUFDO01BQ25DLEdBQUdsQixXQUFXLENBQUNtQixPQUFPO01BQ3RCQyxTQUFTLEVBQUVaLHlCQUFZLENBQUNDO0lBQzFCLENBQUMsQ0FBQztJQUVGLE1BQU1ZLE1BQU0sR0FBRyxNQUFNSixPQUFPLENBQUNLLE1BQU0sQ0FBQ3RCLFdBQVcsQ0FBQytCLFdBQVcsQ0FBQ3ZCLHlCQUFZLENBQUNDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BGSCxNQUFNLENBQUNlLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QkosTUFBTSxDQUFDZSxNQUFNLENBQUNXLFlBQVksQ0FBQyxDQUFDTixTQUFTLENBQUMsQ0FBQztJQUN2Q3BCLE1BQU0sQ0FBQ2UsTUFBTSxDQUFDTSxTQUFTLENBQUMsQ0FBQ0QsU0FBUyxDQUFDLENBQUM7SUFDcENwQixNQUFNLENBQUNlLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUNRLFVBQVUsQ0FBQyxDQUFDO0lBQ25DM0IsTUFBTSxDQUFDZSxNQUFNLENBQUNhLFFBQVEsQ0FBQyxDQUFDeEIsV0FBVyxDQUFDLENBQUM7SUFDckNKLE1BQU0sQ0FBQ2UsTUFBTSxDQUFDYSxRQUFRLENBQUMsQ0FBQ0MsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFBQyw4QkFBa0IsRUFBQzVCLHlCQUFZLENBQUNDLFNBQVMsRUFBRVksTUFBTSxDQUFDYSxRQUFRLElBQUksRUFBRSxDQUFDO0VBQ25FLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _baseBeinleumiGroup = _interopRequireDefault(require("./base-beinleumi-group"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
class BeinleumiScraper extends _baseBeinleumiGroup.default {
|
|
10
|
+
BASE_URL = 'https://online.fibi.co.il';
|
|
11
|
+
LOGIN_URL = `${this.BASE_URL}/MatafLoginService/MatafLoginServlet?bankId=FIBIPORTAL&site=Private&KODSAFA=HE`;
|
|
12
|
+
TRANSACTIONS_URL = `${this.BASE_URL}/wps/myportal/FibiMenu/Online/OnAccountMngment/OnBalanceTrans/PrivateAccountFlow`;
|
|
13
|
+
}
|
|
14
|
+
var _default = exports.default = BeinleumiScraper;
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUJlaW5sZXVtaUdyb3VwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJCZWlubGV1bWlTY3JhcGVyIiwiQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciIsIkJBU0VfVVJMIiwiTE9HSU5fVVJMIiwiVFJBTlNBQ1RJT05TX1VSTCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iZWlubGV1bWkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJlaW5sZXVtaUdyb3VwQmFzZVNjcmFwZXIgZnJvbSAnLi9iYXNlLWJlaW5sZXVtaS1ncm91cCc7XG5cbmNsYXNzIEJlaW5sZXVtaVNjcmFwZXIgZXh0ZW5kcyBCZWlubGV1bWlHcm91cEJhc2VTY3JhcGVyIHtcbiAgQkFTRV9VUkwgPSAnaHR0cHM6Ly9vbmxpbmUuZmliaS5jby5pbCc7XG5cbiAgTE9HSU5fVVJMID0gYCR7dGhpcy5CQVNFX1VSTH0vTWF0YWZMb2dpblNlcnZpY2UvTWF0YWZMb2dpblNlcnZsZXQ/YmFua0lkPUZJQklQT1JUQUwmc2l0ZT1Qcml2YXRlJktPRFNBRkE9SEVgO1xuXG4gIFRSQU5TQUNUSU9OU19VUkwgPSBgJHt0aGlzLkJBU0VfVVJMfS93cHMvbXlwb3J0YWwvRmliaU1lbnUvT25saW5lL09uQWNjb3VudE1uZ21lbnQvT25CYWxhbmNlVHJhbnMvUHJpdmF0ZUFjY291bnRGbG93YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQmVpbmxldW1pU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsbUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUErRCxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUvRCxNQUFNRyxnQkFBZ0IsU0FBU0MsMkJBQXlCLENBQUM7RUFDdkRDLFFBQVEsR0FBRywyQkFBMkI7RUFFdENDLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQ0QsUUFBUSxnRkFBZ0Y7RUFFNUdFLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDRixRQUFRLGtGQUFrRjtBQUN2SDtBQUFDLElBQUFHLFFBQUEsR0FBQUMsT0FBQSxDQUFBUCxPQUFBLEdBRWNDLGdCQUFnQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _beinleumi = _interopRequireDefault(require("./beinleumi"));
|
|
4
|
+
var _testsUtils = require("../tests/tests-utils");
|
|
5
|
+
var _definitions = require("../definitions");
|
|
6
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const COMPANY_ID = 'beinleumi'; // TODO this property should be hard-coded in the provider
|
|
9
|
+
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
10
|
+
describe('Beinleumi', () => {
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
(0, _testsUtils.extendAsyncTimeout)(); // The default timeout is 5 seconds per async test, this function extends the timeout value
|
|
13
|
+
});
|
|
14
|
+
test('should expose login fields in scrapers constant', () => {
|
|
15
|
+
expect(_definitions.SCRAPERS.beinleumi).toBeDefined();
|
|
16
|
+
expect(_definitions.SCRAPERS.beinleumi.loginFields).toContain('username');
|
|
17
|
+
expect(_definitions.SCRAPERS.beinleumi.loginFields).toContain('password');
|
|
18
|
+
});
|
|
19
|
+
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID, config => config.companyAPI.invalidPassword)('should fail on invalid user/password', async () => {
|
|
20
|
+
const options = {
|
|
21
|
+
...testsConfig.options,
|
|
22
|
+
companyId: COMPANY_ID
|
|
23
|
+
};
|
|
24
|
+
const scraper = new _beinleumi.default(options);
|
|
25
|
+
const result = await scraper.scrape({
|
|
26
|
+
username: 'e10s12',
|
|
27
|
+
password: '3f3ss3d'
|
|
28
|
+
});
|
|
29
|
+
expect(result).toBeDefined();
|
|
30
|
+
expect(result.success).toBeFalsy();
|
|
31
|
+
expect(result.errorType).toBe(_baseScraperWithBrowser.LoginResults.InvalidPassword);
|
|
32
|
+
});
|
|
33
|
+
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions"', async () => {
|
|
34
|
+
const options = {
|
|
35
|
+
...testsConfig.options,
|
|
36
|
+
companyId: COMPANY_ID
|
|
37
|
+
};
|
|
38
|
+
const scraper = new _beinleumi.default(options);
|
|
39
|
+
const result = await scraper.scrape(testsConfig.credentials.beinleumi);
|
|
40
|
+
expect(result).toBeDefined();
|
|
41
|
+
const error = `${result.errorType || ''} ${result.errorMessage || ''}`.trim();
|
|
42
|
+
expect(error).toBe('');
|
|
43
|
+
expect(result.success).toBeTruthy();
|
|
44
|
+
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmVpbmxldW1pIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdGVzdHNVdGlscyIsIl9kZWZpbml0aW9ucyIsIl9iYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQ09NUEFOWV9JRCIsInRlc3RzQ29uZmlnIiwiZ2V0VGVzdHNDb25maWciLCJkZXNjcmliZSIsImJlZm9yZUFsbCIsImV4dGVuZEFzeW5jVGltZW91dCIsInRlc3QiLCJleHBlY3QiLCJTQ1JBUEVSUyIsImJlaW5sZXVtaSIsInRvQmVEZWZpbmVkIiwibG9naW5GaWVsZHMiLCJ0b0NvbnRhaW4iLCJtYXliZVRlc3RDb21wYW55QVBJIiwiY29uZmlnIiwiY29tcGFueUFQSSIsImludmFsaWRQYXNzd29yZCIsIm9wdGlvbnMiLCJjb21wYW55SWQiLCJzY3JhcGVyIiwiQmVpbmxldW1pU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImV4cG9ydFRyYW5zYWN0aW9ucyIsImFjY291bnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JlaW5sZXVtaS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCZWlubGV1bWlTY3JhcGVyIGZyb20gJy4vYmVpbmxldW1pJztcbmltcG9ydCB7IG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL3Rlc3RzL3Rlc3RzLXV0aWxzJztcbmltcG9ydCB7IFNDUkFQRVJTIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgQ09NUEFOWV9JRCA9ICdiZWlubGV1bWknOyAvLyBUT0RPIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGhhcmQtY29kZWQgaW4gdGhlIHByb3ZpZGVyXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdCZWlubGV1bWknLCAoKSA9PiB7XG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgZXh0ZW5kQXN5bmNUaW1lb3V0KCk7IC8vIFRoZSBkZWZhdWx0IHRpbWVvdXQgaXMgNSBzZWNvbmRzIHBlciBhc3luYyB0ZXN0LCB0aGlzIGZ1bmN0aW9uIGV4dGVuZHMgdGhlIHRpbWVvdXQgdmFsdWVcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIGV4cG9zZSBsb2dpbiBmaWVsZHMgaW4gc2NyYXBlcnMgY29uc3RhbnQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmJlaW5sZXVtaSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuYmVpbmxldW1pLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ3VzZXJuYW1lJyk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmJlaW5sZXVtaS5sb2dpbkZpZWxkcykudG9Db250YWluKCdwYXNzd29yZCcpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQsIGNvbmZpZyA9PiBjb25maWcuY29tcGFueUFQSS5pbnZhbGlkUGFzc3dvcmQpKFxuICAgICdzaG91bGQgZmFpbCBvbiBpbnZhbGlkIHVzZXIvcGFzc3dvcmQnLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgQmVpbmxldW1pU2NyYXBlcihvcHRpb25zKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUoeyB1c2VybmFtZTogJ2UxMHMxMicsIHBhc3N3b3JkOiAnM2Yzc3MzZCcgfSk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvclR5cGUpLnRvQmUoTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZCk7XG4gICAgfSxcbiAgKTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQpKCdzaG91bGQgc2NyYXBlIHRyYW5zYWN0aW9uc1wiJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IEJlaW5sZXVtaVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUodGVzdHNDb25maWcuY3JlZGVudGlhbHMuYmVpbmxldW1pKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxV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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Transaction } from '../transactions';
|
|
2
|
+
import { BaseScraperWithBrowser, type PossibleLoginResults } from './base-scraper-with-browser';
|
|
3
|
+
type ScraperSpecificCredentials = {
|
|
4
|
+
id: string;
|
|
5
|
+
password: string;
|
|
6
|
+
};
|
|
7
|
+
declare class BeyahadBishvilhaScraper extends BaseScraperWithBrowser<ScraperSpecificCredentials> {
|
|
8
|
+
protected getViewPort(): {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
getLoginOptions(credentials: ScraperSpecificCredentials): {
|
|
13
|
+
loginUrl: string;
|
|
14
|
+
fields: {
|
|
15
|
+
selector: string;
|
|
16
|
+
value: string;
|
|
17
|
+
}[];
|
|
18
|
+
submitButtonSelector: () => Promise<void>;
|
|
19
|
+
possibleResults: PossibleLoginResults;
|
|
20
|
+
};
|
|
21
|
+
fetchData(): Promise<{
|
|
22
|
+
success: boolean;
|
|
23
|
+
accounts: {
|
|
24
|
+
accountNumber: any;
|
|
25
|
+
balance: number;
|
|
26
|
+
txns: Transaction[];
|
|
27
|
+
}[];
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export default BeyahadBishvilhaScraper;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _moment = _interopRequireDefault(require("moment"));
|
|
8
|
+
var _constants = require("../constants");
|
|
9
|
+
var _debug = require("../helpers/debug");
|
|
10
|
+
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
11
|
+
var _transactions = require("../helpers/transactions");
|
|
12
|
+
var _transactions2 = require("../transactions");
|
|
13
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
const debug = (0, _debug.getDebug)('beyahadBishvilha');
|
|
16
|
+
const DATE_FORMAT = 'DD/MM/YY';
|
|
17
|
+
const LOGIN_URL = 'https://www.hist.org.il/login';
|
|
18
|
+
const SUCCESS_URL = 'https://www.hist.org.il/';
|
|
19
|
+
const CARD_URL = 'https://www.hist.org.il/card/balanceAndUses';
|
|
20
|
+
function getAmountData(amountStr) {
|
|
21
|
+
const amountStrCln = amountStr.replace(',', '');
|
|
22
|
+
let currency = null;
|
|
23
|
+
let amount = null;
|
|
24
|
+
if (amountStrCln.includes(_constants.SHEKEL_CURRENCY_SYMBOL)) {
|
|
25
|
+
amount = parseFloat(amountStrCln.replace(_constants.SHEKEL_CURRENCY_SYMBOL, ''));
|
|
26
|
+
currency = _constants.SHEKEL_CURRENCY;
|
|
27
|
+
} else if (amountStrCln.includes(_constants.DOLLAR_CURRENCY_SYMBOL)) {
|
|
28
|
+
amount = parseFloat(amountStrCln.replace(_constants.DOLLAR_CURRENCY_SYMBOL, ''));
|
|
29
|
+
currency = _constants.DOLLAR_CURRENCY;
|
|
30
|
+
} else if (amountStrCln.includes(_constants.EURO_CURRENCY_SYMBOL)) {
|
|
31
|
+
amount = parseFloat(amountStrCln.replace(_constants.EURO_CURRENCY_SYMBOL, ''));
|
|
32
|
+
currency = _constants.EURO_CURRENCY;
|
|
33
|
+
} else {
|
|
34
|
+
const parts = amountStrCln.split(' ');
|
|
35
|
+
[currency] = parts;
|
|
36
|
+
amount = parseFloat(parts[1]);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
amount,
|
|
40
|
+
currency
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function convertTransactions(txns) {
|
|
44
|
+
debug(`convert ${txns.length} raw transactions to official Transaction structure`);
|
|
45
|
+
return txns.map(txn => {
|
|
46
|
+
const chargedAmountTuple = getAmountData(txn.chargedAmount || '');
|
|
47
|
+
const txnProcessedDate = (0, _moment.default)(txn.date, DATE_FORMAT);
|
|
48
|
+
const result = {
|
|
49
|
+
type: _transactions2.TransactionTypes.Normal,
|
|
50
|
+
status: _transactions2.TransactionStatuses.Completed,
|
|
51
|
+
date: txnProcessedDate.toISOString(),
|
|
52
|
+
processedDate: txnProcessedDate.toISOString(),
|
|
53
|
+
originalAmount: chargedAmountTuple.amount,
|
|
54
|
+
originalCurrency: chargedAmountTuple.currency,
|
|
55
|
+
chargedAmount: chargedAmountTuple.amount,
|
|
56
|
+
chargedCurrency: chargedAmountTuple.currency,
|
|
57
|
+
description: txn.description || '',
|
|
58
|
+
memo: '',
|
|
59
|
+
identifier: txn.identifier
|
|
60
|
+
};
|
|
61
|
+
return result;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async function fetchTransactions(page, options) {
|
|
65
|
+
await page.goto(CARD_URL);
|
|
66
|
+
await (0, _elementsInteractions.waitUntilElementFound)(page, '.react-loading.hide', false);
|
|
67
|
+
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years');
|
|
68
|
+
const startDate = options.startDate || defaultStartMoment.toDate();
|
|
69
|
+
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
70
|
+
const accountNumber = await (0, _elementsInteractions.pageEval)(page, '.wallet-details div:nth-of-type(2)', null, element => {
|
|
71
|
+
return element.innerText.replace('מספר כרטיס ', '');
|
|
72
|
+
});
|
|
73
|
+
const balance = await (0, _elementsInteractions.pageEval)(page, '.wallet-details div:nth-of-type(4) > span:nth-of-type(2)', null, element => {
|
|
74
|
+
return element.innerText;
|
|
75
|
+
});
|
|
76
|
+
debug('fetch raw transactions from page');
|
|
77
|
+
const rawTransactions = await (0, _elementsInteractions.pageEvalAll)(page, '.transaction-container, .transaction-component-container', [], items => {
|
|
78
|
+
return items.map(el => {
|
|
79
|
+
const columns = el.querySelectorAll('.transaction-item > span');
|
|
80
|
+
if (columns.length === 7) {
|
|
81
|
+
return {
|
|
82
|
+
date: columns[0].innerText,
|
|
83
|
+
identifier: columns[1].innerText,
|
|
84
|
+
description: columns[3].innerText,
|
|
85
|
+
type: columns[5].innerText,
|
|
86
|
+
chargedAmount: columns[6].innerText
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
debug(`fetched ${rawTransactions.length} raw transactions from page`);
|
|
93
|
+
const accountTransactions = convertTransactions(rawTransactions.filter(item => !!item));
|
|
94
|
+
debug('filer out old transactions');
|
|
95
|
+
const txns = options.outputData?.enableTransactionsFilterByDate ?? true ? (0, _transactions.filterOldTransactions)(accountTransactions, startMoment, false) : accountTransactions;
|
|
96
|
+
debug(`found ${txns.length} valid transactions out of ${accountTransactions.length} transactions for account ending with ${accountNumber.substring(accountNumber.length - 2)}`);
|
|
97
|
+
return {
|
|
98
|
+
accountNumber,
|
|
99
|
+
balance: getAmountData(balance).amount,
|
|
100
|
+
txns
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function getPossibleLoginResults() {
|
|
104
|
+
const urls = {};
|
|
105
|
+
urls[_baseScraperWithBrowser.LoginResults.Success] = [SUCCESS_URL];
|
|
106
|
+
urls[_baseScraperWithBrowser.LoginResults.ChangePassword] = []; // TODO
|
|
107
|
+
urls[_baseScraperWithBrowser.LoginResults.InvalidPassword] = []; // TODO
|
|
108
|
+
urls[_baseScraperWithBrowser.LoginResults.UnknownError] = []; // TODO
|
|
109
|
+
return urls;
|
|
110
|
+
}
|
|
111
|
+
function createLoginFields(credentials) {
|
|
112
|
+
return [{
|
|
113
|
+
selector: '#loginId',
|
|
114
|
+
value: credentials.id
|
|
115
|
+
}, {
|
|
116
|
+
selector: '#loginPassword',
|
|
117
|
+
value: credentials.password
|
|
118
|
+
}];
|
|
119
|
+
}
|
|
120
|
+
class BeyahadBishvilhaScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
121
|
+
getViewPort() {
|
|
122
|
+
return {
|
|
123
|
+
width: 1500,
|
|
124
|
+
height: 800
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
getLoginOptions(credentials) {
|
|
128
|
+
return {
|
|
129
|
+
loginUrl: LOGIN_URL,
|
|
130
|
+
fields: createLoginFields(credentials),
|
|
131
|
+
submitButtonSelector: async () => {
|
|
132
|
+
const button = await this.page.$('xpath//button[contains(., "התחבר")]');
|
|
133
|
+
if (button) {
|
|
134
|
+
await button.click();
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
possibleResults: getPossibleLoginResults()
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
async fetchData() {
|
|
141
|
+
const account = await fetchTransactions(this.page, this.options);
|
|
142
|
+
return {
|
|
143
|
+
success: true,
|
|
144
|
+
accounts: [account]
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
var _default = exports.default = BeyahadBishvilhaScraper;
|
|
149
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX3RyYW5zYWN0aW9ucyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImdldERlYnVnIiwiREFURV9GT1JNQVQiLCJMT0dJTl9VUkwiLCJTVUNDRVNTX1VSTCIsIkNBUkRfVVJMIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsImluY2x1ZGVzIiwiU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCIsInBhcnNlRmxvYXQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MIiwiRE9MTEFSX0NVUlJFTkNZIiwiRVVST19DVVJSRU5DWV9TWU1CT0wiLCJFVVJPX0NVUlJFTkNZIiwicGFydHMiLCJzcGxpdCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibGVuZ3RoIiwibWFwIiwidHhuIiwiY2hhcmdlZEFtb3VudFR1cGxlIiwiY2hhcmdlZEFtb3VudCIsInR4blByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJkYXRlIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwidG9JU09TdHJpbmciLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiaWRlbnRpZmllciIsImZldGNoVHJhbnNhY3Rpb25zIiwicGFnZSIsIm9wdGlvbnMiLCJnb3RvIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsImFjY291bnROdW1iZXIiLCJwYWdlRXZhbCIsImVsZW1lbnQiLCJpbm5lclRleHQiLCJiYWxhbmNlIiwicmF3VHJhbnNhY3Rpb25zIiwicGFnZUV2YWxBbGwiLCJpdGVtcyIsImVsIiwiY29sdW1ucyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJhY2NvdW50VHJhbnNhY3Rpb25zIiwiZmlsdGVyIiwiaXRlbSIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJzdWJzdHJpbmciLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsImlkIiwicGFzc3dvcmQiLCJCZXlhaGFkQmlzaHZpbGhhU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRWaWV3UG9ydCIsIndpZHRoIiwiaGVpZ2h0IiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImJ1dHRvbiIsIiQiLCJjbGljayIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsImFjY291bnQiLCJzdWNjZXNzIiwiYWNjb3VudHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmV5YWhhZC1iaXNodmlsaGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7XG4gIERPTExBUl9DVVJSRU5DWSxcbiAgRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCxcbiAgRVVST19DVVJSRU5DWSxcbiAgRVVST19DVVJSRU5DWV9TWU1CT0wsXG4gIFNIRUtFTF9DVVJSRU5DWSxcbiAgU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCxcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBwYWdlRXZhbCwgcGFnZUV2YWxBbGwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2JleWFoYWRCaXNodmlsaGEnKTtcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVknO1xuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vd3d3Lmhpc3Qub3JnLmlsL2xvZ2luJztcbmNvbnN0IFNVQ0NFU1NfVVJMID0gJ2h0dHBzOi8vd3d3Lmhpc3Qub3JnLmlsLyc7XG5jb25zdCBDQVJEX1VSTCA9ICdodHRwczovL3d3dy5oaXN0Lm9yZy5pbC9jYXJkL2JhbGFuY2VBbmRVc2VzJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRhdGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBjaGFyZ2VkQW1vdW50OiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZykge1xuICBjb25zdCBhbW91bnRTdHJDbG4gPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgbGV0IGN1cnJlbmN5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbGV0IGFtb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKERPTExBUl9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gRE9MTEFSX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhFVVJPX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKEVVUk9fQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gRVVST19DVVJSRU5DWTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXJ0cyA9IGFtb3VudFN0ckNsbi5zcGxpdCgnICcpO1xuICAgIFtjdXJyZW5jeV0gPSBwYXJ0cztcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KHBhcnRzWzFdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYW1vdW50LFxuICAgIGN1cnJlbmN5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIGRlYnVnKGBjb252ZXJ0ICR7dHhucy5sZW5ndGh9IHJhdyB0cmFuc2FjdGlvbnMgdG8gb2ZmaWNpYWwgVHJhbnNhY3Rpb24gc3RydWN0dXJlYCk7XG4gIHJldHVybiB0eG5zLm1hcCh0eG4gPT4ge1xuICAgIGNvbnN0IGNoYXJnZWRBbW91bnRUdXBsZSA9IGdldEFtb3VudERhdGEodHhuLmNoYXJnZWRBbW91bnQgfHwgJycpO1xuICAgIGNvbnN0IHR4blByb2Nlc3NlZERhdGUgPSBtb21lbnQodHhuLmRhdGUsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBkYXRlOiB0eG5Qcm9jZXNzZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiB0eG5Qcm9jZXNzZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogY2hhcmdlZEFtb3VudFR1cGxlLmFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IGNoYXJnZWRBbW91bnRUdXBsZS5jdXJyZW5jeSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGNoYXJnZWRBbW91bnRUdXBsZS5hbW91bnQsXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6IGNoYXJnZWRBbW91bnRUdXBsZS5jdXJyZW5jeSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBtZW1vOiAnJyxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5pZGVudGlmaWVyLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgb3B0aW9uczogU2NyYXBlck9wdGlvbnMpIHtcbiAgYXdhaXQgcGFnZS5nb3RvKENBUkRfVVJMKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucmVhY3QtbG9hZGluZy5oaWRlJywgZmFsc2UpO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsICcud2FsbGV0LWRldGFpbHMgZGl2Om50aC1vZi10eXBlKDIpJywgbnVsbCwgZWxlbWVudCA9PiB7XG4gICAgcmV0dXJuIChlbGVtZW50IGFzIGFueSkuaW5uZXJUZXh0LnJlcGxhY2UoJ9ee16HXpNeoINeb16jXmNeZ16EgJywgJycpO1xuICB9KTtcblxuICBjb25zdCBiYWxhbmNlID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgJy53YWxsZXQtZGV0YWlscyBkaXY6bnRoLW9mLXR5cGUoNCkgPiBzcGFuOm50aC1vZi10eXBlKDIpJywgbnVsbCwgZWxlbWVudCA9PiB7XG4gICAgcmV0dXJuIChlbGVtZW50IGFzIGFueSkuaW5uZXJUZXh0O1xuICB9KTtcblxuICBkZWJ1ZygnZmV0Y2ggcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2UnKTtcblxuICBjb25zdCByYXdUcmFuc2FjdGlvbnM6IChTY3JhcGVkVHJhbnNhY3Rpb24gfCBudWxsKVtdID0gYXdhaXQgcGFnZUV2YWxBbGw8KFNjcmFwZWRUcmFuc2FjdGlvbiB8IG51bGwpW10+KFxuICAgIHBhZ2UsXG4gICAgJy50cmFuc2FjdGlvbi1jb250YWluZXIsIC50cmFuc2FjdGlvbi1jb21wb25lbnQtY29udGFpbmVyJyxcbiAgICBbXSxcbiAgICBpdGVtcyA9PiB7XG4gICAgICByZXR1cm4gaXRlbXMubWFwKGVsID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uczogTm9kZUxpc3RPZjxIVE1MU3BhbkVsZW1lbnQ+ID0gZWwucXVlcnlTZWxlY3RvckFsbCgnLnRyYW5zYWN0aW9uLWl0ZW0gPiBzcGFuJyk7XG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gNykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlOiBjb2x1bW5zWzBdLmlubmVyVGV4dCxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbHVtbnNbMV0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbnNbM10uaW5uZXJUZXh0LFxuICAgICAgICAgICAgdHlwZTogY29sdW1uc1s1XS5pbm5lclRleHQsXG4gICAgICAgICAgICBjaGFyZ2VkQW1vdW50OiBjb2x1bW5zWzZdLmlubmVyVGV4dCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgfSxcbiAgKTtcbiAgZGVidWcoYGZldGNoZWQgJHtyYXdUcmFuc2FjdGlvbnMubGVuZ3RofSByYXcgdHJhbnNhY3Rpb25zIGZyb20gcGFnZWApO1xuXG4gIGNvbnN0IGFjY291bnRUcmFuc2FjdGlvbnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHJhd1RyYW5zYWN0aW9ucy5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pIGFzIFNjcmFwZWRUcmFuc2FjdGlvbltdKTtcblxuICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgY29uc3QgdHhucyA9XG4gICAgKG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpXG4gICAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhY2NvdW50VHJhbnNhY3Rpb25zLCBzdGFydE1vbWVudCwgZmFsc2UpXG4gICAgICA6IGFjY291bnRUcmFuc2FjdGlvbnM7XG4gIGRlYnVnKFxuICAgIGBmb3VuZCAke3R4bnMubGVuZ3RofSB2YWxpZCB0cmFuc2FjdGlvbnMgb3V0IG9mICR7YWNjb3VudFRyYW5zYWN0aW9ucy5sZW5ndGh9IHRyYW5zYWN0aW9ucyBmb3IgYWNjb3VudCBlbmRpbmcgd2l0aCAke2FjY291bnROdW1iZXIuc3Vic3RyaW5nKGFjY291bnROdW1iZXIubGVuZ3RoIC0gMil9YCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgYmFsYW5jZTogZ2V0QW1vdW50RGF0YShiYWxhbmNlKS5hbW91bnQsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtTVUNDRVNTX1VSTF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtdOyAvLyBUT0RPXG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbXTsgLy8gVE9ET1xuICB1cmxzW0xvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3JdID0gW107IC8vIFRPRE9cbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjbG9naW5JZCcsIHZhbHVlOiBjcmVkZW50aWFscy5pZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjbG9naW5QYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIEJleWFoYWRCaXNodmlsaGFTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwcm90ZWN0ZWQgZ2V0Vmlld1BvcnQoKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IDE1MDAsXG4gICAgICBoZWlnaHQ6IDgwMCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLnBhZ2UuJCgneHBhdGgvL2J1dHRvbltjb250YWlucyguLCBcIteU16rXl9eR16hcIildJyk7XG4gICAgICAgIGlmIChidXR0b24pIHtcbiAgICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50czogW2FjY291bnRdLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQVFBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHFCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQThHLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzlHLE1BQU1HLEtBQUssR0FBRyxJQUFBQyxlQUFRLEVBQUMsa0JBQWtCLENBQUM7QUFFMUMsTUFBTUMsV0FBVyxHQUFHLFVBQVU7QUFDOUIsTUFBTUMsU0FBUyxHQUFHLCtCQUErQjtBQUNqRCxNQUFNQyxXQUFXLEdBQUcsMEJBQTBCO0FBQzlDLE1BQU1DLFFBQVEsR0FBRyw2Q0FBNkM7QUFVOUQsU0FBU0MsYUFBYUEsQ0FBQ0MsU0FBaUIsRUFBRTtFQUN4QyxNQUFNQyxZQUFZLEdBQUdELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7RUFDL0MsSUFBSUMsUUFBdUIsR0FBRyxJQUFJO0VBQ2xDLElBQUlDLE1BQXFCLEdBQUcsSUFBSTtFQUNoQyxJQUFJSCxZQUFZLENBQUNJLFFBQVEsQ0FBQ0MsaUNBQXNCLENBQUMsRUFBRTtJQUNqREYsTUFBTSxHQUFHRyxVQUFVLENBQUNOLFlBQVksQ0FBQ0MsT0FBTyxDQUFDSSxpQ0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRUgs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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _beyahadBishvilha = _interopRequireDefault(require("./beyahad-bishvilha"));
|
|
4
|
+
var _testsUtils = require("../tests/tests-utils");
|
|
5
|
+
var _definitions = require("../definitions");
|
|
6
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const COMPANY_ID = 'beyahadBishvilha'; // TODO this property should be hard-coded in the provider
|
|
9
|
+
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
10
|
+
describe('Beyahad Bishvilha scraper', () => {
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
(0, _testsUtils.extendAsyncTimeout)(); // The default timeout is 5 seconds per async test, this function extends the timeout value
|
|
13
|
+
});
|
|
14
|
+
test('should expose login fields in scrapers constant', () => {
|
|
15
|
+
expect(_definitions.SCRAPERS.beyahadBishvilha).toBeDefined();
|
|
16
|
+
expect(_definitions.SCRAPERS.beyahadBishvilha.loginFields).toContain('id');
|
|
17
|
+
expect(_definitions.SCRAPERS.beyahadBishvilha.loginFields).toContain('password');
|
|
18
|
+
});
|
|
19
|
+
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID, config => config.companyAPI.invalidPassword)('should fail on invalid user/password"', async () => {
|
|
20
|
+
const options = {
|
|
21
|
+
...testsConfig.options,
|
|
22
|
+
companyId: COMPANY_ID
|
|
23
|
+
};
|
|
24
|
+
const scraper = new _beyahadBishvilha.default(options);
|
|
25
|
+
const result = await scraper.scrape({
|
|
26
|
+
id: 'e10s12',
|
|
27
|
+
password: '3f3ss3d'
|
|
28
|
+
});
|
|
29
|
+
expect(result).toBeDefined();
|
|
30
|
+
expect(result.success).toBeFalsy();
|
|
31
|
+
expect(result.errorType).toBe(_baseScraperWithBrowser.LoginResults.InvalidPassword);
|
|
32
|
+
});
|
|
33
|
+
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions"', async () => {
|
|
34
|
+
const options = {
|
|
35
|
+
...testsConfig.options,
|
|
36
|
+
companyId: COMPANY_ID
|
|
37
|
+
};
|
|
38
|
+
const scraper = new _beyahadBishvilha.default(options);
|
|
39
|
+
const result = await scraper.scrape(testsConfig.credentials.beyahadBishvilha);
|
|
40
|
+
expect(result).toBeDefined();
|
|
41
|
+
const error = `${result.errorType || ''} ${result.errorMessage || ''}`.trim();
|
|
42
|
+
expect(error).toBe('');
|
|
43
|
+
expect(result.success).toBeTruthy();
|
|
44
|
+
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmV5YWhhZEJpc2h2aWxoYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfZGVmaW5pdGlvbnMiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJiZXlhaGFkQmlzaHZpbGhhIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJCZXlhaGFkQmlzaHZpbGhhU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsImlkIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImV4cG9ydFRyYW5zYWN0aW9ucyIsImFjY291bnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JleWFoYWQtYmlzaHZpbGhhLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJleWFoYWRCaXNodmlsaGFTY3JhcGVyIGZyb20gJy4vYmV5YWhhZC1iaXNodmlsaGEnO1xuaW1wb3J0IHsgbWF5YmVUZXN0Q29tcGFueUFQSSwgZXh0ZW5kQXN5bmNUaW1lb3V0LCBnZXRUZXN0c0NvbmZpZywgZXhwb3J0VHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ2JleWFoYWRCaXNodmlsaGEnOyAvLyBUT0RPIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGhhcmQtY29kZWQgaW4gdGhlIHByb3ZpZGVyXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdCZXlhaGFkIEJpc2h2aWxoYSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy5iZXlhaGFkQmlzaHZpbGhhKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5iZXlhaGFkQmlzaHZpbGhhLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ2lkJyk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmJleWFoYWRCaXNodmlsaGEubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lELCBjb25maWcgPT4gY29uZmlnLmNvbXBhbnlBUEkuaW52YWxpZFBhc3N3b3JkKShcbiAgICAnc2hvdWxkIGZhaWwgb24gaW52YWxpZCB1c2VyL3Bhc3N3b3JkXCInLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXIob3B0aW9ucyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgaWQ6ICdlMTBzMTInLCBwYXNzd29yZDogJzNmM3NzM2QnIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICAgIH0sXG4gICk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lEKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnNcIicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBCZXlhaGFkQmlzaHZpbGhhU2NyYXBlcihvcHRpb25zKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh0ZXN0c0NvbmZpZy5jcmVkZW50aWFscy5iZXlhaGFkQmlzaHZpbGhhKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsdUJBQUEsR0FBQUgsT0FBQTtBQUEyRCxTQUFBRCx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUzRCxNQUFNRyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUcsSUFBQUMsMEJBQWMsRUFBQyxDQUFDO0FBRXBDQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsTUFBTTtFQUMxQ0MsU0FBUyxDQUFDLE1BQU07SUFDZCxJQUFBQyw4QkFBa0IsRUFBQyxDQUFDLENBQUMsQ0FBQztFQUN4QixDQUFDLENBQUM7RUFFRkMsSUFBSSxDQUFDLGlEQUFpRCxFQUFFLE1BQU07SUFDNURDLE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDL0NILE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MsZ0JBQWdCLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzdETCxNQUFNLENBQUNDLHFCQUFRLENBQUNDLGdCQUFnQixDQUFDRSxXQUFXLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQztFQUNyRSxDQUFDLENBQUM7RUFFRixJQUFBQywrQkFBbUIsRUFBQ2IsVUFBVSxFQUFFYyxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDQyxlQUFlLENBQUMsQ0FDMUUsdUNBQXVDLEVBQ3ZDLFlBQVk7SUFDVixNQUFNQyxPQUFPLEdBQUc7TUFDZCxHQUFHaEIsV0FBVyxDQUFDZ0IsT0FBTztNQUN0QkMsU0FBUyxFQUFFbEI7SUFDYixDQUFDO0lBRUQsTUFBTW1CLE9BQU8sR0FBRyxJQUFJQyx5QkFBdUIsQ0FBQ0gsT0FBTyxDQUFDO0lBRXBELE1BQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQU0sQ0FBQztNQUFFQyxFQUFFLEVBQUUsUUFBUTtNQUFFQyxRQUFRLEVBQUU7SUFBVSxDQUFDLENBQUM7SUFFMUVqQixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QkgsTUFBTSxDQUFDYyxNQUFNLENBQUNJLE9BQU8sQ0FBQyxDQUFDQyxTQUFTLENBQUMsQ0FBQztJQUNsQ25CLE1BQU0sQ0FBQ2MsTUFBTSxDQUFDTSxTQUFTLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxlQUFlLENBQUM7RUFDN0QsQ0FDRixDQUFDO0VBRUQsSUFBQWpCLCtCQUFtQixFQUFDYixVQUFVLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxZQUFZO0lBQ3pFLE1BQU1pQixPQUFPLEdBQUc7TUFDZCxHQUFHaEIsV0FBVyxDQUFDZ0IsT0FBTztNQUN0QkMsU0FBUyxFQUFFbEI7SUFDYixDQUFDO0lBRUQsTUFBTW1CLE9BQU8sR0FBRyxJQUFJQyx5QkFBdUIsQ0FBQ0gsT0FBTyxDQUFDO0lBQ3BELE1BQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQU0sQ0FBQ3JCLFdBQVcsQ0FBQzhCLFdBQVcsQ0FBQ3RCLGdCQUFnQixDQUFDO0lBQzdFRixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QixNQUFNc0IsS0FBSyxHQUFHLEdBQUdYLE1BQU0sQ0FBQ00sU0FBUyxJQUFJLEVBQUUsSUFBSU4sTUFBTSxDQUFDWSxZQUFZLElBQUksRUFBRSxFQUFFLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQzdFM0IsTUFBTSxDQUFDeUIsS0FBSyxDQUFDLENBQUNKLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEJyQixNQUFNLENBQUNjLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUNVLFVBQVUsQ0FBQyxDQUFDO0lBRW5DLElBQUFDLDhCQUFrQixFQUFDcEMsVUFBVSxFQUFFcUIsTUFBTSxDQUFDZ0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztFQUN2RCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseScraperWithBrowser, type PossibleLoginResults } from './base-scraper-with-browser';
|
|
2
|
+
import { type ScraperScrapingResult } from './interface';
|
|
3
|
+
type ScraperSpecificCredentials = {
|
|
4
|
+
id: string;
|
|
5
|
+
password: string;
|
|
6
|
+
num: string;
|
|
7
|
+
};
|
|
8
|
+
declare class DiscountScraper extends BaseScraperWithBrowser<ScraperSpecificCredentials> {
|
|
9
|
+
getLoginOptions(credentials: ScraperSpecificCredentials): {
|
|
10
|
+
loginUrl: string;
|
|
11
|
+
checkReadiness: () => Promise<void>;
|
|
12
|
+
fields: {
|
|
13
|
+
selector: string;
|
|
14
|
+
value: string;
|
|
15
|
+
}[];
|
|
16
|
+
submitButtonSelector: string;
|
|
17
|
+
postAction: () => Promise<void>;
|
|
18
|
+
possibleResults: PossibleLoginResults;
|
|
19
|
+
};
|
|
20
|
+
fetchData(): Promise<ScraperScrapingResult>;
|
|
21
|
+
}
|
|
22
|
+
export default DiscountScraper;
|