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:
28
src/controllers/Routes.ts
Normal file
28
src/controllers/Routes.ts
Normal 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}
|
||||
|
||||
|
||||
]
|
21
src/controllers/WelcomeController.ts
Normal file
21
src/controllers/WelcomeController.ts
Normal 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",
|
||||
})
|
||||
}
|
||||
|
||||
}
|
@ -16,6 +16,7 @@ export interface DatabaseConfiguration {
|
||||
}
|
||||
|
||||
export interface Configuration {
|
||||
port: number,
|
||||
storageURL : string,
|
||||
storagePath : string,
|
||||
database : DatabaseConfiguration,
|
||||
|
21
src/main.ts
21
src/main.ts
@ -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();
|
33
src/models/RequestHandler.ts
Normal file
33
src/models/RequestHandler.ts
Normal 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user