0
0
Fork 0
This commit is contained in:
Oliver Akins 2022-07-22 00:22:49 -06:00
parent 6a5f642fb4
commit 48dffc112a
No known key found for this signature in database
GPG key ID: 3C2014AF9457AF99
21 changed files with 1327 additions and 0 deletions

View file

@ -0,0 +1,27 @@
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import { db } from "@/main";
import Joi from "joi";
const data: ServerRoute = {
method: `POST`, path: `/manage`,
options: {
validate: {
payload: Joi.object({
channel: Joi.string().alphanum(),
}),
},
},
async handler(request, h) {
const { channel } = request.params;
if (!db[channel]) {
throw boom.notFound(`Invalid channel`);
};
db[channel].lurkers = {};
return h.response().code(200);
},
};
export default data;

View file

@ -0,0 +1,38 @@
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import { db } from "@/main";
import { v4 } from "uuid";
import Joi from "joi";
const data: ServerRoute = {
method: [`POST`, `PUT`], path: `/manage/{channel}/message`,
options: {
validate: {
payload: Joi.object({
lurk: Joi.array().items(Joi.string().min(1)).min(1),
unlurk: Joi.array().items(Joi.string().min(1)).min(1),
}),
params: Joi.object({
channel: Joi.string().alphanum(),
}),
},
},
async handler(request, h) {
const { channel } = request.params;
const data = request.payload as lurk_message;
const id = v4();
if (!db[channel]) {
throw boom.notFound(`Invalid channel`);
};
db[channel].messages[id] = data;
return h.response({
lurk: data.lurk,
unlurk: data.unlurk,
id,
}).code(200);
},
};
export default data;

View file

@ -0,0 +1,33 @@
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import { db } from "@/main";
import Joi from "joi";
const data: ServerRoute = {
method: `DELETE`, path: `/manage/{channel}/message/{id}`,
options: {
validate: {
params: Joi.object({
channel: Joi.string().alphanum(),
id: Joi.string().uuid(),
}),
},
},
async handler(request, h) {
const { channel, id } = request.params;
if (!db[channel]) {
throw boom.notFound(`Invalid channel`);
};
if (!db[channel].messages[id]) {
throw boom.notFound(`Invalid ID`);
};
let message = db[channel].messages[id];
delete db[channel].messages[id];
return h.response(message).code(200);
},
};
export default data;

View file

@ -0,0 +1,27 @@
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import { db } from "@/main";
const data: ServerRoute = {
method: `GET`, path: `/manage/{channel}`,
async handler(request, h) {
const { channel } = request.params;
if (!db[channel]) {
throw boom.notFound(`Invalid channel`);
};
let messages = [];
for (const messageId in db[channel].messages) {
let message = db[channel].messages[messageId];
messages.push({
id: messageId,
lurk: message.lurk,
unlurk: message.unlurk,
});
};
return h.response(messages).code(200);
},
};
export default data;

View file

@ -0,0 +1,27 @@
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import { db } from "@/main";
import Joi from "joi";
const data: ServerRoute = {
method: `DELETE`, path: `/manage/{channel}/lurkers`,
options: {
validate: {
params: Joi.object({
channel: Joi.string().alphanum(),
}),
},
},
async handler(request, h) {
const { channel } = request.params;
if (!db[channel]) {
throw boom.notFound(`Invalid channel`);
};
db[channel].lurkers = {};
return h.response().code(200);
},
};
export default data;

View file

@ -0,0 +1,34 @@
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import { db } from "@/main";
import { v4 } from "uuid";
import Joi from "joi";
const data: ServerRoute = {
method: `PATCH`, path: `/manage/{channel}/message/{id}`,
options: {
validate: {
payload: Joi.object({
lurk: Joi.array().items(Joi.string().min(1)).min(1),
unlurk: Joi.array().items(Joi.string().min(1)).min(1),
}),
params: Joi.object({
channel: Joi.string().alphanum(),
id: Joi.string().uuid(),
}),
},
},
async handler(request, h) {
const { channel, id } = request.params;
const data = request.payload as lurk_message;
if (!db[channel]) {
throw boom.notFound(`Invalid channel`);
};
db[channel].messages[id] = data;
return h.response(`Updated message set with ID: ${id}`).code(200);
},
};
export default data;