54 lines
1.6 KiB
D
54 lines
1.6 KiB
D
import handy_httpd;
|
|
import handy_httpd.handlers.path_handler;
|
|
import std.process;
|
|
|
|
static import api_modules.auth;
|
|
static import api_modules.announcement;
|
|
static import api_modules.classroom_compliance.api;
|
|
|
|
void main() {
|
|
string env = environment.get("TEACHER_TOOLS_API_ENV", "DEV");
|
|
|
|
ServerConfig config;
|
|
config.enableWebSockets = false;
|
|
config.port = 8080;
|
|
config.workerPoolSize = 3;
|
|
|
|
config.defaultHeaders["Access-Control-Allow-Origin"] = "*";
|
|
config.defaultHeaders["Access-Control-Allow-Methods"] = "*";
|
|
config.defaultHeaders["Access-Control-Request-Method"] = "*";
|
|
config.defaultHeaders["Access-Control-Allow-Headers"] = "Authorization, Content-Length, Content-Type";
|
|
|
|
if (env == "PROD") {
|
|
config.port = 8107;
|
|
config.workerPoolSize = 5;
|
|
}
|
|
|
|
PathHandler handler = new PathHandler();
|
|
handler.addMapping(Method.OPTIONS, "/api/**", &optionsEndpoint);
|
|
if (env == "DEV") {
|
|
handler.addMapping("/api/initialize-schema", &initializeSchemaEndpoint);
|
|
handler.addMapping("/api/generate-sample-data", &sampleDataEndpoint);
|
|
}
|
|
api_modules.auth.registerApiEndpoints(handler);
|
|
api_modules.announcement.registerApiEndpoints(handler);
|
|
api_modules.classroom_compliance.api.registerApiEndpoints(handler);
|
|
|
|
HttpServer server = new HttpServer(handler, config);
|
|
server.start();
|
|
}
|
|
|
|
void optionsEndpoint(ref HttpRequestContext ctx) {
|
|
ctx.response.status = HttpStatus.OK;
|
|
}
|
|
|
|
void initializeSchemaEndpoint(ref HttpRequestContext ctx) {
|
|
import db : initializeSchema;
|
|
initializeSchema();
|
|
}
|
|
|
|
void sampleDataEndpoint(ref HttpRequestContext ctx) {
|
|
import sample_data : insertSampleData;
|
|
insertSampleData();
|
|
}
|