From 43e721305c866ad4b2c4c35d1133f169e41dd49b Mon Sep 17 00:00:00 2001 From: claiff Date: Wed, 5 Oct 2022 15:57:43 +0300 Subject: file reader/writer split by decorators --- src/management/builder/mail.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/management/builder/mail.cpp') 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() ; + result->Apply(std::make_shared( BuildErrorRegistrator() )) + .Apply(std::make_shared( PATH )); + return result; + } checker::RegistratorMails Mail::BuildErrorRegistrator() const { -- cgit v1.2.3