#include #include "mail.hpp" #include "logger/logger_set.hpp" namespace smtp::file { Mail::Mail( std::string const& path_file ) : mPathFile( path_file ) { } manage::MailsSet Mail::Read() const { std::ifstream mail_file{mPathFile, std::fstream::in}; if( !mail_file.is_open()) { logger::LoggerSet::GetInstance()->LogError( "Unable to open file to read " + mPathFile ); return {}; } std::string line{}; manage::MailsSet result; while( std::getline( mail_file, line )) { auto parsed_data = GetMailFromLine( line ); if( parsed_data ) { result.push_back( *parsed_data ); } } mail_file.close(); return result; } bool Mail::Write( manage::MailsSet const& data ) const { std::ofstream mail_file{mPathFile, std::fstream::out | std::fstream::trunc}; if( !mail_file.is_open()) { logger::LoggerSet::GetInstance()->LogError( "Unable to open file to write " + mPathFile ); return false; } for( const auto& pair: data ) { mail_file << pair << "\n"; } mail_file.close(); return true; } std::optional < std::string > Mail::GetMailFromLine( std::string const& line ) const { //TODO registrator if checking parsing auto pos = line.find( '@' ); if( pos == std::string::npos ) { return {}; } return line; } }