1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2025-06-20 00:25:17 +00:00

Create basic HTTP server

This commit is contained in:
2019-11-21 18:06:50 +01:00
parent e6c44668c4
commit 71807d2677
8 changed files with 520 additions and 5 deletions

28
src/controllers/Routes.ts Normal file
View File

@ -0,0 +1,28 @@
import { WelcomeController } from "./WelcomeController";
import { RequestHandler } from "../models/RequestHandler";
/**
* Controllers routes
*
* @author Pierre Hubert
*/
export enum RouteType {
POST, // Default
GET
}
export interface Route {
type ?: RouteType,
path: string,
cb: (req : RequestHandler) => void,
}
export const Routes : Route[] = [
// Welcome controller
{type: RouteType.GET, path: "/", cb: WelcomeController.HomeMessage}
]

View File

@ -0,0 +1,21 @@
import { Response, Request } from "express";
import { RequestHandler } from "../models/RequestHandler";
/**
* Welcome controller
*
* @author Pierre HUBERT
*/
export class WelcomeController {
/**
* Display home message
*/
public static HomeMessage(req: RequestHandler) {
req.send({
name: "Comunic API v2",
})
}
}

View File

@ -16,6 +16,7 @@ export interface DatabaseConfiguration {
}
export interface Configuration {
port: number,
storageURL : string,
storagePath : string,
database : DatabaseConfiguration,

View File

@ -1,5 +1,8 @@
import { ConfigurationHelper } from "./helpers/ConfigHelper";
import * as express from 'express';
import { ConfigurationHelper, conf } from "./helpers/ConfigHelper";
import { DatabaseHelper } from "./helpers/DatabaseHelper";
import { Routes, RouteType } from './controllers/Routes';
import { RequestHandler } from './models/RequestHandler';
/**
* Main project script
@ -17,5 +20,21 @@ async function init() {
console.info("Connect to database");
await DatabaseHelper.connect();
// Start HTTP Server
const app = express();
// Process the list of routes
Routes.forEach(route => {
if(route.type == RouteType.GET)
app.get(route.path, (req : express.Request, res : express.Response)=> {
route.cb(new RequestHandler(req, res));
})
})
app.listen(conf().port, () => {
console.info("Started server on http://127.0.0.1:" + conf().port);
});
}
init();

View File

@ -0,0 +1,33 @@
import { Response, Request } from "express";
/**
* Response to a request
*
* @author Pierre HUBERT
*/
export class RequestHandler {
public constructor(private req : Request, private response : Response) {}
/**
* Output an error code
*
* @param code HTTP Status code
* @param message The message to send
*/
public error(code : number, message : string) {
this.response.status(code).send({
code: code,
message: message
})
}
/**
* Send some data to the server
*
* @param data The data to send back to the server
*/
public send(data: any) {
this.response.send(data);
}
}