SmartHomeDashboard/Server/server/RequestHandler.ts

36 lines
1.1 KiB
TypeScript

import { IncomingMessage, ServerResponse } from "node:http";
import { FileHandler, File } from "./FileHandler";
import { DataHandler } from "./DataHandler";
import { Database } from "./LocalDatabase";
export class RequestHandler {
static dh: DataHandler;
private fh: FileHandler;
constructor(db: &Database) {
RequestHandler.dh = new DataHandler(db);
}
new_request(req: IncomingMessage, res: ServerResponse): void {
if(RequestHandler.dh.valid_uri(req.url)) {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(RequestHandler.dh.get_data_json(req.url));
}
else if(this.fh.file_allowed(req.url)) {
if(this.fh.file_exists(req.url)) {
res.statusCode = 200;
let f: File = this.fh.file_get(req.url)
res.setHeader('Content-Type', f.type);
res.end(f.content);
} else {
res.statusCode = 404;
}
} else {
res.statusCode = 403;
}
console.log(req.url, res.statusCode);
res.end();
}
}