summaryrefslogtreecommitdiff
path: root/src/ContentManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ContentManager.cpp')
-rw-r--r--src/ContentManager.cpp89
1 files changed, 59 insertions, 30 deletions
diff --git a/src/ContentManager.cpp b/src/ContentManager.cpp
index a1787bd..6beef5a 100644
--- a/src/ContentManager.cpp
+++ b/src/ContentManager.cpp
@@ -1,61 +1,90 @@
#include "ContentManager.hpp"
+void ContentManager::SetStaticFilesystem(std::shared_ptr<Filesystem> & static_fs)
+{
+ m_StaticFilesystem = static_fs;
+}
+
+void ContentManager::SetTemplateSystem(std::shared_ptr<TemplateManager> & tmgr)
+{
+ m_TemplateManager = tmgr;
+}
+
bool ContentManager::RegisterModule(std::shared_ptr<Content> ctnt)
{
- std::string const & basePath = ctnt->GetBaseUri();
- Redirections const & rs = ctnt->GetRedirections();
+ std::string const & basePath = ctnt->GetUriBasePath();
+ Redirections const & rs = ctnt->GetRedirections();
- m_ContentModules[basePath] = ctnt;
- for (auto & redirect : rs)
- {
- m_ContentModules[redirect] = ctnt;
- }
+ m_ContentModules[basePath] = ctnt;
+ for (auto & redirect : rs)
+ {
+ m_ContentModules[redirect] = ctnt;
+ }
- return false;
+ return false;
}
bool ContentManager::InitAll(void)
{
- bool ret = true;
+ bool ret = true;
- for (auto & content : m_ContentModules)
- {
- if (content.second->Init() == false)
+ for (auto & content : m_ContentModules)
{
- ret = false;
+ if (content.second->Init() == false)
+ {
+ ret = false;
+ }
}
- }
- return ret;
+ return ret;
}
void ContentManager::ShutdownAll(void)
{
- std::unordered_map<std::shared_ptr<Content>, bool> shutdownModules;
+ std::unordered_map<std::shared_ptr<Content>, bool> shutdownModules;
- for (auto & content : m_ContentModules)
- {
- auto const & search = shutdownModules.find(content.second);
- if (search != shutdownModules.end())
+ for (auto & content : m_ContentModules)
{
- continue;
- } else {
- content.second->Shutdown();
- shutdownModules[content.second] = true;
+ auto const & search = shutdownModules.find(content.second);
+ if (search != shutdownModules.end())
+ {
+ continue;
+ }
+ else
+ {
+ content.second->Shutdown();
+ shutdownModules[content.second] = true;
+ }
}
- }
- m_ContentModules.clear();
+ m_ContentModules.clear();
}
-bool ContentManager::Render(std::string & basePath)
+bool ContentManager::Render(char const * basePath, RequestResponse & rr, std::string & out)
{
- (void)basePath;
+ if (m_ContentModules.find(basePath) == m_ContentModules.end())
+ {
+ return false;
+ }
+
+ RenderData rd;
+ auto & cntm = m_ContentModules[basePath];
+ auto & main = cntm->GetMainTemplate();
+
+ if (m_ContentModules[basePath]->Render(rr, rd) == false)
+ {
+ return false;
+ }
+
+ if (m_TemplateManager->RenderTemplate(main, rd, out) == false)
+ {
+ return false;
+ }
- return false;
+ return true;
}
ContentModules const & ContentManager::GetAllModules() const
{
- return m_ContentModules;
+ return m_ContentModules;
}