summaryrefslogtreecommitdiff
path: root/src/file/settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/file/settings.cpp')
-rw-r--r--src/file/settings.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/file/settings.cpp b/src/file/settings.cpp
new file mode 100644
index 0000000..bcb2f3e
--- /dev/null
+++ b/src/file/settings.cpp
@@ -0,0 +1,50 @@
+#include <fstream>
+
+#include "settings.hpp"
+
+namespace smtp::file
+{
+ Settings::Settings( std::string const& path_file, parser::Settings const& parser, SettingsConverter const& converter)
+ : mPathFile( path_file )
+ , mParser( parser )
+ , mConverter( converter )
+ {
+
+ }
+
+ SettingsFields Settings::Read() const
+ {
+ auto parsed_store = GetParsedStore();
+ return mConverter.Convert( parsed_store );
+ }
+
+ void Settings::Write( SettingsFields const& settings_fields ) const
+ {
+ auto parsed_data = mConverter.Convert( settings_fields );
+ SetParsedData();
+ }
+
+ ParsedStoreType Settings::GetParsedStore() const
+ {
+ std::ifstream settings_file{ mPathFile };
+ if ( !settings_file.is_open() )
+ {
+ //TODO new file
+ // std::cerr << "Failed to open pcie_devices database \n";
+ }
+ std::string line{};
+ ParsedStoreType result;
+
+ while ( std::getline( settings_file, line ) )
+ {
+ auto parsed_data = mParser.Parse(line);
+ result.insert( parsed_data );
+ }
+ return result;
+ }
+
+ void Settings::SetParsedData() const
+ {
+
+ }
+}