-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrefresher.js
executable file
·72 lines (56 loc) · 2.15 KB
/
refresher.js
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
const client = require("http");
const PropertiesReader = require('properties-reader');
const properties = PropertiesReader('scraper.properties');
const url = properties.get("service.refresh.url")
const scrapeRequiredUsername = properties.get("service.username")
const scrapeRequiredPassword = properties.get("service.password")
const refreshIntervalMins = properties.get("refresh.interval-mins")
// Note 24 hr clock
const scrapeStartHour = properties.get("refresh.start-hour")
const scrapeEndHour = properties.get("refresh.end-hour")
async function callDataRefresh() {
console.log("Calling refresh")
await getRemoteData(url)
.then((response) => {
if (response==="ok") {
console.log ("Data refreshing")
} else {
console.log ("Unknown response to refresh - [" + response + "]")
}
})
.catch((err) => {
console.log ("Error with refresh call - [" + err + "]")
})
}
const getRemoteData = (url) => new Promise((resolve, reject) => {
const credentials = scrapeRequiredUsername + ':' + scrapeRequiredPassword
var authOptions = {'auth': credentials}
const request = client.get(url, authOptions, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error(`Failed with status code: ${response.statusCode}`));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
function calcTimeout() {
const hour = new Date().getHours();
if (hour >= scrapeStartHour && hour < scrapeEndHour) {
callDataRefresh();
setTimeout(calcTimeout, refreshIntervalMins * 60 * 1000)
} else {
var now = new Date().getTime();
var tomorrow = new Date(now + 86400000);
tomorrow.setHours(scrapeStartHour,0,0);
var startTimeTomorrow = tomorrow.getTime();
var timeToStartTime = startTimeTomorrow-now;
// Add 5 seconds to ensure we're inside window
timeToStartTime += 5 * 1000
var minsTo = Math.floor((timeToStartTime / 1000) / 60)
console.log("Sleeping until " + scrapeStartHour + " tomorrow. " + minsTo + " minutes")
setTimeout(calcTimeout, timeToStartTime)
}
}
calcTimeout();