#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" #include "file/errors/not_create.hpp" namespace smtp::manage::builder { smtp::manage::Settings Settings::Build() const { 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(BuildSettingsErrorRegistrator()); result->Apply(std::make_shared(PATH, BuildFileErrorRegistrator(PATH))); return result; } file::errors::Registrator Settings::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::RegistratorSettings Settings::BuildSettingsErrorRegistrator() const { checker::RegistratorSettings result; result.Add( std::make_shared < checker::errors::settings::PortNumber >()); result.Add( std::make_shared < checker::errors::settings::Server >()); return result; } }