From 6cfc7076808138be2ad5a2b05edd635b5948bf31 Mon Sep 17 00:00:00 2001 From: claiff Date: Wed, 21 Sep 2022 15:50:24 +0300 Subject: add port errors check --- src/file/settings.cpp | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'src/file/settings.cpp') diff --git a/src/file/settings.cpp b/src/file/settings.cpp index a856f6e..710b67f 100644 --- a/src/file/settings.cpp +++ b/src/file/settings.cpp @@ -1,10 +1,13 @@ #include #include "settings.hpp" -#include "managment/logger.hpp" +#include "management/logger.hpp" namespace smtp::file { + // + //Constructors + // Settings::Settings( std::string const& path_file, checker::RegistratorSettings const& registrator_errors ) : mPathFile( path_file ) , mRegistratorErrors( registrator_errors ) @@ -12,6 +15,9 @@ namespace smtp::file } + // + //Public methods + // manage::SettingsFields Settings::Read() const { auto parsed_store = GetParsedStore(); @@ -21,9 +27,12 @@ namespace smtp::file bool Settings::Write( manage::SettingsFields const& settings_fields ) const { auto parsed_data = converter::Full{}.Convert( settings_fields ); - return SetParsedData( parsed_data ); + return mRegistratorErrors.Check( parsed_data ) && SetParsedData( parsed_data ); } + // + //Private methods + // manage::SettingsFileDataType Settings::GetParsedStore() const { std::ifstream settings_file{ mPathFile, std::fstream::in }; @@ -32,19 +41,26 @@ namespace smtp::file manage::Logger::LogError( "Unable to open file to read " + mPathFile ); return {}; } - std::string line{}; - manage::SettingsFileDataType result; + auto result = GetDataFromFile( settings_file ); - while ( std::getline( settings_file, line ) ) - { - auto parsed_data = parser::Settings{}.Parse( line ); - result.insert( parsed_data ); - } - settings_file.close(); + settings_file.close(); return mRegistratorErrors.Check(result) ? result : manage::SettingsFileDataType{}; } - bool Settings::SetParsedData( manage::SettingsFileDataType const& parsed_data ) const + manage::SettingsFileDataType Settings::GetDataFromFile( std::ifstream& settings_file ) const + { + std::string line{}; + manage::SettingsFileDataType result; + + while ( std::getline( settings_file, line ) ) + { + auto parsed_data = parser::Settings{}.Parse( line ); + result.insert( parsed_data ); + } + return result; + } + + 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() ) -- cgit v1.2.3