Spaces:
Running
Running
var fs = require("fs"); | |
var path = require("path"); | |
function getType(data) { | |
return Object.prototype.toString.call(data).slice(8, -1); | |
} | |
function getTime(format = "HH:mm:ss DD/MM/YYYY", time = new Date(Date.now()), options = { | |
hour12: false, | |
day: "numeric", | |
month: "numeric", | |
year: "numeric", | |
weekday: "long", | |
hour: "2-digit", | |
minute: "2-digit", | |
second: "2-digit" | |
}) { | |
var { time_zone, language } = require("../../config.json").systemOptions; | |
if (time_zone === "vi-VN" || time_zone === "en-US") { | |
if (getType(time) === "Number" || getType(time) === "String") | |
time = new Date(time); | |
options.timeZone = time_zone; | |
var lastTime = time.toLocaleString(language, options); | |
return format.replace(/HH|mm|ss|DD|MM|YYYY|dddd/g, function (key) { | |
if (time_zone === "vi-VN") { | |
if (key === "HH") | |
return lastTime.slice(0, 2); | |
else if (key === "mm") | |
return lastTime.slice(3, 5); | |
else if (key === "ss") | |
return lastTime.slice(6, 8); | |
else if (key === "dddd") | |
return lastTime.split(",")[0].slice(9, lastTime.length); | |
else { | |
var date = lastTime.split(", ")[1].split("/"); | |
if (key === "DD") | |
return date[0]; | |
else if (key === "MM") | |
return date[1]; | |
else if (key === "YYYY") | |
return date[2]; | |
} | |
} else { | |
var [day, date, time] = lastTime.split(", "); | |
if (key === "HH") | |
return time.slice(0, 2); | |
else if (key === "mm") | |
return time.slice(3, 5); | |
else if (key === "ss") | |
return time.slice(6, 8); | |
else if (key === "dddd") | |
return day; | |
else { | |
date = date.split("/"); | |
if (key === "DD") | |
return date[0]; | |
else if (key === "MM") | |
return date[1]; | |
else if (key === "YYYY") | |
return date[2]; | |
} | |
} | |
}); | |
} else { | |
var moment = require("moment-timezone").tz(time, time_zone); | |
return moment.format(format); | |
} | |
} | |
function isAuthenticated(req) { | |
return req.session && req.session.loggedIn === true; | |
} | |
function requestChecked(req, res, next) { | |
var headers = req.headers; | |
if (headers.referer || headers.origin) | |
next(); | |
else { | |
res.status(403); | |
res.render("403"); | |
} | |
} | |
function isPath(url) { | |
try { | |
var resolveURL = path.resolve(url); | |
return resolveURL === url || resolveURL === path.normalize(url); | |
} catch (error) { | |
return false; | |
} | |
} | |
function isURL(url) { | |
try { | |
new URL(url); | |
return true; | |
} catch (error) { | |
return false; | |
} | |
} | |
function randomStr({ length = 10, number = true, letter = true, symbol = false }) { | |
var numberChars = "0123456789"; | |
var letterChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; | |
var symbolChars = "!@#$%^&*()_+[]{}|;:',.<>/?"; | |
var characterPool = ""; | |
if (number) | |
characterPool += numberChars; | |
if (letter) | |
characterPool += letterChars; | |
if (symbol) | |
characterPool += symbolChars; | |
if (!characterPool) | |
throw new Error("At least one character type should be selected."); | |
var randomString = ""; | |
for (var i = 0; i < length; i++) { | |
var index = Math.floor(Math.random() * characterPool.length); | |
randomString += characterPool[index]; | |
} | |
return randomString; | |
} | |
function createMessenger(apis, info) { | |
var { Messenger } = apis; | |
return { | |
getText: _ => _, | |
send: function (message, ...inputs) { | |
inputs = !inputs ? [] : inputs; | |
return Messenger.send(this.getText(message, inputs), info.threadID); | |
}, | |
unsend: messageID => Messenger.unsend(messageID), | |
reply: function (message, ...inputs) { | |
inputs = !inputs ? [] : inputs; | |
return Messenger.send(this.getText(message, inputs), info.threadID, info.messageID); | |
}, | |
react: icon => Messenger.react(icon, info.threadID, info.messageID) | |
} | |
} | |
module.exports = { | |
getTime, | |
getType, | |
isAuthenticated, | |
requestChecked, | |
isPath, | |
isURL, | |
randomStr, | |
createMessenger | |
} | |