107 lines
2.6 KiB
JavaScript
107 lines
2.6 KiB
JavaScript
|
const { LogType } = require("loguix")
|
||
|
const fs = require("fs")
|
||
|
const path = require("path")
|
||
|
const { __glob } = require("./global-variables")
|
||
|
const ulog = new LogType("Links")
|
||
|
const uuid = require("uuid")
|
||
|
const config = require("./config")
|
||
|
const {ApplyLinks} = require("../routes/link")
|
||
|
|
||
|
|
||
|
|
||
|
if(!fs.existsSync(__glob.DATA + path.sep + "links.json")) {
|
||
|
fs.writeFileSync(__glob.DATA + path.sep + "links.json", JSON.stringify([], null, 2))
|
||
|
}
|
||
|
|
||
|
module.exports.getLinks = function() {
|
||
|
return JSON.parse(fs.readFileSync(__glob.DATA + path.sep + "links.json"))
|
||
|
}
|
||
|
|
||
|
const FirstLinkManager = new ApplyLinks(this.getLinks())
|
||
|
|
||
|
|
||
|
module.exports.addLink = function(settings) {
|
||
|
|
||
|
var canDo = true
|
||
|
const links = this.getLinks()
|
||
|
var id = makeid(8)
|
||
|
|
||
|
if(settings.abstractLink) {
|
||
|
settings.dest = id.toString()
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// Check if a destination already exists between links and if it's the case, we return an error "ALREADY_EXiST"
|
||
|
links.forEach((link) => {
|
||
|
if(link.dest == settings.dest) {
|
||
|
|
||
|
canDo = false
|
||
|
}
|
||
|
|
||
|
})
|
||
|
|
||
|
const link = {
|
||
|
id: id,
|
||
|
title: settings.title,
|
||
|
url: settings.url,
|
||
|
dest: settings.dest,
|
||
|
}
|
||
|
|
||
|
if(canDo) {
|
||
|
|
||
|
links.push(link)
|
||
|
fs.writeFileSync(__glob.DATA + path.sep + "links.json", JSON.stringify(links, null, 2))
|
||
|
const LinkManager = new ApplyLinks(this.getLinks())
|
||
|
return "OK"
|
||
|
|
||
|
} else {
|
||
|
|
||
|
return "ALREADY_EXIST"
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports.removeLink = function(id) {
|
||
|
const links = this.getLinks()
|
||
|
const newLinks = []
|
||
|
links.forEach((link) => {
|
||
|
if(link.id != id) {
|
||
|
newLinks.push(link)
|
||
|
}
|
||
|
})
|
||
|
fs.writeFileSync(__glob.DATA + path.sep + "links.json", JSON.stringify(newLinks, null, 2))
|
||
|
const LinkManager = new ApplyLinks(this.getLinks())
|
||
|
return "OK"
|
||
|
}
|
||
|
|
||
|
module.exports.updateLink = function(id, settings) {
|
||
|
const links = this.getLinks()
|
||
|
const newLinks = []
|
||
|
links.forEach((link) => {
|
||
|
if(link.id == id) {
|
||
|
link.title = settings.title
|
||
|
link.url = settings.url
|
||
|
}
|
||
|
newLinks.push(link)
|
||
|
})
|
||
|
fs.writeFileSync(__glob.DATA + path.sep + "links.json", JSON.stringify(newLinks, null, 2))
|
||
|
const LinkManager = new ApplyLinks(this.getLinks())
|
||
|
return "OK"
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function makeid(length) {
|
||
|
let result = '';
|
||
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||
|
const charactersLength = characters.length;
|
||
|
let counter = 0;
|
||
|
while (counter < length) {
|
||
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||
|
counter += 1;
|
||
|
}
|
||
|
return result;
|
||
|
}
|