From 205c6b5d6b58b0012deebd4f387a94a9b0401a6c Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Mon, 30 Jan 2023 23:47:14 +0000 Subject: [PATCH] Backend: Implement basic issue API Signed-off-by: Fred Boniface --- app.js | 2 ++ src/configs/domains.configs.js | 10 ++++++++++ src/controllers/issue.controllers.js | 14 ++++++++++++++ src/routes/issue.routes.js | 7 +++++++ src/services/issue.services.js | 23 ++++++++++++++++------- 5 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 src/configs/domains.configs.js create mode 100644 src/controllers/issue.controllers.js create mode 100644 src/routes/issue.routes.js diff --git a/app.js b/app.js index c27ba06..3256d28 100644 --- a/app.js +++ b/app.js @@ -15,6 +15,7 @@ const listRtr = require('./src/routes/list.routes'); // /list endpoints const ldbRtr = require('./src/routes/ldb.routes'); // /ldb endpoints const kubeRtr = require('./src/routes/kube.routes'); // /kube endpoints const findRtr = require('./src/routes/find.routes'); // /find endpoints +const issueRtr = require('./src/routes/issue.routes') // /issue endpoints const initDb = require('./src/utils/dbinit.utils'); // DB Init Utility // Set Server Configurations @@ -53,6 +54,7 @@ app.use('/api/v1/list', listRtr); app.use('/api/v1/ldb', ldbRtr); app.use('/api/v1/kube', kubeRtr); app.use('/api/v1/find', findRtr); +app.use('./api/v1/issue', issueRtr); // Start Express app.listen(srvPort, srvListen, (error) =>{ diff --git a/src/configs/domains.configs.js b/src/configs/domains.configs.js new file mode 100644 index 0000000..7c7f14b --- /dev/null +++ b/src/configs/domains.configs.js @@ -0,0 +1,10 @@ +module.exports = valid + +const valid = [ + "owlboard.co.uk", + "fjla.uk", + "gwr.com", + "swrailway.com", + "firstrail.com", + "networkrail.co.uk" +] \ No newline at end of file diff --git a/src/controllers/issue.controllers.js b/src/controllers/issue.controllers.js new file mode 100644 index 0000000..b8c0431 --- /dev/null +++ b/src/controllers/issue.controllers.js @@ -0,0 +1,14 @@ +const issue = require('../services/issue.services'); + +async function post(req, res, next){ + try { + res.json(await issue.processor(req.body)) + } catch (err) { + console.error(`Controller Error`, err.message); + next(err); + } +} + +module.exports = { + post +} \ No newline at end of file diff --git a/src/routes/issue.routes.js b/src/routes/issue.routes.js new file mode 100644 index 0000000..24d6375 --- /dev/null +++ b/src/routes/issue.routes.js @@ -0,0 +1,7 @@ +const express = require('express'); +const router = express.Router(); +const issueController = require('../controllers/issue.controllers'); + +router.post('/issue', issueController.post); + +module.exports = router; \ No newline at end of file diff --git a/src/services/issue.services.js b/src/services/issue.services.js index 92baf7f..f9bd56e 100644 --- a/src/services/issue.services.js +++ b/src/services/issue.services.js @@ -1,19 +1,28 @@ const axios = require('axios') +const clean = require('../utils/sanitizer.utils') + +async function processor(data) { + let out = {} + out.title = await cleanData(data.title) + out.body = await cleanData(data.body) + sendToGitea(out); +} + +async function cleanData(data) { + return clean.cleanApiEndpointTxt(data) +} async function sendToGitea(body) { let key = process.env.OWL_GIT_ISSUEBOT let url = process.env.OWL_GIT_APIENDPOINT - let options = { + let opts = { headers: { Authorization: key - }, - data: body, - withCredantials: true + } } - - await axios.post(url, options) + await axios.post(url, body, opts) } module.exports = { - sendToGitea + processor } \ No newline at end of file