diff options
Diffstat (limited to 'src/file/settings_converter.hpp')
-rw-r--r-- | src/file/settings_converter.hpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/file/settings_converter.hpp b/src/file/settings_converter.hpp new file mode 100644 index 0000000..36041c3 --- /dev/null +++ b/src/file/settings_converter.hpp @@ -0,0 +1,41 @@ +#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; + }; +} + + |