#ifndef CONFIG_H #define CONFIG_H #include #include #include #include #include "permissions.h" #include "utils.h" class Config { private: std::map configmap; std::string required(const std::string &key); std::string optional(const std::string &key, std::string defaultvalue = ""); int optional(const std::string &key, int defaulvalue); uint64_t optional(const std::string &key, uint64_t defaultvalue); public: Config(const std::map &map); // TODO: these could be references!? std::string wikiname; std::string wikipath; std::string templatepath; std::string templateprefix; std::string logfile; std::string anon_username; std::string linkindex; std::string linkrecent; std::string linkallpages; std::string linkallcats; std::string linkshere; std::string linkpage; std::string linkrevision; std::string linkhistory; std::string linkedit; std::string linksettings; std::string linkdelete; std::string linklogout; std::string linkcategory; std::string loginurl; std::string linkrecentsort; std::string actionurl; std::string settingsurl; std::string deletionurl; std::string linkhistorysort; std::string adminregisterurl; std::string userchangepwurl; std::string connectionstring; int query_limit; int session_max_lifetime; int max_pagename_length; int threadscount; uint64_t max_payload_length; Permissions anon_permissions; std::string getConfig(const std::string &key) const { return utils::getKeyOrEmpty(configmap, key); } }; class ConfigReader { private: std::string path; public: ConfigReader(const std::string &file); Config readConfig(); }; #endif // CONFIG_H