Begin removing several dependencies on Config object

Este commit está contenido en:
2019-09-29 17:12:36 +02:00
padre 327c0793d1
commit 364d82a99f
Se han modificado 9 ficheros con 127 adiciones y 79 borrados

Ver fichero

@@ -6,25 +6,17 @@
#include <map>
#include "permissions.h"
#include "utils.h"
class Config
class WikiGeneralConfig
{
private:
std::map<std::string, std::string> 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<std::string, std::string> &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;
int max_pagename_length;
int query_limit;
};
struct ConfigUrls
{
std::string linkindex;
std::string linkrecent;
std::string linkallpages;
@@ -46,6 +38,53 @@ class Config
std::string linkhistorysort;
std::string adminregisterurl;
std::string userchangepwurl;
};
class ConfigVariableResolver
{
private:
const std::map<std::string, std::string> *configmap;
public:
ConfigVariableResolver()
{
}
ConfigVariableResolver(const std::map<std::string, std::string> &configmap)
{
this->configmap = &configmap;
}
std::string getConfig(const std::string &key) const
{
return utils::getKeyOrEmpty(*configmap, key);
}
};
class Config
{
private:
std::map<std::string, std::string> 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:
ConfigUrls urls;
ConfigVariableResolver configVarResolver;
Config(const std::map<std::string, std::string> &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 connectionstring;
int query_limit;
@@ -56,11 +95,6 @@ class Config
uint64_t max_payload_length;
Permissions anon_permissions;
std::string getConfig(const std::string &key) const
{
return utils::getKeyOrEmpty(configmap, key);
}
};
class ConfigReader