#include "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" #include "file/errors/not_create.hpp" namespace smtp::manage::builder { smtp::manage::Mail Mail::Build() const { return smtp::manage::Mail{BuildFileManipulator()}; } 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( BuildSettingsErrorRegistrator() )) .Apply(std::make_shared( PATH, BuildFileErrorRegistrator(PATH) )); return result; } file::errors::Registrator Mail::BuildFileErrorRegistrator( std::string const& path ) const { file::errors::Registrator result; auto not_created_file_error = std::make_shared(path); result.Add(not_created_file_error, ENOENT); return result; } checker::RegistratorMails Mail::BuildSettingsErrorRegistrator() const { checker::RegistratorMails result; result.Add( std::make_shared < checker::errors::mail::Empty >()); result.Add( std::make_shared < checker::errors::mail::AtSign >()); return result; } }