diff options
Diffstat (limited to 'src/file')
-rw-r--r-- | src/file/converter/file.cpp (renamed from src/file/settings_converter.cpp) | 31 | ||||
-rw-r--r-- | src/file/converter/file.hpp | 30 | ||||
-rw-r--r-- | src/file/converter/full.cpp | 17 | ||||
-rw-r--r-- | src/file/converter/full.hpp | 25 | ||||
-rw-r--r-- | src/file/converter/settings.cpp | 65 | ||||
-rw-r--r-- | src/file/converter/settings.hpp | 30 | ||||
-rw-r--r-- | src/file/mail.cpp | 24 | ||||
-rw-r--r-- | src/file/mail.hpp | 8 | ||||
-rw-r--r-- | src/file/settings.cpp | 39 | ||||
-rw-r--r-- | src/file/settings.hpp | 15 | ||||
-rw-r--r-- | src/file/settings_converter.hpp | 41 |
11 files changed, 240 insertions, 85 deletions
diff --git a/src/file/settings_converter.cpp b/src/file/converter/file.cpp index c64041f..d0bb032 100644 --- a/src/file/settings_converter.cpp +++ b/src/file/converter/file.cpp @@ -1,11 +1,10 @@ -#include "settings_converter.hpp" +#include "file.hpp" -namespace smtp::file +namespace smtp::file::converter { - - SettingsFields SettingsConverter::Convert( ParsedDataType const& from ) const + manage::SettingsFields File::Convert( manage::SettingsFileDataType const& from ) const { - SettingsFields result; + manage::SettingsFields result; ApplyAuth( result, from ); ApplySsl( result, from ); @@ -17,27 +16,21 @@ namespace smtp::file return result; } - std::unordered_map<std::string, std::string> SettingsConverter::Convert( SettingsFields const& from ) const - { - std::unordered_map<std::string, std::string> result; - return result; - } - - void SettingsConverter::ApplyAuth( SettingsFields &result, ParsedDataType const& from ) const + void File::ApplyAuth( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const { static const std::string FIELD = "need_auth"; ApplyBool(from, FIELD, result.is_need_auth); } - void SettingsConverter::ApplySsl( SettingsFields &result, ParsedDataType const& from ) const + void File::ApplySsl( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const { static const std::string FIELD = "need_ssl"; ApplyBool(from, FIELD, result.is_need_ssl); } - void SettingsConverter::ApplyBool( ParsedDataType const& from, std::string const& search_field, bool& field ) const + void File::ApplyBool( manage::SettingsFileDataType const& from, std::string const& search_field, bool& field ) const { static const std::string TRUE_AS_STRING = "true"; static const std::string FALSE_AS_STRING = "false"; @@ -54,35 +47,35 @@ namespace smtp::file field = ( find->second == TRUE_AS_STRING ) ? true : false; } - void SettingsConverter::ApplyUsername( SettingsFields &result, ParsedDataType const& from ) const + void File::ApplyUsername( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const { static const std::string FIELD = "username"; ApplyString( from, FIELD, result.username ); } - void SettingsConverter::ApplyPassword( SettingsFields &result, ParsedDataType const& from ) const + void File::ApplyPassword( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const { static const std::string FIELD = "password"; ApplyString( from, FIELD, result.password ); } - void SettingsConverter::ApplyHost( SettingsFields &result, ParsedDataType const& from ) const + void File::ApplyHost( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const { static const std::string FIELD = "host"; ApplyString( from, FIELD, result.host ); } - void SettingsConverter::ApplyPort( SettingsFields &result, ParsedDataType const& from ) const + void File::ApplyPort( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const { static const std::string FIELD = "port"; ApplyString(from, FIELD, result.port); } - void SettingsConverter::ApplyString( ParsedDataType const& from, std::string const& search_field, std::string& field ) const + void File::ApplyString( manage::SettingsFileDataType const& from, std::string const& search_field, std::string& field ) const { auto find = from.find( search_field ); if( find == from.end() ) diff --git a/src/file/converter/file.hpp b/src/file/converter/file.hpp new file mode 100644 index 0000000..63ff6dd --- /dev/null +++ b/src/file/converter/file.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include <unordered_map> +#include <string> + +#include "managment/general.hpp" + +namespace smtp::file::converter +{ + class File + { + public: + File() = default; + ~File() = default; + + manage::SettingsFields Convert( manage::SettingsFileDataType const& from ) const; + private: + void ApplyAuth( manage::SettingsFields& result, manage::SettingsFileDataType const& from ) const; + void ApplySsl( manage::SettingsFields& result, manage::SettingsFileDataType const& from ) const; + void ApplyBool( manage::SettingsFileDataType const& from, std::string const& search_field, bool& field ) const; + + void ApplyUsername( manage::SettingsFields& result, manage::SettingsFileDataType const& from ) const; + void ApplyPassword( manage::SettingsFields& result, manage::SettingsFileDataType const& from ) const; + void ApplyHost( manage::SettingsFields& result, manage::SettingsFileDataType const& from ) const; + void ApplyPort( manage::SettingsFields& result, manage::SettingsFileDataType const& from ) const; + void ApplyString( manage::SettingsFileDataType const& from, std::string const& search_field, std::string& field ) const; + }; +} + + diff --git a/src/file/converter/full.cpp b/src/file/converter/full.cpp new file mode 100644 index 0000000..61f5a85 --- /dev/null +++ b/src/file/converter/full.cpp @@ -0,0 +1,17 @@ +#include "full.hpp" +#include "file.hpp" +#include "settings.hpp" + +namespace smtp::file::converter +{ + manage::SettingsFields Full::Convert( ParsedDataType const& from ) const + { + return File{}.Convert( from ); + } + + std::unordered_map<std::string, std::string> Full::Convert( manage::SettingsFields const& from ) const + { + return Settings{}.Convert( from ); + + } +} diff --git a/src/file/converter/full.hpp b/src/file/converter/full.hpp new file mode 100644 index 0000000..5ffccd4 --- /dev/null +++ b/src/file/converter/full.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include <unordered_map> +#include <string> + +#include "managment/general.hpp" + +namespace smtp::file::converter +{ + using ParsedDataType = std::unordered_map<std::string, std::string>; + + class Full + { + public: + Full() = default; + ~Full() = default; + + manage::SettingsFields Convert( std::unordered_map<std::string, std::string> const& from ) const; + std::unordered_map<std::string, std::string> Convert( manage::SettingsFields const& from ) const; + private: + + }; +} + + diff --git a/src/file/converter/settings.cpp b/src/file/converter/settings.cpp new file mode 100644 index 0000000..809eef8 --- /dev/null +++ b/src/file/converter/settings.cpp @@ -0,0 +1,65 @@ +#include "settings.hpp" + +namespace smtp::file::converter +{ + + ParsedDataType Settings::Convert( manage::SettingsFields const& from ) const + { + ParsedDataType result; + + ApplyPort( from, result ); + ApplyHost( from, result ); + ApplyPassword( from, result ); + ApplyUsername( from, result ); + ApplySsl( from, result ); + ApplyAuth( from, result ); + + return result; + } + + void Settings::ApplyAuth( manage::SettingsFields const& from, ParsedDataType& result ) const + { + static const std::string FIELD = "need_auth"; + static const std::string TRUE_AS_STRING = "true"; + static const std::string FALSE_AS_STRING = "false"; + + from.is_need_auth ? result.insert({FIELD, TRUE_AS_STRING}) : result.insert({FIELD, FALSE_AS_STRING}); + } + + void Settings::ApplySsl( manage::SettingsFields const& from, ParsedDataType& result ) const + { + static const std::string FIELD = "need_ssl"; + static const std::string TRUE_AS_STRING = "true"; + static const std::string FALSE_AS_STRING = "false"; + + from.is_need_ssl ? result.insert({FIELD, TRUE_AS_STRING}) : result.insert({FIELD, FALSE_AS_STRING}); + } + + void Settings::ApplyUsername( manage::SettingsFields const& from, ParsedDataType& result ) const + { + static const std::string FIELD = "username"; + + result.insert({FIELD, from.username}); + } + + void Settings::ApplyPassword( manage::SettingsFields const& from, ParsedDataType& result ) const + { + static const std::string FIELD = "password"; + + result.insert({FIELD, from.password}); + } + + void Settings::ApplyHost( manage::SettingsFields const& from, ParsedDataType& result ) const + { + static const std::string FIELD = "host"; + + result.insert({FIELD, from.host}); + } + + void Settings::ApplyPort( manage::SettingsFields const& from, ParsedDataType& result ) const + { + static const std::string FIELD = "port"; + + result.insert({FIELD, from.port}); + } +} diff --git a/src/file/converter/settings.hpp b/src/file/converter/settings.hpp new file mode 100644 index 0000000..8f94942 --- /dev/null +++ b/src/file/converter/settings.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include <unordered_map> +#include <string> + +#include "managment/general.hpp" + +namespace smtp::file::converter +{ + using ParsedDataType = std::unordered_map<std::string, std::string>;; + + class Settings + { + public: + Settings() = default; + ~Settings() = default; + + std::unordered_map<std::string, std::string> Convert( manage::SettingsFields const& from ) const; + private: + void ApplyAuth( manage::SettingsFields const& from, ParsedDataType& result ) const; + void ApplySsl( manage::SettingsFields const& from, ParsedDataType& result ) const; + + void ApplyUsername( manage::SettingsFields const& from, ParsedDataType& result ) const; + void ApplyPassword( manage::SettingsFields const& from, ParsedDataType& result ) const; + void ApplyHost( manage::SettingsFields const& from, ParsedDataType& result ) const; + void ApplyPort( manage::SettingsFields const& from, ParsedDataType& result ) const; + }; +} + + diff --git a/src/file/mail.cpp b/src/file/mail.cpp index 14e6228..4da36c5 100644 --- a/src/file/mail.cpp +++ b/src/file/mail.cpp @@ -5,21 +5,21 @@ namespace smtp::file { Mail::Mail( std::string const& path_file ) - : PathFile( path_file ) + : mPathFile( path_file ) { } - std::list<std::string> Mail::Read() const + manage::MailsSet Mail::Read() const { - std::ifstream mail_file{ PathFile }; + std::ifstream mail_file{ mPathFile }; if ( !mail_file.is_open() ) { //TODO new file // std::cerr << "Failed to open pcie_devices database \n"; } std::string line{}; - std::list<std::string> result; + manage::MailsSet result; while ( std::getline( mail_file, line ) ) { @@ -32,6 +32,22 @@ namespace smtp::file return result; } + bool Mail::Write( manage::MailsSet const& data ) const + { + std::ofstream settings_file{ mPathFile }; + if ( !settings_file.is_open() ) + { + //TODO new file + // std::cerr << "Failed to open pcie_devices database \n"; + return false; + } + for( const auto& pair : data ) + { + settings_file << pair << "\n"; + } + return true; + } + std::optional<std::string> Mail::GetMailFromLine( std::string const& line ) const { //TODO parsing diff --git a/src/file/mail.hpp b/src/file/mail.hpp index 0f5ade5..34050bf 100644 --- a/src/file/mail.hpp +++ b/src/file/mail.hpp @@ -1,9 +1,10 @@ #pragma once -#include <list> #include <string> #include <optional> +#include "managment/general.hpp" + namespace smtp::file { class Mail @@ -12,11 +13,12 @@ namespace smtp::file explicit Mail( std::string const& path_file ); ~Mail() = default; - std::list<std::string> Read() const; + manage::MailsSet Read() const; + bool Write( manage::MailsSet const& data ) const; private: std::optional<std::string> GetMailFromLine( std::string const& line ) const; - std::string PathFile; + std::string mPathFile; }; } diff --git a/src/file/settings.cpp b/src/file/settings.cpp index bcb2f3e..4691fda 100644 --- a/src/file/settings.cpp +++ b/src/file/settings.cpp @@ -4,24 +4,22 @@ namespace smtp::file { - Settings::Settings( std::string const& path_file, parser::Settings const& parser, SettingsConverter const& converter) + Settings::Settings( std::string const& path_file) : mPathFile( path_file ) - , mParser( parser ) - , mConverter( converter ) { } - SettingsFields Settings::Read() const + manage::SettingsFields Settings::Read() const { auto parsed_store = GetParsedStore(); - return mConverter.Convert( parsed_store ); + return converter::Full{}.Convert( parsed_store ); } - void Settings::Write( SettingsFields const& settings_fields ) const + bool Settings::Write( manage::SettingsFields const& settings_fields ) const { - auto parsed_data = mConverter.Convert( settings_fields ); - SetParsedData(); + auto parsed_data = converter::Full{}.Convert( settings_fields ); + return SetParsedData( parsed_data ); } ParsedStoreType Settings::GetParsedStore() const @@ -37,14 +35,35 @@ namespace smtp::file while ( std::getline( settings_file, line ) ) { - auto parsed_data = mParser.Parse(line); + auto parsed_data = parser::Settings{}.Parse(line); result.insert( parsed_data ); } return result; } - void Settings::SetParsedData() const + bool Settings::SetParsedData( ParsedStoreType const& parsed_data ) const { + std::ofstream settings_file{ mPathFile }; + 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"; + } + return true; + } + std::string Settings::BuildParam( std::pair<std::string, std::string> const& data) const + { + std::string result; + result += data.first; + result += '='; + result += data.second; + return result; } } diff --git a/src/file/settings.hpp b/src/file/settings.hpp index 62182b1..fb77b1e 100644 --- a/src/file/settings.hpp +++ b/src/file/settings.hpp @@ -3,8 +3,9 @@ #include <list> #include <string> -#include "settings_converter.hpp" +#include "converter/full.hpp" #include "parser/settings.hpp" +#include "managment/general.hpp" namespace smtp::file { @@ -13,19 +14,17 @@ namespace smtp::file class Settings { public: - explicit Settings( std::string const& path_file, parser::Settings const& parser, SettingsConverter const& converter ); + explicit Settings( std::string const& path_file ); ~Settings() = default; - SettingsFields Read() const; - void Write( SettingsFields const& settings_fields ) const; + manage::SettingsFields Read() const; + bool Write( manage::SettingsFields const& settings_fields ) const; private: ParsedStoreType GetParsedStore() const; - void SetParsedData() const; + bool SetParsedData( ParsedStoreType const& parsed_data ) const; + std::string BuildParam( std::pair<std::string, std::string> const& data ) const; std::string mPathFile; - parser::Settings mParser; - SettingsConverter mConverter; - }; } diff --git a/src/file/settings_converter.hpp b/src/file/settings_converter.hpp deleted file mode 100644 index 36041c3..0000000 --- a/src/file/settings_converter.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include <unordered_map> -#include <string> - -namespace smtp::file -{ - struct SettingsFields - { - bool is_need_auth; - bool is_need_ssl; - std::string username; - std::string password; - std::string host; - std::string port; - }; - - using ParsedDataType = std::unordered_map<std::string, std::string>;; - - class SettingsConverter - { - public: - SettingsConverter() = default; - ~SettingsConverter() = default; - - SettingsFields Convert( std::unordered_map<std::string, std::string> const& from ) const; - std::unordered_map<std::string, std::string> Convert( SettingsFields const& from ) const; - private: - void ApplyAuth( SettingsFields& result, ParsedDataType const& from ) const; - void ApplySsl( SettingsFields& result, ParsedDataType const& from ) const; - void ApplyBool( ParsedDataType const& from, std::string const& search_field, bool& field ) const; - - void ApplyUsername( SettingsFields& result, ParsedDataType const& from ) const; - void ApplyPassword( SettingsFields& result, ParsedDataType const& from ) const; - void ApplyHost( SettingsFields& result, ParsedDataType const& from ) const; - void ApplyPort( SettingsFields& result, ParsedDataType const& from ) const; - void ApplyString( ParsedDataType const& from, std::string const& search_field, std::string& field ) const; - }; -} - - |