49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
import {Logger} from '../models/logger';
|
|
import {ControllerHandler} from './controllerHandler';
|
|
import {API} from './api/api';
|
|
import {Database} from '../models/database/database'
|
|
import {PermaLink} from '../models/permalinks/permalink';
|
|
|
|
export class PermaNoteController extends ControllerHandler {
|
|
static async newPermaNote(req, res, next) {
|
|
const errors = new API.errors(res);
|
|
|
|
const content = req.body.content || undefined;
|
|
if (!content) {
|
|
errors.addError(422, 'Unprocessable entity', 'There is no content');
|
|
errors.endpoint();
|
|
return;
|
|
}
|
|
|
|
const uid = await PermaLink.genUID() || new Date().getTime();
|
|
const endpoint = await PermaLink.genEndpoint();
|
|
|
|
const success = await Database.PermaNotes.newNote(uid, endpoint, content);
|
|
if (success == -1) {
|
|
errors.addError(500, 'Internal server error');
|
|
errors.endpoint();
|
|
return;
|
|
}
|
|
|
|
new API.permalink(res, content, uid, endpoint).endpoint();
|
|
next();
|
|
}
|
|
|
|
static async getPermaNote(req, res, next) {
|
|
const endpoint = req.params.endpoint || undefined;
|
|
|
|
if (!endpoint) {
|
|
return;
|
|
}
|
|
|
|
const data = await Database.PermaNotes.getNoteByEndpoint(endpoint);
|
|
if (data == -1) {
|
|
res.status(404).end('404 Not Found');
|
|
return;
|
|
}
|
|
|
|
res.end(data.text);
|
|
next();
|
|
}
|
|
}
|