summaryrefslogtreecommitdiff
path: root/src/file
diff options
context:
space:
mode:
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.hpp30
-rw-r--r--src/file/converter/full.cpp17
-rw-r--r--src/file/converter/full.hpp25
-rw-r--r--src/file/converter/settings.cpp65
-rw-r--r--src/file/converter/settings.hpp30
-rw-r--r--src/file/mail.cpp24
-rw-r--r--src/file/mail.hpp8
-rw-r--r--src/file/settings.cpp39
-rw-r--r--src/file/settings.hpp15
-rw-r--r--src/file/settings_converter.hpp41
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;
- };
-}
-
-