From 638d915654e843156d67bdb0fd19609b6acdb22a Mon Sep 17 00:00:00 2001 From: buzzcode2007 <73412182+buzz-lightsnack-2007@users.noreply.github.com> Date: Sat, 8 Mar 2025 10:54:43 +0000 Subject: [PATCH] create file name server --- names.final.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ server.js | 2 +- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 names.final.js diff --git a/names.final.js b/names.final.js new file mode 100644 index 0000000..bfb96b0 --- /dev/null +++ b/names.final.js @@ -0,0 +1,62 @@ +let express = require('express'); require('dotenv').config(); let app = express(); +const bodyParser = require(`body-parser`); + +class ServerForNames { + #paths = { + "API": { + "name": "/name" + }, + "pages": { + "default": "/views/index.html" + }, + "static": { + "assets": "/public" + } + } + + /* Log all requests. + + REQUEST (object): The request. + */ + log(REQUEST) { + console.log(REQUEST.method, REQUEST.url, REQUEST.ip); + } + + /* Echo. + + PARAMETERS (object): The name parameters. + returns: (object) the formatted repeat response + */ + parse(PARAMETERS) { + let RESPONSE = {"name": [PARAMETERS["first"], PARAMETERS["last"]].join(` `)}; + return (RESPONSE); + } + + /* Create the response. + + REQUEST (object): The request object. + RESPONSE (object): The response object. + */ + respond(REQUEST, RESPONSE) { + RESPONSE.json(this.parse(REQUEST.body || REQUEST.query)); + } + + /* Accept requests. */ + accept() { + app.use(bodyParser.urlencoded({extended: false})); + app.use((REQUEST, RESPONSE, next) => {this.log(REQUEST); next();}) + app.use(this.#paths['static'][`assets`], express.static(__dirname + this.#paths['static'][`assets`])); + app.route(`/`).get((REQUEST, RESPONSE) => {RESPONSE.sendFile(__dirname + this.#paths[`pages`]['default'])}); + [`get`, `post`].forEach((METHOD) => { + app.route(this.#paths[`API`][`name`])[METHOD]((REQUEST, RESPONSE, next) => {this.respond(REQUEST, RESPONSE);}); + }); + } + + constructor() { + this.accept(); + } +} + +new ServerForNames(); + +module.exports = app; diff --git a/server.js b/server.js index ff51ffb..8a2c39d 100644 --- a/server.js +++ b/server.js @@ -4,7 +4,7 @@ * ***************************************************/ const bGround = require('fcc-express-bground'); -const myApp = require('./scripts/names'); +const myApp = require('./names.final'); const express = require('express'); const app = express();