summaryrefslogtreecommitdiff
path: root/src/file/settings_converter.hpp
diff options
context:
space:
mode:
authoreportnov <eportnov@ibs.ru>2022-09-13 11:13:33 +0300
committereportnov <eportnov@ibs.ru>2022-09-13 11:13:33 +0300
commitdcbaf61e4968734d9b3bc41f704ea04d54746cea (patch)
tree95a796ba075edb1abf4edea29a11544fa7344754 /src/file/settings_converter.hpp
parentdf33492b80495fd36a1a488c0b0a39753f1df415 (diff)
downloadobmc-sila-smtp-dcbaf61e4968734d9b3bc41f704ea04d54746cea.tar.xz
Diffstat (limited to 'src/file/settings_converter.hpp')
-rw-r--r--src/file/settings_converter.hpp41
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;
+ };
+}
+
+