f0bm/src/inc/routes/random.mjs
2022-03-27 15:55:53 +02:00

38 lines
1.0 KiB
JavaScript

import f0cklib from "../routeinc/f0cklib.mjs";
export default (router, tpl) => {
router.get(/^\/random$/, async (req, res) => {
let referer = req.headers.referer ?? '';
let opts = {};
if(referer.match(/f0ck\.me/)) { // parse referer
referer = referer.split("f0ck.me")[1];
const tmp = referer.match(/^\/?(?:\/tag\/(?<tag>.+?))?(?:\/user\/(?<user>.+?)\/(?<mode>f0cks|favs))?(?:\/(?<mime>image|audio|video))?(?:\/p\/(?<page>\d+))?(?:\/(?<itemid>\d+))?$/);
if(tmp)
opts = tmp.groups;
}
const data = await f0cklib.getRandom({
user: opts.user,
tag: opts.tag,
mime: opts.mime,
page: opts.page,
fav: opts.mode == 'favs',
mode: req.session.mode
});
if(!data.success) {
return res.reply({
code: 404,
body: tpl.render('error', {
message: data.message,
tmp: null
}, req)
});
}
res.redirect(`/${data.link}${data.link.length != 0 ? "/" : ""}${data.itemid}`);
});
return router;
};