#include #include "settings.hpp" namespace smtp::file { Settings::Settings( std::string const& path_file) : mPathFile( path_file ) { } 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 ); } ParsedStoreType Settings::GetParsedStore() const { std::ifstream settings_file{ mPathFile, std::fstream::in }; if ( !settings_file.is_open() ) { //TODO new file // std::cerr << "Failed to open pcie_devices database \n"; } std::string line{}; ParsedStoreType result; 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() ) { //TODO new file // std::cerr << "Failed to open pcie_devices database \n"; 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 const& data) const { std::string result; result += data.first; result += '='; result += data.second; return result; } }