osr-discourse/lib/oa/lib.js
2024-06-29 21:53:26 +02:00

197 lines
8.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.convert = exports.getImageName = exports.sanitize = void 0;
const _sanitize = require("sanitize-filename");
const URI = require("uri-js");
const path = require("path");
const filenamify = require('filenamify');
var TurndownService = require('turndown');
const sanitize = (f) => {
let str = filenamify(_sanitize(f)).replace(/[^\x00-\x7F]/g, "");
if (str.startsWith('_')) {
str = str.substring(1);
}
return str;
};
exports.sanitize = sanitize;
const getImageName = (url) => {
const parsed = URI.parse(decodeURIComponent(url));
const pParsed = path.parse(parsed.path);
const fileName = (0, exports.sanitize)(decodeURIComponent(pParsed.base));
return fileName;
};
exports.getImageName = getImageName;
const convert = (input) => {
var turndownService = new TurndownService();
return turndownService.turndown(input);
};
exports.convert = convert;
/*
const getFUser = (users, user_name) => {
return users.find((u) => {
return u.name == user_name
})
}
const indexUsers = async (d, forum: string, detail) => {
const forumUsers = await getForumUsers(d, detail)
const raw = (read(path.resolve(forum + '/index.json'), 'json') as any)
const users_raw = raw.users
let users = []
for (let u in users_raw) {
const user = users_raw[u];
const avatar = getOAvatar(raw, u);
let aFileName = '';
let fUser = getFUser(forumUsers, u);
if (avatar) {
const parsed = URI.parse(avatar);
const pParsed = path.parse(parsed.path);
aFileName = pParsed.base;
}
users.push({
name: u,
avatar: avatar,
avatarFileName: aFileName,
user_id: fUser ? fUser.id : -1
});
}
write(path.resolve(forum + '/user.json'), users);
}
const _createUser = async (discorse, forum, name, email) => {
const users = getUsers()
const index = users.findIndex((u) => u.detail.name == name)
let user = await createUser(discorse, null)
if (user && users[index].upload_id) {
await discorse.setUserAvatar(name, users[index].upload_id);
//return users;
}
if (user > 0 && index) {
users[index].f_id = user;
console.log('created ' + name + ' ' + user);
write(getUsersPath(), users);
} else {
console.error('cant create user - error', name, user)
}
}
const _updateGroup = async (discorse, forum, name, id, forumUsers) => {
const users = (read(path.resolve(forum + '/user.json'), 'json') as any);
const index = users.findIndex((u) => u.name == name);
try {
const d = await discorse.updateGroup(name, pUserGroup);
console.log('updated user group for ' + name);
users[index].g_id = pUserGroup;
write(path.resolve(forum + '/user.json'), users);
if (users[index].upload_id) {
//await discorse.setUserAvatar(name, users[index].upload_id);
}
} catch (e) {
if (e.data && e.data.status == 422) {
users[index].g_id = pUserGroup;
write(path.resolve(forum + '/user.json'), users);
console.log('updated user group for ' + name);
}
}
}
const _updateAvatar = async (discorse, forum, name) => {
const users = (read(path.resolve(forum + '/user.json'), 'json') as any);
const index = users.findIndex((u) => u.name == name);
return new Promise((resolve, reject) => {
try {
setTimeout(() => {
discorse.setUserAvatar(name, users[index].upload_id).then(() => {
console.log('updated avatar for ' + name);
users[index].avatarSet = true;
write(path.resolve(forum + '/user.json'), users);
resolve(1);
});
}, 200);
} catch (e) {
console.error('-error setting avatar', e);
debugger;
}
});
}
const createUsers = async (d, forum) => {
const forumUsers = await getForumUsers(d, true)
const users = (read(path.resolve(forum + '/user.json'), 'json') as any);
const toBeCreated = users.filter((u) => {
if (u.f_id || u.f_id < 0) {
return false;
}
if (u.name === 'plastichub' || u.name === 'lu' || u.name === 'timberstar' || u.name === 'nickname') {
return false
}
return true;
});
console.log('Create Users ' + users.length + ' Total | Left: ' + toBeCreated.length);
return await BPromise.resolve(toBeCreated).map((u: any) => {
const t = _createUser(d, forum, u.name, u.email);
return t;
}, { concurrency: 1 })
}
const updateUserGroups = async (forum) => {
const forumUsers = (read(path.resolve(forum + '/fusers.json'), 'json') as any);
const users = (read(path.resolve(forum + '/user.json'), 'json') as any);
const toBeUpdated = users.filter((u) => {
if (u.g_id) {
return false;
}
if (u.name === 'plastichub' || u.name === 'lu' || u.name === 'timberstar' || u.name === 'nickname') {
return false
}
return true;
});
const d = getDiscourse();
console.log('Update Users ' + users.length + ' Total | Left: ' + toBeUpdated.length);
return await BPromise.resolve(toBeUpdated).map((u: any) => {
const t = _updateGroup(d, forum, u.name, u.f_id, forumUsers);
return t;
}, { concurrency: 1 })
}
const updateUserAvatars = async (forum) => {
const users = (read(path.resolve(forum + '/user.json'), 'json') as any);
const toBeUpdated = users.filter((u) => {
if (!u.upload_id) {
return false;
}
if (u.avatarSet) {
return false;
}
if (u.name === 'plastichub' || u.name === 'lu' || u.name === 'timberstar' || u.name === 'nickname') {
return false
}
return true;
});
const d = getDiscourse();
console.log('Update User Avatar ' + users.length + ' Total | Left: ' + toBeUpdated.length);
return await BPromise.resolve(toBeUpdated).map((u: any) => {
const t = _updateAvatar(d, forum, u.name);
return t;
}, { concurrency: 1 })
}
*/
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9vYS9saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFDOUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQzdCLDZCQUE0QjtBQUM1QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDeEMsSUFBSSxlQUFlLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsSUFBSSxHQUFHLEdBQVcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ3pCO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDLENBQUE7QUFOWSxRQUFBLFFBQVEsWUFNcEI7QUFHTSxNQUFNLFlBQVksR0FBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFBLGdCQUFRLEVBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDM0QsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQyxDQUFBO0FBTFksUUFBQSxZQUFZLGdCQUt4QjtBQUVNLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtJQUMzQyxPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFBO0FBSFksUUFBQSxPQUFPLFdBR25CO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUtFIn0=