Introducing HandlerConfig class to give handlers config values they need

此提交包含在:
2019-09-29 20:27:53 +02:00
父節點 364d82a99f
當前提交 0ccc20454b
共有 8 個檔案被更改,包括 36 行新增33 行删除

查看文件

@ -1,6 +1,6 @@
#ifndef HANDLER_H
#define HANDLER_H
#include "../config.h"
#include "../response.h"
#include "../request.h"
#include "../template.h"
@ -17,14 +17,17 @@ class Handler
Database *database;
Session *userSession;
UrlProvider *urlProvider;
HandlerConfig *handlersConfig;
// TODO: may not to find a better place for this method
Permissions effectivePermissions(std::string page);
QueryOption queryOption(const Request &r) const;
public:
Handler(Template &templ, Database &db, Session &userSession, UrlProvider &provider, ICache &cache)
Handler(HandlerConfig &handlersConfig, Template &templ, Database &db, Session &userSession, UrlProvider &provider,
ICache &cache)
{
this->handlersConfig = &handlersConfig;
this->templ = &templ;
this->database = &db;
this->userSession = &userSession;

查看文件

@ -38,24 +38,27 @@ class Factory
Session &userSession;
UrlProvider &urlProvider;
ICache &cache;
HandlerConfig &handlerConfig;
public:
Factory(Template &templ, Database &db, Session &usersession, UrlProvider &urlprovider, ICache &cache)
: templ(templ), db(db), userSession(usersession), urlProvider(urlprovider), cache(cache)
Factory(HandlerConfig &handlerConfig, Template &templ, Database &db, Session &usersession, UrlProvider &urlprovider,
ICache &cache)
: handlerConfig(handlerConfig), templ(templ), db(db), userSession(usersession), urlProvider(urlprovider),
cache(cache)
{
}
template <class T> inline std::unique_ptr<T> produce()
{
return std::make_unique<T>(templ, db, userSession, urlProvider, cache);
return std::make_unique<T>(handlerConfig, templ, db, userSession, urlProvider, cache);
}
};
std::unique_ptr<Handler> createHandler(const std::string &action, Template &templ, Database &db, Session &usersession,
UrlProvider &urlprovider, ICache &cache)
std::unique_ptr<Handler> createHandler(const std::string &action, HandlerConfig &handlerConfig, Template &templ,
Database &db, Session &usersession, UrlProvider &urlprovider, ICache &cache)
{
Factory producer(templ, db, usersession, urlprovider, cache);
Factory producer(handlerConfig, templ, db, usersession, urlprovider, cache);
if(action == "" || action == "index")
{

查看文件

@ -4,6 +4,6 @@
#include "handler.h"
#include "../template.h"
std::unique_ptr<Handler> createHandler(const std::string &action, Template &templ, Database &db, Session &usersession,
UrlProvider &urlprovider, ICache &cache);
std::unique_ptr<Handler> createHandler(const std::string &action, HandlerConfig &handlerConfig, Template &templ,
Database &db, Session &usersession, UrlProvider &urlprovider, ICache &cache);
#endif // HANDLERFACTORY_H