#pragma once #include #include 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;; class SettingsConverter { public: SettingsConverter() = default; ~SettingsConverter() = default; SettingsFields Convert( std::unordered_map const& from ) const; std::unordered_map 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; }; }