-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparallelCodes.js
More file actions
80 lines (63 loc) · 2.09 KB
/
Copy pathparallelCodes.js
File metadata and controls
80 lines (63 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const tryCodesParallel = async () => {
const resultLookup = 'input type="text" name="changecouponcode"';
const resultEnd = 'u class="cancelCoupon" data-type="cancel"';
const body = document.querySelector('body');
const results = [];
const insertResult = (result) => {
const input = document.querySelector('input[name=changecouponcode]');
const apply = document.querySelector('span.useCoupon');
input.value = result.code;
if (result.discount > 0.0) {
apply.click();
}
};
const loadCodes = () => {
const url = chrome.runtime.getURL('data/codes.json');
return new Promise((resolve, reject) => {
fetch(url)
.then((response) => response.json()) //assuming file contains json
.then((json) => resolve(json));
})
};
const sendReq = (code) => {
return new Promise((resolve, reject) => {
$.ajax ({
url: 'https://www.banggood.com/index.php',
type: 'POST',
data: `com=shopcartnew&t=useCoupon&coupon_code=${code}&step=1&useCoupstep=2&clearCoupon=undefined`,
dataType: 'html',
success: (data) => {
const idx = data.indexOf(resultLookup);
const result = data.substring(idx);
const idx2 = result.indexOf(resultEnd);
const result2 = result.substring(0, idx2);
const discountStr = result2.match(/\d+\.\d+/);
const discount = {code, discount: discountStr ? parseFloat(discountStr) : 0.0};
resolve(discount);
},
error: (error) => {
reject(error);
}
});
});
};
body.classList.add('transparent-box');
const codes = await loadCodes();
console.log(codes);
for (const code of codes) {
results.push(sendReq(code));
}
Promise.all(results).then((values) => {
console.log('resolved');
const result = values.reduce((max, curr) => {
if (max.discount < curr.discount) {
return curr;
}
return max;
}, {code: 'NO DISCOUNT FOUND', discount: 0.0}
);
console.log(result);
insertResult(result);
body.classList.remove('transparent-box');
});
};