#include #include "file_decorator.hpp" #include "logger/logger_set.hpp" namespace smtp::file::mail { // //Constructors // FileDecorator::FileDecorator( std::string const& path_file ) : mPathFile( path_file ) { } // //Public methods // manage::MailsSet FileDecorator::Read() const { static const std::string METHOD_NAME = "Read mails"; std::ifstream mail_file{ mPathFile, std::fstream::in }; if ( !mail_file.is_open() ) { logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to read " + mPathFile ); return {}; } auto result = ReadFile( mail_file ); mail_file.close(); return result; } bool FileDecorator::Write( manage::MailsSet const& data ) const { static const std::string METHOD_NAME = "Write mails"; std::ofstream mail_file{ mPathFile, std::fstream::out | std::fstream::trunc }; if ( !mail_file.is_open() ) { logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to write " + mPathFile ); return false; } auto result = WriteFile( mail_file, data ); mail_file.close(); return result; } // //Private methods // manage::MailsSet FileDecorator::ReadFile( std::ifstream& mail_file ) const { std::string line{}; manage::MailsSet result; while ( std::getline( mail_file, line ) ) { result.push_back( line ); } return result; } bool FileDecorator::WriteFile( std::ofstream& mail_file, manage::MailsSet const& data ) const { bool result = true; for( const auto& mail : data ) { mail_file << mail << "\n"; } return result; } }