diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-08-08 16:15:15 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-08-08 16:15:15 +0200 |
| commit | 59c9119a66b693fbdf90164635010650bb1bf8a3 (patch) | |
| tree | 9579737b239896623ee8da563fc55d8042b50439 | |
| parent | 83de9b4e355b87e3c5074268c5e0f03b1f2614ad (diff) | |
| download | bridge-59c9119a66b693fbdf90164635010650bb1bf8a3.tar.gz bridge-59c9119a66b693fbdf90164635010650bb1bf8a3.zip | |
refactor splitGrabs
| -rw-r--r-- | service_grab.js | 23 |
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; } |
