finnow/finnow-api/source/app.d

33 lines
909 B
D

import handy_http_transport;
import slf4d;
import slf4d.default_provider;
import api_mapping;
struct AppConfig {
ushort port;
string webOrigin;
}
void main() {
const AppConfig config = readConfig();
auto provider = new DefaultProvider(Levels.TRACE);
configureLoggingProvider(provider);
infoF!"Loaded app config: port = %d, webOrigin = %s"(config.port, config.webOrigin);
HttpTransport transport = new TaskPoolHttp1Transport(mapApiHandlers(config.webOrigin), config.port);
transport.start();
}
AppConfig readConfig() {
import std.file : exists, readText;
import std.json;
import std.conv : to;
// Local dev environment if no config is given.
if (!exists("finnow-api-config.json")) {
return AppConfig(8080, "http://localhost:5173");
}
JSONValue obj = parseJSON(readText("finnow-api-config.json"));
return AppConfig(obj.object["port"].integer.to!ushort, obj.object["webOrigin"].str);
}