Upgrade to SLF4D 4.2.0, simplify config.
This commit is contained in:
parent
85c5cee598
commit
185cf706a7
|
|
@ -7,6 +7,7 @@
|
||||||
"d2sqlite3": "~>1.0",
|
"d2sqlite3": "~>1.0",
|
||||||
"handy-http-starter": "~>1.6",
|
"handy-http-starter": "~>1.6",
|
||||||
"jwt4d": "~>0.0.2",
|
"jwt4d": "~>0.0.2",
|
||||||
|
"scheduled": "~>1.4.0",
|
||||||
"secured": "~>3.0"
|
"secured": "~>3.0"
|
||||||
},
|
},
|
||||||
"description": "Backend API for Finnow.",
|
"description": "Backend API for Finnow.",
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,26 @@
|
||||||
{
|
{
|
||||||
"fileVersion": 1,
|
"fileVersion": 1,
|
||||||
"versions": {
|
"versions": {
|
||||||
"asdf": {
|
"asdf": "0.7.17+commit.5.g7f77a30",
|
||||||
"repository": "git+https://github.com/libmir/asdf.git",
|
|
||||||
"version": "7f77a3031975816b604a513ddeefbc9e514f236c"
|
|
||||||
},
|
|
||||||
"d2sqlite3": "1.0.0",
|
"d2sqlite3": "1.0.0",
|
||||||
"dxml": "0.4.4",
|
"dxml": "0.4.5",
|
||||||
"handy-http-data": "1.3.0",
|
"handy-http-data": "1.3.0",
|
||||||
"handy-http-handlers": "1.1.0",
|
"handy-http-handlers": "1.1.0",
|
||||||
"handy-http-primitives": "1.8.1",
|
"handy-http-primitives": "1.8.1",
|
||||||
"handy-http-starter": "1.6.0",
|
"handy-http-starter": "1.6.0",
|
||||||
"handy-http-transport": "1.8.0",
|
"handy-http-transport": "1.10.0",
|
||||||
"handy-http-websockets": "1.2.0",
|
"handy-http-websockets": "1.2.0",
|
||||||
"jwt4d": "0.0.2",
|
"jwt4d": "0.0.2",
|
||||||
"mir-algorithm": "3.22.4",
|
"mir-algorithm": "3.22.4",
|
||||||
"mir-core": "1.7.3",
|
"mir-core": "1.7.3",
|
||||||
"openssl": "3.3.4",
|
"openssl": "3.3.4",
|
||||||
"path-matcher": "1.2.0",
|
"path-matcher": "1.2.0",
|
||||||
|
"photon": "0.18.11",
|
||||||
|
"scheduled": "1.4.0",
|
||||||
"secured": "3.0.0",
|
"secured": "3.0.0",
|
||||||
|
"sharded-map": "2.7.0",
|
||||||
"silly": "1.1.1",
|
"silly": "1.1.1",
|
||||||
"slf4d": "4.1.1",
|
"slf4d": "4.2.0",
|
||||||
"streams": "3.6.0"
|
"streams": "3.6.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,11 @@ import slf4d;
|
||||||
import slf4d.default_provider;
|
import slf4d.default_provider;
|
||||||
|
|
||||||
import api_mapping;
|
import api_mapping;
|
||||||
|
import util.config;
|
||||||
struct AppConfig {
|
|
||||||
ushort port;
|
|
||||||
string webOrigin;
|
|
||||||
string logLevel;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
const AppConfig config = readConfig();
|
const config = readConfig();
|
||||||
Level logLevel = Levels.INFO;
|
Level logLevel = getConfiguredLoggingLevel(config);
|
||||||
if (config.logLevel == "TRACE") {
|
|
||||||
logLevel = Levels.TRACE;
|
|
||||||
} else if (config.logLevel == "DEBUG") {
|
|
||||||
logLevel = Levels.DEBUG;
|
|
||||||
} else if (config.logLevel == "WARN") {
|
|
||||||
logLevel = Levels.WARN;
|
|
||||||
} else if (config.logLevel == "ERROR") {
|
|
||||||
logLevel = Levels.ERROR;
|
|
||||||
}
|
|
||||||
auto provider = new DefaultProvider(logLevel);
|
auto provider = new DefaultProvider(logLevel);
|
||||||
configureLoggingProvider(provider);
|
configureLoggingProvider(provider);
|
||||||
infoF!"Loaded app config: port = %d, webOrigin = %s"(config.port, config.webOrigin);
|
infoF!"Loaded app config: port = %d, webOrigin = %s"(config.port, config.webOrigin);
|
||||||
|
|
@ -31,30 +17,3 @@ void main() {
|
||||||
HttpTransport transport = new TaskPoolHttp1Transport(mapApiHandlers(config.webOrigin), transportConfig);
|
HttpTransport transport = new TaskPoolHttp1Transport(mapApiHandlers(config.webOrigin), transportConfig);
|
||||||
transport.start();
|
transport.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
AppConfig readConfig() {
|
|
||||||
import std.file : exists, readText;
|
|
||||||
import std.json;
|
|
||||||
import std.conv : to;
|
|
||||||
|
|
||||||
AppConfig defaultConfig = AppConfig(
|
|
||||||
8080,
|
|
||||||
"http://localhost:5173",
|
|
||||||
"INFO"
|
|
||||||
);
|
|
||||||
// Local dev environment if no config is given.
|
|
||||||
if (!exists("finnow-api-config.json")) {
|
|
||||||
return defaultConfig;
|
|
||||||
}
|
|
||||||
JSONValue obj = parseJSON(readText("finnow-api-config.json"));
|
|
||||||
if ("port" in obj.object) {
|
|
||||||
defaultConfig.port = obj.object["port"].integer.to!ushort;
|
|
||||||
}
|
|
||||||
if ("webOrigin" in obj.object) {
|
|
||||||
defaultConfig.webOrigin = obj.object["webOrigin"].str;
|
|
||||||
}
|
|
||||||
if ("logLevel" in obj.object) {
|
|
||||||
defaultConfig.logLevel = obj.object["logLevel"].str;
|
|
||||||
}
|
|
||||||
return defaultConfig;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
module util.config;
|
||||||
|
|
||||||
|
import std.stdio;
|
||||||
|
import slf4d;
|
||||||
|
|
||||||
|
private const CONFIG_FILE = "finnow-api-config.json";
|
||||||
|
|
||||||
|
struct AppConfig {
|
||||||
|
ushort port;
|
||||||
|
string webOrigin;
|
||||||
|
string logLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
Level getConfiguredLoggingLevel(in AppConfig cfg) {
|
||||||
|
try {
|
||||||
|
return parseLoggingLevel(cfg.logLevel);
|
||||||
|
} catch (LoggingException e) {
|
||||||
|
return Levels.INFO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AppConfig readConfig() {
|
||||||
|
import std.file : exists, readText;
|
||||||
|
import std.json;
|
||||||
|
import std.conv : to;
|
||||||
|
|
||||||
|
AppConfig defaultConfig = AppConfig(
|
||||||
|
8080,
|
||||||
|
"http://localhost:5173",
|
||||||
|
"INFO"
|
||||||
|
);
|
||||||
|
// Local dev environment if no config is given.
|
||||||
|
if (!exists(CONFIG_FILE)) {
|
||||||
|
return defaultConfig;
|
||||||
|
}
|
||||||
|
JSONValue obj;
|
||||||
|
try {
|
||||||
|
obj = parseJSON(readText(CONFIG_FILE));
|
||||||
|
} catch (Exception e) {
|
||||||
|
stderr.writefln!"Failed to read config from file %s, using default config as a fallback: %s"(
|
||||||
|
CONFIG_FILE,
|
||||||
|
e.msg
|
||||||
|
);
|
||||||
|
return defaultConfig;
|
||||||
|
}
|
||||||
|
if ("port" in obj.object) {
|
||||||
|
defaultConfig.port = obj.object["port"].integer.to!ushort;
|
||||||
|
}
|
||||||
|
if ("webOrigin" in obj.object) {
|
||||||
|
defaultConfig.webOrigin = obj.object["webOrigin"].str;
|
||||||
|
}
|
||||||
|
if ("logLevel" in obj.object) {
|
||||||
|
defaultConfig.logLevel = obj.object["logLevel"].str;
|
||||||
|
}
|
||||||
|
return defaultConfig;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue