Implement the endpoint for using a counter

This commit is contained in:
Oliver Akins 2022-08-09 19:10:36 -06:00
parent eb518341c8
commit ce3dbbfe47
No known key found for this signature in database
GPG key ID: 3C2014AF9457AF99

View file

@ -0,0 +1,43 @@
import { channelNameSchema, counterNameSchema } from "$/schemas/params";
import { nightbotCustomHeadersSchema } from "$/schemas/nightbot";
import { config, database } from "$/main";
import { ServerRoute } from "@hapi/hapi";
import boom from "@hapi/boom";
import Joi from "joi";
const route: ServerRoute = {
method: [ `GET`, `PATCH` ], path: `/channels/{channel}/counters/{counter}`,
options: {
validate: {
params: Joi.object({
channel: channelNameSchema,
counter: counterNameSchema,
}),
headers: nightbotCustomHeadersSchema.unknown(),
query: Joi.object({
delta: Joi.number().integer().required(),
}),
},
},
async handler(request) {
const { channel, counter } = request.params;
const { delta } = request.query;
if (request.headers["nightbot-user"]) {
let data = new URLSearchParams(request.headers["nightbot-user"]);
if (data.has(`name`) && data.has(`provider`)) {
let user = data.get(`name`);
let provider = data.get(`provider`)!;
// @ts-expect-error
if (config.users.disallowed[provider].includes(user)) {
throw boom.unauthorized();
};
};
};
return database.changeCount(channel, counter, delta);
},
};
export default route;