module main; import std.json; import requests; import slf4d; import slf4d.default_provider; import config; import singletons; import db.db; import net.request_pool; import webfinger; import ap.actor; // import ap.util; import std.math.remainder; import util; import ap.activity_stream; import ap.util; void commonInit() { auto provider = new DefaultProvider(true, Levels.DEBUG); configureLoggingProvider(provider); Config cfg = loadConfig(); initRequestPool(cfg); initDatabase(cfg); } Config loadConfig() { Config cfg = new Config(); cfg.load(); return cfg; } void initRequestPool(Config cfg) { Rp = new RequestPool(); Rp.startBackground(); } void initDatabase(Config cfg) { Db = new DB(DBSettings.fromJson(cfg.v["db"])); Db.connect(); } void main() { import std.stdio; commonInit(); scope (exit) { Db.close(); Rp.stop(); } ASObject actor = apResolveRemoteUsername("@marisa@ak.gensokyo.shop"); // writeln(actor.raw.toJSON(true)); writeln(actor.stringRep); // Actor marisa = apResolveRemoteUsername("@admin@localhost:8080"); // infoF!"Actor type: %s"(marisa.type); // infoF!"Actor preferredUsername: %s"(marisa.preferredUsername); // infoF!"Actor sharedInbox: %s"(marisa.endpoints.sharedInbox); // PRequest followers = PRequest(); // with (followers) { // url = marisa.followers; // headers["Accept"] = "application/activity+json"; // } // Response rs = Rp.request(followers, true); // infoF!"followers: %s"(rs.responseBody); } //int main() { // auto provider = new DefaultProvider(true, Levels.DEBUG); // configureLoggingProvider(provider); // // Config cfg = new Config(); // // try { // cfg.load(); // } catch (Exception e) { // error(e); // return 21; // } // // DBSettings dbSettings; // auto dbCfg = cfg.v["db"]; // with (dbSettings) { // host = dbCfg["host"].str; // port = cast(ushort) dbCfg["port"].integer; // username = dbCfg["username"].str; // password = dbCfg["password"].str; // dbname = dbCfg["dbName"].str; // // switch (dbCfg["connector"].str) { // case "postgresql": // connector = DBConnector.DB_PGSQL; // break; // default: // break; // } // } // // Db = new DB(dbSettings); // Db.connect(); // // scope (exit) // Db.close(); // // return 0; //} //