#include #include "mail.hpp" #include "managment/logger.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() ) { manage::Logger::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() ) { manage::Logger::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 Mail::GetMailFromLine( std::string const& line ) const { //TODO registrator if checking parsing auto pos = line.find('@'); if(pos == std::string::npos) { return {}; } return line; } }