Spaces:
Running
Running
File size: 4,811 Bytes
91d9d20 |
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
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
}
|