summaryrefslogtreecommitdiff
path: root/src/management/builder
diff options
context:
space:
mode:
Diffstat (limited to 'src/management/builder')
-rw-r--r--src/management/builder/mail.cpp20
-rw-r--r--src/management/builder/mail.hpp3
-rw-r--r--src/management/builder/settings.cpp27
-rw-r--r--src/management/builder/settings.hpp4
4 files changed, 34 insertions, 20 deletions
diff --git a/src/management/builder/mail.cpp b/src/management/builder/mail.cpp
index a301f5b..a96fd33 100644
--- a/src/management/builder/mail.cpp
+++ b/src/management/builder/mail.cpp
@@ -1,19 +1,27 @@
#include "mail.hpp"
-#include "file/mail.hpp"
#include "checker/errors/mail/empty.hpp"
#include "checker/errors/mail/at_sign.hpp"
+#include "file/mail/file_decorator.hpp"
+#include "file/mail/checker_decorator.hpp"
+#include "file/mail/sort_decorator.hpp"
+
namespace smtp::manage::builder
{
smtp::manage::Mail Mail::Build() const
{
- static const std::string PATH = {"/var/lib/smtp/mails.txt"};
+ return smtp::manage::Mail{BuildFileManipulator()};
+ }
- auto registrator = BuildErrorRegistrator();
- file::Mail file_manipulator{PATH, registrator};
- return smtp::manage::Mail{file_manipulator};
- }
+ file::mail::types::IFileManipulatorPtr Mail::BuildFileManipulator() const
+ {
+ static const std::string PATH = {"/var/lib/smtp/mails.txt"};
+ auto result = std::make_shared<file::mail::SortDecorator>() ;
+ result->Apply(std::make_shared<file::mail::CheckerDecorator>( BuildErrorRegistrator() ))
+ .Apply(std::make_shared<file::mail::FileDecorator>( PATH ));
+ return result;
+ }
checker::RegistratorMails Mail::BuildErrorRegistrator() const
{
diff --git a/src/management/builder/mail.hpp b/src/management/builder/mail.hpp
index e735fd6..7cbb29d 100644
--- a/src/management/builder/mail.hpp
+++ b/src/management/builder/mail.hpp
@@ -2,6 +2,7 @@
#include "management/mail.hpp"
#include "checker/registrator_mails.hpp"
+#include "file/mail/types/ifile_manipulator.hpp"
namespace smtp::manage::builder
{
@@ -12,6 +13,8 @@ namespace smtp::manage::builder
~Mail() = default;
smtp::manage::Mail Build() const;
+ private:
+ file::mail::types::IFileManipulatorPtr BuildFileManipulator() const;
checker::RegistratorMails BuildErrorRegistrator() const;
};
diff --git a/src/management/builder/settings.cpp b/src/management/builder/settings.cpp
index 0b27bef..b682c49 100644
--- a/src/management/builder/settings.cpp
+++ b/src/management/builder/settings.cpp
@@ -1,23 +1,26 @@
#include "settings.hpp"
#include "checker/errors/settings/port_number.hpp"
#include "checker/errors/settings/server.hpp"
+#include "file/settings/settings.hpp"
+#include "file/settings/checker_decorator.hpp"
+#include "file/settings/file_decorator.hpp"
namespace smtp::manage::builder
{
-
smtp::manage::Settings Settings::Build() const
{
- auto file_manipulator = GetFileSettings();
- return smtp::manage::Settings{file_manipulator};
- }
-
- file::Settings Settings::GetFileSettings() const
- {
- static const std::string PATH = "/var/lib/smtp/settings.txt";
-
- auto registrator = BuildErrorRegistrator();
- return file::Settings{PATH, registrator};
- }
+ file::settings::Settings settings{ BuildFileManipulator() };
+ return smtp::manage::Settings{settings};
+ }
+
+ file::settings::types::IFileManipulatorPtr Settings::BuildFileManipulator() const
+ {
+ static const std::string PATH = "/var/lib/smtp/settings.txt";
+
+ auto result = std::make_shared<file::settings::CheckerDecorator>(BuildErrorRegistrator());
+ result->Apply(std::make_shared<file::settings::FileDecorator>(PATH));
+ return result;
+ }
checker::RegistratorSettings Settings::BuildErrorRegistrator() const
{
diff --git a/src/management/builder/settings.hpp b/src/management/builder/settings.hpp
index 64f9384..b7215e2 100644
--- a/src/management/builder/settings.hpp
+++ b/src/management/builder/settings.hpp
@@ -1,8 +1,8 @@
#pragma once
#include "management/settings.hpp"
-#include "file/settings.hpp"
#include "checker/registrator_settings.hpp"
+#include "file/settings/types/ifile_manipulator.hpp"
namespace smtp::manage::builder
{
@@ -14,7 +14,7 @@ namespace smtp::manage::builder
smtp::manage::Settings Build() const;
private:
- file::Settings GetFileSettings() const;
+ file::settings::types::IFileManipulatorPtr BuildFileManipulator()const;
checker::RegistratorSettings BuildErrorRegistrator() const;
};