diff --git a/app.js b/app.js index ba509cc..02b4d28 100644 --- a/app.js +++ b/app.js @@ -14,7 +14,8 @@ const version = require('./src/configs/version.configs'); // Version Strings 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 initDb = require('./src/utils/dbinit.utils') // DB Init Utility +const findRtr = require('./src/routes/find.routes'); // /find endpoints +const initDb = require('./src/utils/dbinit.utils'); // DB Init Utility // Set Server Configurations const srvListen = process.env.OWL_SRV_LISTEN || "0.0.0.0" @@ -51,6 +52,7 @@ app.use(express.static('static')); //Serve static content from /static app.use('/api/v1/list', listRtr); app.use('/api/v1/ldb', ldbRtr); app.use('/api/v1/kube', kubeRtr); +app.use('/api/v1/find', findRtr); // Start Express app.listen(srvPort, srvListen, (error) =>{ diff --git a/src/controllers/find.controllers.js b/src/controllers/find.controllers.js new file mode 100644 index 0000000..a426ee6 --- /dev/null +++ b/src/controllers/find.controllers.js @@ -0,0 +1,58 @@ +const find = require('../services/find.services'); + +async function findName(req, res, next){ + try { + var id = req.params.id + res.json(await find.name(id)) + } catch (err) { + console.error(`Unknown Error`, err.message); + next(err); + } +} + +async function findCrs(req, res, next){ + try { + var id = req.params.id + res.json(await find.crs(id)) + } catch (err) { + console.error(`Unknown Error`, err.message); + next(err); + } +} + +async function findNlc(req, res, next){ + try { + var id = req.params.id + res.json(await find.nlc(id)) + } catch (err) { + console.error(`Unknown Error`, err.message); + next(err); + } +} + +async function findTiploc(req, res, next){ + try { + var id = req.params.id + res.json(await find.tiploc(id)) + } catch (err) { + console.error(`Unknown Error`, err.message); + next(err); + } +} + +async function findStanox(req, res, next){ + try { + var id = req.params.id + res.json(await find.stanox(id)) + } catch (err) { + console.error(`Unknown Error`, err.message); + next(err); + } +} +module.exports = { + findName, + findCrs, + findNlc, + findTiploc, + findStanox +} \ No newline at end of file diff --git a/src/routes/find.routes.js b/src/routes/find.routes.js new file mode 100644 index 0000000..53009f6 --- /dev/null +++ b/src/routes/find.routes.js @@ -0,0 +1,23 @@ +const express = require('express'); +const router = express.Router(); +const findController = require('../controllers/find.controllers'); + +/* GET programming languages. */ +//router.get('/', programmingLanguagesController.get); + +/* POST programming language */ +//router.post('/', programmingLanguagesController.create); + +/* PUT programming language */ +//router.put('/:id', programmingLanguagesController.update); + +/* DELETE programming language */ +//router.delete('/:id', programmingLanguagesController.remove); + +router.get('/name/:id', findController.findName); +router.get('/crs/:id', findController.findCrs); +router.get('/nlc/:id', findController.findNlc); +router.get('/tiploc/:id', findController.findTiploc); +router.get('/stanox/:id', findController.findStanox); + +module.exports = router; \ No newline at end of file diff --git a/src/services/find.services.js b/src/services/find.services.js new file mode 100644 index 0000000..0cf7807 --- /dev/null +++ b/src/services/find.services.js @@ -0,0 +1,59 @@ +// Parse and return a find request + +const log = require('../utils/log.utils'); // Log Helper +const db = require('../services/dbAccess.services'); +const san = require('../utils/sanitizer.utils') + +// DB Query: query(collection, query) + +// Define collection as all queries are for the "corpus" collection. +const col = "corpus" + +async function name(id){ + log.out(`findServices.name: Finding station name: ${id}`) + var name = san.cleanApiEndpointTxt(id.toUpperCase()) + query = {NLCDESC: name} + var data = await db.query(col,query) + return data +} + +async function crs(id){ + log.out(`findServices.crs: Finding crs: ${id}`) + var crs = san.cleanApiEndpointTxt(id.toUpperCase()) + query = {'3ALPHA': crs} + var data = await db.query(col,query) + return data +} + +async function nlc(id){ + log.out(`findServices.nlc: Finding nlc: ${id}`) + var nlc = san.cleanApiEndpointNum(id) + query = {NLC: parseInt(nlc)} + log.out(`findServices.nlc: NLC Converted to int: ${query}`) + var data = await db.query(col,query) + return data +} + +async function tiploc(id){ + log.out(`findServices.tiploc: Finding tiploc: ${id}`) + var tiploc = san.cleanApiEndpointTxt(id.toUpperCase()) + query = {TIPLOC: tiploc} + var data = await db.query(col,query) + return data +} + +async function stanox(id){ + log.out(`findServices.stanox: Finding stanox: ${id}`) + var stanox = san.cleanApiEndpointNum(id) + query = {STANOX: String(stanox)} + var data = await db.query(col,query) + return data +} + +module.exports = { + name, + crs, + nlc, + tiploc, + stanox +} \ No newline at end of file diff --git a/src/services/ldb.services.js b/src/services/ldb.services.js index cde6977..b2dbc3a 100644 --- a/src/services/ldb.services.js +++ b/src/services/ldb.services.js @@ -16,7 +16,7 @@ const ldbKey = process.env.OWL_LDB_KEY const ldbsvKey = process.env.OWL_LDB_SVKEY async function get(body, id){ - var cleanId = san.cleanApiEndpoint(id); + var cleanId = san.cleanApiEndpointTxt(id); var obj = await util.checkCrs(cleanId); try { var crs = obj[0]['3ALPHA']; diff --git a/src/utils/dbinit.utils.js b/src/utils/dbinit.utils.js index c637a5f..b5b04fd 100644 --- a/src/utils/dbinit.utils.js +++ b/src/utils/dbinit.utils.js @@ -61,7 +61,7 @@ async function build(db){ // `db` must be one of: `corpus`, `stations`, `all`. await dbAccess.dropCollection("corpus"); dbAccess.putCorpus(corpusAll); - log.out(`dbInitUtils.build: Updateing corpus meta`) + log.out(`dbInitUtils.build: Updating corpus meta`) dbAccess.updateMeta("collection", "corpus", time.jsUnix(Date.now())); } if (db === "stations") { diff --git a/src/utils/sanitizer.utils.js b/src/utils/sanitizer.utils.js index 70d2b2b..60004b1 100644 --- a/src/utils/sanitizer.utils.js +++ b/src/utils/sanitizer.utils.js @@ -16,14 +16,23 @@ string.addDash("@abcd efgh"); // @abcd-efgh string.removeSpace("@abcd efgh"); // @abcdefgh */ -function cleanApiEndpoint(input) { - var output = clean.sanitize(input) +function cleanApiEndpointTxt(input) { + var output = clean.sanitize.keepSpace(input) if (output != input){ log.out(`sanitizerUtils.cleanApiEndpoint: WARN: Sanitizing changed string. Input = ${input}`); } return output } +function cleanApiEndpointNum(input) { + var output = clean.sanitize.keepNumber(input) + if (output != input){ + log.out(`sanitizerUtils.cleanApiEndpointNum: WARN: Sanitizing changed string. Input = ${input}`); + } + return output +} + module.exports = { - cleanApiEndpoint + cleanApiEndpointTxt, + cleanApiEndpointNum } \ No newline at end of file