summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-08-08 16:15:15 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-08-08 16:15:15 +0200
commit59c9119a66b693fbdf90164635010650bb1bf8a3 (patch)
tree9579737b239896623ee8da563fc55d8042b50439
parent83de9b4e355b87e3c5074268c5e0f03b1f2614ad (diff)
downloadbridge-59c9119a66b693fbdf90164635010650bb1bf8a3.tar.gz
bridge-59c9119a66b693fbdf90164635010650bb1bf8a3.zip
refactor splitGrabs
-rw-r--r--service_grab.js23
1 files changed, 12 insertions, 11 deletions
diff --git a/service_grab.js b/service_grab.js
index f820757..0d3cb1c 100644
--- a/service_grab.js
+++ b/service_grab.js
@@ -135,19 +135,20 @@ module.exports = class Analyzer extends Service {
// API requires maximum time interval of 4w
// return [payload, payload, …] with fixed createdAt
getSplitGrabs(payload, start, end) {
- let part_start = start, part_end = start,
+ let last_start = new Date(start.getTime()),
payloads = [];
// loop forwards, adding 4w until we passed NOW
- while (part_start < end) {
- part_end = new Date(part_end.getTime() + (4 * 60*60*24*7*1000)); // add 4w
- if(part_end > end) part_end = end;
- let pl = payload;
- pl["params"]["filter[createdAt-start]"] = part_start.toISOString();
- pl["params"]["filter[createdAt-end]"] = part_end.toISOString();
- // push a deep clone or the object will have the reference to part_start
- // which leads to all start/end dates being the same (?!)
- payloads.push(JSON.parse(JSON.stringify(pl))); // JavaScript sucks.
- part_start.setSeconds(part_end.getSeconds() + 1); // do not overlap start&end, or a match at created_at=start=end will appear twice
+ while (last_start < end) {
+ let this_end = new Date(last_start.getTime() + (4 * 60*60*24*7*1000)), // add 4w
+ this_start = new Date(last_start.getTime());
+
+ if(this_end > end) this_end = end;
+ let pl = JSON.parse(JSON.stringify(payload));
+ pl["params"]["filter[createdAt-start]"] = this_start.toISOString();
+ pl["params"]["filter[createdAt-end]"] = this_end.toISOString();
+ payloads.push(pl);
+ // +1s, do not overlap start&end, or a match at created_at=start=end will appear twice
+ last_start = new Date(this_end.getTime() + 1000);
}
return payloads;
}