-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.js
65 lines (62 loc) · 1.6 KB
/
utils.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
let util = require('util');
let moment = require('moment');
let url = require('url');
let querystring = require('querystring');
Array.prototype.forEachAsync = Array.prototype.mapAsync = async function (fn) {
return Promise.all(this.map(fn));
};
Array.prototype.filterAsync = async function (fn) {
let a = await this.mapAsync(fn);
return this.filter((x, i) => a[i]);
};
module.exports = {
checkIdChars(str) {
let reg = new RegExp('[^a-zA-Z0-9]+');
return !reg.test(str);
},
formatDate(ts, format) {
if (ts == null) {
return "Unknown";
}
let m = moment(ts * 1000);
m.locale('eu');
return m.format(format || 'L H:mm:ss');
},
formatTime(x) {
let sgn = x < 0 ? '-' : '';
x = Math.abs(x);
function toStringWithPad(x) {
x = parseInt(x);
if (x < 10) return '0' + x.toString();
else return x.toString();
}
return sgn + util.format('%s:%s:%s', toStringWithPad(x / 3600), toStringWithPad(x / 60 % 60), toStringWithPad(x % 60));
},
parseDate(s) {
return parseInt(+new Date(s) / 1000);
},
getCurrentDate(removeTime) {
let d = new Date;
if (removeTime) {
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
}
return parseInt(+d / 1000);
},
makeUrl(req_params, form) {
let res = '/sport';
if (!req_params) res = '/sport';
else if (req_params.originalUrl) {
let u = url.parse(req_params.originalUrl);
res = u.pathname;
} else {
if (!Array.isArray(req_params)) req_params = [req_params];
for (let param of req_params) res += '/' + param;
}
let encoded = querystring.encode(form);
if (encoded) res += '?' + encoded;
return res;
}
};