diff options
Diffstat (limited to 'src/file/settings.cpp')
-rw-r--r-- | src/file/settings.cpp | 97 |
1 files changed, 57 insertions, 40 deletions
diff --git a/src/file/settings.cpp b/src/file/settings.cpp index 445cb5e..83f8322 100644 --- a/src/file/settings.cpp +++ b/src/file/settings.cpp @@ -5,60 +5,77 @@ namespace smtp::file { - Settings::Settings( std::string const& path_file ) - : mPathFile( path_file ) - { + // + //Constructors + // + Settings::Settings( std::string const& path_file, checker::RegistratorSettings const& registrator_errors ) + : mPathFile( path_file ) + , mRegistratorErrors( registrator_errors ) + { - } + } - manage::SettingsFields Settings::Read() const - { - auto parsed_store = GetParsedStore(); - return converter::Full{}.Convert( parsed_store ); - } + // + //Public methods + // + manage::SettingsFields Settings::Read() const + { + auto parsed_store = GetParsedStore(); + return converter::Full{}.Convert( parsed_store ); + } - bool Settings::Write( manage::SettingsFields const& settings_fields ) const - { - auto parsed_data = converter::Full{}.Convert( settings_fields ); - return SetParsedData( parsed_data ); - } + bool Settings::Write( manage::SettingsFields const& settings_fields ) const + { + auto parsed_data = converter::Full{}.Convert( settings_fields ); + return mRegistratorErrors.Check( parsed_data ) && SetParsedData( parsed_data ); + } + + // + //Private methods + // + manage::SettingsFileDataType Settings::GetParsedStore() const + { + std::ifstream settings_file{ mPathFile, std::fstream::in }; + if ( !settings_file.is_open() ) + { + manage::Logger::LogError( "Unable to open file to read " + mPathFile ); + return {}; + } + auto result = GetDataFromFile( settings_file ); - ParsedStoreType Settings::GetParsedStore() const + settings_file.close(); + return mRegistratorErrors.Check(result) ? result : manage::SettingsFileDataType{}; + } + + manage::SettingsFileDataType Settings::GetDataFromFile( std::ifstream& settings_file ) const { - std::ifstream settings_file{mPathFile, std::fstream::in}; - if( !settings_file.is_open()) - { - logger::LoggerSet::GetInstance()->LogError( "Unable to open file to read " + mPathFile ); - return {}; - } std::string line{}; - ParsedStoreType result; + manage::SettingsFileDataType result; - while( std::getline( settings_file, line )) + while ( std::getline( settings_file, line ) ) { auto parsed_data = parser::Settings{}.Parse( line ); result.insert( parsed_data ); } - settings_file.close(); return result; } - bool Settings::SetParsedData( ParsedStoreType const& parsed_data ) const - { - std::ofstream settings_file{mPathFile, std::fstream::out | std::fstream::trunc}; - if( !settings_file.is_open()) - { - logger::LoggerSet::GetInstance()->LogError( "Unable to open file to write " + mPathFile ); - return false; - } - for( const auto& data: parsed_data ) - { - auto line = BuildParam( data ); - settings_file << line << "\n"; - } - settings_file.close(); - return true; - } + bool Settings::SetParsedData( manage::SettingsFileDataType const& parsed_data ) const + { + std::ofstream settings_file{ mPathFile, std::fstream::out | std::fstream::trunc }; + if ( !settings_file.is_open() ) + { + manage::Logger::LogError( "Unable to open file to write " + mPathFile ); + return false; + } + for( const auto& data : parsed_data ) + { + auto line = BuildParam( data ); + settings_file << line << "\n"; + } + settings_file.close(); + return true; + } std::string Settings::BuildParam( std::pair < std::string, std::string > const& data ) const { |