From 26b5f2902ca5c7f455613b0ed91bad3fcd73120d Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 25 Sep 2018 16:57:54 +0100 Subject: [PATCH] Notes endpoint complete, back to working on model abstractions --- src/controllers/groupController.js | 16 +++++++++++++ src/controllers/index.js | 1 + src/controllers/noteController.js | 19 ++++++++++------ src/controllers/permaLinkController.js | 8 +++---- src/controllers/routes/router.js | 2 +- src/models/api/noteResponse.js | 31 +++++++++++++++++++++++++- src/models/api/permaLinkResponse.js | 4 ++-- 7 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 src/controllers/groupController.js diff --git a/src/controllers/groupController.js b/src/controllers/groupController.js new file mode 100644 index 0000000..1b99153 --- /dev/null +++ b/src/controllers/groupController.js @@ -0,0 +1,16 @@ +import {ControllerHandler} from './controllerHandler'; +import {API} from '../models/api/api'; +import {Notes} from '../models/notes/notes'; + +export class GroupController extends ControllerHandler { + static async newGroup(req, res, next) { + let errors = new API.errors(res); + + + next() + } + + + +} + diff --git a/src/controllers/index.js b/src/controllers/index.js index 529c822..df8f30a 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -4,3 +4,4 @@ Controllers.UserController = require('./userController').UserController; Controllers.LoginController = require('./loginController').LoginController; Controllers.PermaLinkController = require('./permaLinkController').PermaLinkController; Controllers.NoteController = require('./noteController').NoteController; +Controllers.GroupController = require('./groupController').GroupController; diff --git a/src/controllers/noteController.js b/src/controllers/noteController.js index 7a8ed3d..5e0704d 100644 --- a/src/controllers/noteController.js +++ b/src/controllers/noteController.js @@ -1,7 +1,5 @@ -import {Logger} from '../models/logger'; import {ControllerHandler} from './controllerHandler'; import {API} from '../models/api/api'; -import {Database} from '../models/database/database' import {Notes} from '../models/notes/notes'; export class NoteController extends ControllerHandler { @@ -33,20 +31,27 @@ export class NoteController extends ControllerHandler { let id = await Notes.genID(); let success; - if (!group) { - await Notes.newNote(id, content, creatorid, order); + success = await Notes.newNote(id, content, creatorid, order); } else { - let doesExist = await Notes.doesGroupExist(); + let doesExist = await Notes.doesGroupExist(user.id, parentgroup); if (!doesExist) { - errors.addError(422, 'Unprocessable entity', 'The group you are trying to create this note in does not exist'); + errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist'); errors.endpoint(); next(); return; } - await Notes.newGroupedNote(id, content, creatorid, order, parentgroup); + success = await Notes.newGroupedNote(id, content, creatorid, order, parentgroup); } + if (success == -1) { + errors.addError(500, 'Internal server error'); + errors.endpoint(); + next(); + return; + } + + new API.note(res, user, id, content, order, parentgroup).endpoint(); next(); } diff --git a/src/controllers/permaLinkController.js b/src/controllers/permaLinkController.js index c2cdd87..97016d0 100644 --- a/src/controllers/permaLinkController.js +++ b/src/controllers/permaLinkController.js @@ -8,8 +8,8 @@ export class PermaLinkController extends ControllerHandler { static async unauthentacatedPermaLink(req, res, next) { let errors = new API.errors(res); - let text = req.body.text || undefined; - if (!text) { + let text = req.body.content || undefined; + if (!content) { errors.addError(422, 'Unprocessable entity', 'There is no text'); errors.endpoint(); next(); @@ -19,7 +19,7 @@ export class PermaLinkController extends ControllerHandler { let uid = await PermaLink.genUID() || new Date().getTime(); let endpoint = await PermaLink.genEndpoint(); - let success = await Database.permalink.newNote(uid, endpoint, text); + let success = await Database.permalink.newNote(uid, endpoint, content); if (success == -1) { errors.addError(500, 'Internal server error'); @@ -28,7 +28,7 @@ export class PermaLinkController extends ControllerHandler { return; } - new API.permalink(res, text, uid, endpoint).endpoint(); + new API.permalink(res, content, uid, endpoint).endpoint(); next(); } diff --git a/src/controllers/routes/router.js b/src/controllers/routes/router.js index 2b944de..ad484fc 100644 --- a/src/controllers/routes/router.js +++ b/src/controllers/routes/router.js @@ -24,7 +24,7 @@ export class Router { app.get('/note/:endpoint', [MiddleWare.RateLimits.request, Controllers.PermaLinkController.getNote]); app.post('/auth/note', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser, Controllers.NoteController.newNote]); // Passes through auth middleware which if authenticated passes user obj and token to the note handling function for it to deal with - app.post('/auth/group', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); + app.post('/auth/group', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser, Controllers.GroupController.newGroup]); app.get('/auth/getallnotes', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.get('/auth/getallgroups', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); diff --git a/src/models/api/noteResponse.js b/src/models/api/noteResponse.js index ef14e02..364b4ea 100644 --- a/src/models/api/noteResponse.js +++ b/src/models/api/noteResponse.js @@ -1,5 +1,34 @@ import {API} from './API'; export class NoteAPI extends API { - + constructor(res, user, id, content, order, parentgroup) { + super(); + + this.res = res; + this.response = { + status: { + error: false, + code: 201, + type: 'created', + message: 'Success' + }, + data: [ + { + status: 'Resource created', + note: { + uid: id, + text: content, + order: order, + parentgroup: parentgroup, + createdby: user.username, + id: user.id + } + } + ] + } + } + + endpoint() { + this.res.status(201).end(JSON.stringify(this.response, false, 4)); + } } diff --git a/src/models/api/permaLinkResponse.js b/src/models/api/permaLinkResponse.js index be3ddf2..fe0e51c 100644 --- a/src/models/api/permaLinkResponse.js +++ b/src/models/api/permaLinkResponse.js @@ -2,7 +2,7 @@ import {API} from './API'; import {PermaLink} from '../../models/permalinks/permalink'; export class PermaLinkAPI extends API { - constructor(res, text, uid, endpoint, username, id) { + constructor(res, content, uid, endpoint, username, id) { super(); this.res = res; this.response = { @@ -18,7 +18,7 @@ export class PermaLinkAPI extends API { note: { uid: uid, endpoint: `/api/note/${endpoint}`, - text: text, + content: content, createdby: username, id: id }