summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclaiff <claiff@mail.ru>2022-10-06 12:26:45 +0300
committerclaiff <claiff@mail.ru>2022-10-06 12:26:45 +0300
commitda5f91a0ce15351a82beb061c3ccc965164529bc (patch)
tree1f4cd2d1e2f8cf2442d055c519d06c6e0692febc
parent8edef99a5b52643e0b919c424357752cbbc9a8dd (diff)
downloadobmc-sila-smtp-bugfix/proxy_file_reader.tar.xz
create settings on startbugfix/proxy_file_reader
-rw-r--r--CMakeLists.txt12
-rw-r--r--src/checker/errors/mail/empty.cpp7
-rw-r--r--src/checker/errors/settings/port_number.cpp2
-rw-r--r--src/checker/errors/settings/port_number.hpp2
-rw-r--r--src/checker/errors/settings/server.cpp2
-rw-r--r--src/checker/errors/settings/server.hpp2
-rw-r--r--src/checker/errors/types/isettings_error.hpp4
-rw-r--r--src/converter/file_to_string.cpp2
-rw-r--r--src/converter/file_to_string.hpp4
-rw-r--r--src/converter/file_to_struct.cpp20
-rw-r--r--src/converter/file_to_struct.hpp20
-rw-r--r--src/converter/struct_to_file.cpp16
-rw-r--r--src/converter/struct_to_file.hpp16
-rw-r--r--src/converter/struct_to_string.cpp14
-rw-r--r--src/converter/struct_to_string.hpp16
-rw-r--r--src/file/errors/not_create.cpp25
-rw-r--r--src/file/errors/not_create.hpp18
-rw-r--r--src/file/errors/registrator.cpp32
-rw-r--r--src/file/errors/registrator.hpp21
-rw-r--r--src/file/errors/types/ierror.hpp21
-rw-r--r--src/file/mail/checker_decorator.cpp8
-rw-r--r--src/file/mail/checker_decorator.hpp14
-rw-r--r--src/file/mail/file_decorator.cpp15
-rw-r--r--src/file/mail/file_decorator.hpp18
-rw-r--r--src/file/mail/sort_decorator.cpp6
-rw-r--r--src/file/mail/sort_decorator.hpp10
-rw-r--r--src/file/mail/types/ifile_manipulator.hpp6
-rw-r--r--src/file/settings/checker_decorator.cpp12
-rw-r--r--src/file/settings/checker_decorator.hpp10
-rw-r--r--src/file/settings/file_decorator.cpp13
-rw-r--r--src/file/settings/file_decorator.hpp16
-rw-r--r--src/file/settings/settings.cpp4
-rw-r--r--src/file/settings/settings.hpp12
-rw-r--r--src/file/settings/types/ifile_manipulator.hpp6
-rw-r--r--src/general/idecorator.hpp (renamed from src/message/builder/types/idecorator.hpp)2
-rw-r--r--src/general/struct.hpp (renamed from src/management/general.hpp)2
-rw-r--r--src/logger/journal.cpp11
-rw-r--r--src/logger/journal.hpp1
-rw-r--r--src/logger/logger_set.cpp12
-rw-r--r--src/logger/logger_set.hpp4
-rw-r--r--src/logger/phosphor.cpp8
-rw-r--r--src/logger/phosphor.hpp1
-rw-r--r--src/logger/types/ilogger.hpp3
-rw-r--r--src/management/builder/mail.cpp16
-rw-r--r--src/management/builder/mail.hpp4
-rw-r--r--src/management/builder/settings.cpp15
-rw-r--r--src/management/builder/settings.hpp4
-rw-r--r--src/management/mail.cpp16
-rw-r--r--src/management/mail.hpp16
-rw-r--r--src/management/settings.cpp3
-rw-r--r--src/management/settings.hpp6
-rw-r--r--src/message/builder/cc.cpp2
-rw-r--r--src/message/builder/cc.hpp10
-rw-r--r--src/message/builder/date.hpp4
-rw-r--r--src/message/builder/from.hpp4
-rw-r--r--src/message/builder/mail_to.cpp2
-rw-r--r--src/message/builder/mail_to.hpp10
-rw-r--r--src/message/builder/subject.hpp4
-rw-r--r--src/message/builder/text.hpp4
-rw-r--r--src/service/smtp.cpp6
60 files changed, 377 insertions, 199 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cba5aa3..7351684 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -97,6 +97,7 @@ set(MANAGER_BUILDER_DIR src/management/builder)
set(CONVERTER_DIR src/converter)
set(LOGGER_DIR src/logger)
set(CHECKER_DIR src/checker)
+set(GENERAL_DIR src/general)
set(SRC_FILES
${SRC_DIR}/main.cpp
@@ -120,13 +121,11 @@ set(SRC_FILES
${MESSAGE_DIR}/builder/from.hpp
${MESSAGE_DIR}/builder/from.cpp
${MESSAGE_DIR}/builder/types/imessage_builder.hpp
- ${MESSAGE_DIR}/builder/types/idecorator.hpp
${MANAGEMENT_DIR}/mail.hpp
${MANAGEMENT_DIR}/mail.cpp
${MANAGEMENT_DIR}/settings.hpp
${MANAGEMENT_DIR}/settings.cpp
- ${MANAGEMENT_DIR}/general.hpp
${FILE_DIR}/mail/file_decorator.hpp
${FILE_DIR}/mail/file_decorator.cpp
@@ -146,6 +145,12 @@ set(SRC_FILES
${FILE_DIR}/settings/checker_decorator.cpp
${FILE_DIR}/settings/types/ifile_manipulator.hpp
+ ${FILE_DIR}/errors/registrator.hpp
+ ${FILE_DIR}/errors/registrator.cpp
+ ${FILE_DIR}/errors/not_create.hpp
+ ${FILE_DIR}/errors/not_create.cpp
+ ${FILE_DIR}/errors/types/ierror.hpp
+
${CONVERTER_DIR}/struct_to_file.hpp
${CONVERTER_DIR}/struct_to_file.cpp
${CONVERTER_DIR}/file_to_struct.hpp
@@ -181,6 +186,9 @@ set(SRC_FILES
${CHECKER_DIR}/errors/types/imails_error.hpp
${CHECKER_DIR}/errors/types/isettings_error.hpp
+
+ ${GENERAL_DIR}/struct.hpp
+ ${GENERAL_DIR}/idecorator.hpp
)
if( ${ADD_PHOSPHOR_LOGGING} STREQUAL "ON")
diff --git a/src/checker/errors/mail/empty.cpp b/src/checker/errors/mail/empty.cpp
index 8a1591e..c39516e 100644
--- a/src/checker/errors/mail/empty.cpp
+++ b/src/checker/errors/mail/empty.cpp
@@ -5,11 +5,6 @@ namespace smtp::checker::errors::mail
{
bool Empty::Check( std::string const& line ) const
{
- auto result = !line.empty() && line != " ";
- if( !result )
- {
- logger::LoggerSet::GetInstance()->LogError( GetMethodName(), "Mails are empty" );
- }
- return result;
+ return !line.empty() && line != " ";
}
}
diff --git a/src/checker/errors/settings/port_number.cpp b/src/checker/errors/settings/port_number.cpp
index b0d9661..6e8b960 100644
--- a/src/checker/errors/settings/port_number.cpp
+++ b/src/checker/errors/settings/port_number.cpp
@@ -5,7 +5,7 @@
namespace smtp::checker::errors::settings
{
- bool PortNumber::Check( manage::SettingsFileDataType const& line ) const
+ bool PortNumber::Check( general::SettingsFileDataType const& line ) const
{
static const std::string PORT_FIELD = "port";
static constexpr int MIN_PORT_NUMBER = 0;
diff --git a/src/checker/errors/settings/port_number.hpp b/src/checker/errors/settings/port_number.hpp
index 789a486..a3145e9 100644
--- a/src/checker/errors/settings/port_number.hpp
+++ b/src/checker/errors/settings/port_number.hpp
@@ -10,7 +10,7 @@ namespace smtp::checker::errors::settings
PortNumber() = default;
~PortNumber() override = default;
- bool Check( manage::SettingsFileDataType const& line ) const override;
+ bool Check( general::SettingsFileDataType const& line ) const override;
};
}
diff --git a/src/checker/errors/settings/server.cpp b/src/checker/errors/settings/server.cpp
index d25bc9a..ecddf9a 100644
--- a/src/checker/errors/settings/server.cpp
+++ b/src/checker/errors/settings/server.cpp
@@ -8,7 +8,7 @@ namespace smtp::checker::errors::settings
//
//Public methods
//
- bool Server::Check( manage::SettingsFileDataType const& line ) const
+ bool Server::Check( general::SettingsFileDataType const& line ) const
{
static const std::string SERVER_FIELD = "host";
diff --git a/src/checker/errors/settings/server.hpp b/src/checker/errors/settings/server.hpp
index 53e6170..31a7758 100644
--- a/src/checker/errors/settings/server.hpp
+++ b/src/checker/errors/settings/server.hpp
@@ -10,7 +10,7 @@ namespace smtp::checker::errors::settings
Server() = default;
~Server() override = default;
- bool Check( manage::SettingsFileDataType const& line ) const override;
+ bool Check( general::SettingsFileDataType const& line ) const override;
private:
bool IsNormalName( std::string const& line ) const;
bool IsIpName( std::string const& line ) const;
diff --git a/src/checker/errors/types/isettings_error.hpp b/src/checker/errors/types/isettings_error.hpp
index 6355d79..8c9d25a 100644
--- a/src/checker/errors/types/isettings_error.hpp
+++ b/src/checker/errors/types/isettings_error.hpp
@@ -6,7 +6,7 @@
#include <memory>
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::checker::errors::types
{
@@ -21,7 +21,7 @@ namespace smtp::checker::errors::types
static const std::string METHOD_NAME = "Check settings";
return METHOD_NAME;
}
- virtual bool Check( manage::SettingsFileDataType const& line ) const = 0;
+ virtual bool Check( general::SettingsFileDataType const& line ) const = 0;
};
using IErrorSettingsPtr = std::shared_ptr<IErrorSettings>;
}
diff --git a/src/converter/file_to_string.cpp b/src/converter/file_to_string.cpp
index 3d8860e..8d136f6 100644
--- a/src/converter/file_to_string.cpp
+++ b/src/converter/file_to_string.cpp
@@ -3,7 +3,7 @@
namespace smtp::converter
{
- std::list<std::string> FileToString::Convert( manage::SettingsFileDataType const& from) const
+ std::list<std::string> FileToString::Convert( general::SettingsFileDataType const& from) const
{
std::list<std::string> result;
for(auto const& settings_line : from)
diff --git a/src/converter/file_to_string.hpp b/src/converter/file_to_string.hpp
index 14e1633..9b7b357 100644
--- a/src/converter/file_to_string.hpp
+++ b/src/converter/file_to_string.hpp
@@ -1,6 +1,6 @@
#pragma once
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::converter
{
@@ -10,7 +10,7 @@ namespace smtp::converter
FileToString() = default;
~FileToString() = default;
- std::list<std::string> Convert( manage::SettingsFileDataType const& from ) const;
+ std::list<std::string> Convert( general::SettingsFileDataType const& from ) const;
private:
std::string BuildParam( std::pair < std::string, std::string > const& data ) const;
};
diff --git a/src/converter/file_to_struct.cpp b/src/converter/file_to_struct.cpp
index 4c4bec8..4cb588c 100644
--- a/src/converter/file_to_struct.cpp
+++ b/src/converter/file_to_struct.cpp
@@ -2,9 +2,9 @@
namespace smtp::converter
{
- manage::SettingsFields FileToStruct::Convert( manage::SettingsFileDataType const& from ) const
+ general::SettingsFields FileToStruct::Convert( general::SettingsFileDataType const& from ) const
{
- manage::SettingsFields result;
+ general::SettingsFields result;
ApplyAuth( result, from );
ApplySsl( result, from );
@@ -16,21 +16,21 @@ namespace smtp::converter
return result;
}
- void FileToStruct::ApplyAuth( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const
+ void FileToStruct::ApplyAuth( general::SettingsFields &result, general::SettingsFileDataType const& from ) const
{
static const std::string FIELD = "is_need_auth";
ApplyBool(from, FIELD, result.is_need_auth);
}
- void FileToStruct::ApplySsl( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const
+ void FileToStruct::ApplySsl( general::SettingsFields &result, general::SettingsFileDataType const& from ) const
{
static const std::string FIELD = "is_need_ssl";
ApplyBool(from, FIELD, result.is_need_ssl);
}
- void FileToStruct::ApplyBool( manage::SettingsFileDataType const& from, std::string const& search_field, bool& field ) const
+ void FileToStruct::ApplyBool( general::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";
@@ -47,35 +47,35 @@ namespace smtp::converter
field = (find->second == TRUE_AS_STRING);
}
- void FileToStruct::ApplyUsername( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const
+ void FileToStruct::ApplyUsername( general::SettingsFields &result, general::SettingsFileDataType const& from ) const
{
static const std::string FIELD = "username";
ApplyString( from, FIELD, result.username );
}
- void FileToStruct::ApplyPassword( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const
+ void FileToStruct::ApplyPassword( general::SettingsFields &result, general::SettingsFileDataType const& from ) const
{
static const std::string FIELD = "password";
ApplyString( from, FIELD, result.password );
}
- void FileToStruct::ApplyHost( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const
+ void FileToStruct::ApplyHost( general::SettingsFields &result, general::SettingsFileDataType const& from ) const
{
static const std::string FIELD = "host";
ApplyString( from, FIELD, result.host );
}
- void FileToStruct::ApplyPort( manage::SettingsFields &result, manage::SettingsFileDataType const& from ) const
+ void FileToStruct::ApplyPort( general::SettingsFields &result, general::SettingsFileDataType const& from ) const
{
static const std::string FIELD = "port";
ApplyString(from, FIELD, result.port);
}
- void FileToStruct::ApplyString( manage::SettingsFileDataType const& from, std::string const& search_field, std::string& field ) const
+ void FileToStruct::ApplyString( general::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/converter/file_to_struct.hpp b/src/converter/file_to_struct.hpp
index 1eb7fce..4375ce2 100644
--- a/src/converter/file_to_struct.hpp
+++ b/src/converter/file_to_struct.hpp
@@ -3,7 +3,7 @@
#include <unordered_map>
#include <string>
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::converter
{
@@ -13,17 +13,17 @@ namespace smtp::converter
FileToStruct() = default;
~FileToStruct() = default;
- manage::SettingsFields Convert( manage::SettingsFileDataType const& from ) const;
+ general::SettingsFields Convert( general::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 ApplyAuth( general::SettingsFields& result, general::SettingsFileDataType const& from ) const;
+ void ApplySsl( general::SettingsFields& result, general::SettingsFileDataType const& from ) const;
+ void ApplyBool( general::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;
+ void ApplyUsername( general::SettingsFields& result, general::SettingsFileDataType const& from ) const;
+ void ApplyPassword( general::SettingsFields& result, general::SettingsFileDataType const& from ) const;
+ void ApplyHost( general::SettingsFields& result, general::SettingsFileDataType const& from ) const;
+ void ApplyPort( general::SettingsFields& result, general::SettingsFileDataType const& from ) const;
+ void ApplyString( general::SettingsFileDataType const& from, std::string const& search_field, std::string& field ) const;
};
}
diff --git a/src/converter/struct_to_file.cpp b/src/converter/struct_to_file.cpp
index f21cffb..6e28ead 100644
--- a/src/converter/struct_to_file.cpp
+++ b/src/converter/struct_to_file.cpp
@@ -3,9 +3,9 @@
namespace smtp::converter
{
- manage::SettingsFileDataType StructToFile::Convert( manage::SettingsFields const& from ) const
+ general::SettingsFileDataType StructToFile::Convert( general::SettingsFields const& from ) const
{
- manage::SettingsFileDataType result;
+ general::SettingsFileDataType result;
ApplyPort( from, result );
ApplyHost( from, result );
@@ -17,7 +17,7 @@ namespace smtp::converter
return result;
}
- void StructToFile::ApplyAuth( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const
+ void StructToFile::ApplyAuth( general::SettingsFields const& from, general::SettingsFileDataType& result ) const
{
static const std::string FIELD = "is_need_auth";
static const std::string TRUE_AS_STRING = "true";
@@ -26,7 +26,7 @@ namespace smtp::converter
from.is_need_auth ? result.insert({FIELD, TRUE_AS_STRING}) : result.insert({FIELD, FALSE_AS_STRING});
}
- void StructToFile::ApplySsl( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const
+ void StructToFile::ApplySsl( general::SettingsFields const& from, general::SettingsFileDataType& result ) const
{
static const std::string FIELD = "is_need_ssl";
static const std::string TRUE_AS_STRING = "true";
@@ -35,28 +35,28 @@ namespace smtp::converter
from.is_need_ssl ? result.insert({FIELD, TRUE_AS_STRING}) : result.insert({FIELD, FALSE_AS_STRING});
}
- void StructToFile::ApplyUsername( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const
+ void StructToFile::ApplyUsername( general::SettingsFields const& from, general::SettingsFileDataType& result ) const
{
static const std::string FIELD = "username";
result.insert({FIELD, from.username});
}
- void StructToFile::ApplyPassword( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const
+ void StructToFile::ApplyPassword( general::SettingsFields const& from, general::SettingsFileDataType& result ) const
{
static const std::string FIELD = "password";
result.insert({FIELD, from.password});
}
- void StructToFile::ApplyHost( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const
+ void StructToFile::ApplyHost( general::SettingsFields const& from, general::SettingsFileDataType& result ) const
{
static const std::string FIELD = "host";
result.insert({FIELD, from.host});
}
- void StructToFile::ApplyPort( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const
+ void StructToFile::ApplyPort( general::SettingsFields const& from, general::SettingsFileDataType& result ) const
{
static const std::string FIELD = "port";
diff --git a/src/converter/struct_to_file.hpp b/src/converter/struct_to_file.hpp
index 67a9f96..641e693 100644
--- a/src/converter/struct_to_file.hpp
+++ b/src/converter/struct_to_file.hpp
@@ -1,6 +1,6 @@
#pragma once
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::converter
{
@@ -10,15 +10,15 @@ namespace smtp::converter
StructToFile() = default;
~StructToFile() = default;
- manage::SettingsFileDataType Convert( manage::SettingsFields const& from ) const;
+ general::SettingsFileDataType Convert( general::SettingsFields const& from ) const;
private:
- void ApplyAuth( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const;
- void ApplySsl( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const;
+ void ApplyAuth( general::SettingsFields const& from, general::SettingsFileDataType& result ) const;
+ void ApplySsl( general::SettingsFields const& from, general::SettingsFileDataType& result ) const;
- void ApplyUsername( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const;
- void ApplyPassword( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const;
- void ApplyHost( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const;
- void ApplyPort( manage::SettingsFields const& from, manage::SettingsFileDataType& result ) const;
+ void ApplyUsername( general::SettingsFields const& from, general::SettingsFileDataType& result ) const;
+ void ApplyPassword( general::SettingsFields const& from, general::SettingsFileDataType& result ) const;
+ void ApplyHost( general::SettingsFields const& from, general::SettingsFileDataType& result ) const;
+ void ApplyPort( general::SettingsFields const& from, general::SettingsFileDataType& result ) const;
};
}
diff --git a/src/converter/struct_to_string.cpp b/src/converter/struct_to_string.cpp
index c86a6c8..ea3df67 100644
--- a/src/converter/struct_to_string.cpp
+++ b/src/converter/struct_to_string.cpp
@@ -2,7 +2,7 @@
namespace smtp::converter
{
- std::string StructToString::Convert( manage::SettingsFields const& from ) const
+ std::string StructToString::Convert( general::SettingsFields const& from ) const
{
std::string result;
@@ -16,42 +16,42 @@ namespace smtp::converter
return result;
}
- void StructToString::ApplyAuth( manage::SettingsFields const& from, std::string& result ) const
+ void StructToString::ApplyAuth( general::SettingsFields const& from, std::string& result ) const
{
static const std::string FIELD = "is_need_auth";
result += GetBoolParam( FIELD, from.is_need_auth);
}
- void StructToString::ApplySsl( manage::SettingsFields const& from, std::string& result ) const
+ void StructToString::ApplySsl( general::SettingsFields const& from, std::string& result ) const
{
static const std::string FIELD = "is_need_ssl";
result += GetBoolParam( FIELD, from.is_need_ssl);
}
- void StructToString::ApplyUsername( manage::SettingsFields const& from, std::string& result ) const
+ void StructToString::ApplyUsername( general::SettingsFields const& from, std::string& result ) const
{
static const std::string FIELD = "username";
result += GetStringParam( FIELD, from.username );
}
- void StructToString::ApplyPassword( manage::SettingsFields const& from, std::string& result ) const
+ void StructToString::ApplyPassword( general::SettingsFields const& from, std::string& result ) const
{
static const std::string FIELD = "password";
result += GetStringParam( FIELD, from.password );
}
- void StructToString::ApplyHost( manage::SettingsFields const& from, std::string& result ) const
+ void StructToString::ApplyHost( general::SettingsFields const& from, std::string& result ) const
{
static const std::string FIELD = "host";
result += GetStringParam( FIELD, from.host );
}
- void StructToString::ApplyPort( manage::SettingsFields const& from, std::string& result ) const
+ void StructToString::ApplyPort( general::SettingsFields const& from, std::string& result ) const
{
static const std::string FIELD = "port";
diff --git a/src/converter/struct_to_string.hpp b/src/converter/struct_to_string.hpp
index 0a08327..9d6b418 100644
--- a/src/converter/struct_to_string.hpp
+++ b/src/converter/struct_to_string.hpp
@@ -3,7 +3,7 @@
#include <unordered_map>
#include <string>
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::converter
{
@@ -13,15 +13,15 @@ namespace smtp::converter
StructToString() = default;
~StructToString() = default;
- std::string Convert( manage::SettingsFields const& from ) const;
+ std::string Convert( general::SettingsFields const& from ) const;
private:
- void ApplyAuth( manage::SettingsFields const& from, std::string& result ) const;
- void ApplySsl( manage::SettingsFields const& from, std::string& result ) const;
+ void ApplyAuth( general::SettingsFields const& from, std::string& result ) const;
+ void ApplySsl( general::SettingsFields const& from, std::string& result ) const;
- void ApplyUsername( manage::SettingsFields const& from, std::string& result ) const;
- void ApplyPassword( manage::SettingsFields const& from, std::string& result ) const;
- void ApplyHost( manage::SettingsFields const& from, std::string& result ) const;
- void ApplyPort( manage::SettingsFields const& from, std::string& result ) const;
+ void ApplyUsername( general::SettingsFields const& from, std::string& result ) const;
+ void ApplyPassword( general::SettingsFields const& from, std::string& result ) const;
+ void ApplyHost( general::SettingsFields const& from, std::string& result ) const;
+ void ApplyPort( general::SettingsFields const& from, std::string& result ) const;
std::string GetStringParam( std::string const& field, std::string const& param ) const;
std::string GetBoolParam( std::string const& field, bool param ) const;
diff --git a/src/file/errors/not_create.cpp b/src/file/errors/not_create.cpp
new file mode 100644
index 0000000..54995ae
--- /dev/null
+++ b/src/file/errors/not_create.cpp
@@ -0,0 +1,25 @@
+#include <fstream>
+
+#include "not_create.hpp"
+#include "converter/struct_to_file.hpp"
+#include "converter/file_to_string.hpp"
+#include "logger/logger_set.hpp"
+
+namespace smtp::file::errors
+{
+ NotCreatedFile::NotCreatedFile( std::string const& path )
+ : mPath( path )
+ {
+
+ }
+
+ void NotCreatedFile::Process( types::SettingsType settings_type ) const
+ {
+ std::fstream file( mPath,std::fstream::out );
+ file.close();
+ settings_type == types::SettingsType::Server ?
+ logger::LoggerSet::GetInstance()->LogOk("Created new settings for server"):
+ logger::LoggerSet::GetInstance()->LogOk("Created new settings for recipients");
+ }
+
+}
diff --git a/src/file/errors/not_create.hpp b/src/file/errors/not_create.hpp
new file mode 100644
index 0000000..05046de
--- /dev/null
+++ b/src/file/errors/not_create.hpp
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "types/ierror.hpp"
+#include "general/struct.hpp"
+
+namespace smtp::file::errors
+{
+ class NotCreatedFile : public types::IError
+ {
+ public:
+ explicit NotCreatedFile( std::string const& path );
+ ~NotCreatedFile() override = default;
+
+ void Process( types::SettingsType settings_type ) const override;
+ private:
+ std::string mPath;
+ };
+}
diff --git a/src/file/errors/registrator.cpp b/src/file/errors/registrator.cpp
new file mode 100644
index 0000000..9389179
--- /dev/null
+++ b/src/file/errors/registrator.cpp
@@ -0,0 +1,32 @@
+#include <cerrno>
+
+#include "registrator.hpp"
+#include "logger/logger_set.hpp"
+
+namespace smtp::file::errors
+{
+
+ void Registrator::Add( types::IErrorPtr const& error, int error_code )
+ {
+ mErrorSet.insert( {error_code, error} );
+ }
+
+ void Registrator::Process( types::SettingsType settings_type ) const
+ {
+ auto find = mErrorSet.find(errno);
+ if( find == mErrorSet.end() )
+ {
+ DefaultProcess(errno);
+ }
+ find->second->Process( settings_type );
+ }
+
+ void Registrator::DefaultProcess(int error_code) const
+ {
+ static const std::string METHOD = "Open file";
+
+ std::string message = "Unknown error - " + std::to_string(error_code);
+ logger::LoggerSet::GetInstance()->LogError( METHOD, message );
+ }
+
+}
diff --git a/src/file/errors/registrator.hpp b/src/file/errors/registrator.hpp
new file mode 100644
index 0000000..381db2f
--- /dev/null
+++ b/src/file/errors/registrator.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <map>
+
+#include "types/ierror.hpp"
+
+namespace smtp::file::errors
+{
+ class Registrator
+ {
+ public:
+ Registrator() = default;
+ ~Registrator() = default;
+
+ void Add( types::IErrorPtr const& error, int error_code );
+ void Process( types::SettingsType settings_type ) const;
+ private:
+ void DefaultProcess( int error_code ) const;
+ std::map< int, types::IErrorPtr > mErrorSet;
+ };
+}
diff --git a/src/file/errors/types/ierror.hpp b/src/file/errors/types/ierror.hpp
new file mode 100644
index 0000000..6a47ddb
--- /dev/null
+++ b/src/file/errors/types/ierror.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <memory>
+
+namespace smtp::file::errors::types
+{
+ enum class SettingsType
+ {
+ Server,
+ Mail
+ };
+
+ class IError
+ {
+ public:
+ virtual ~IError() = default;
+
+ virtual void Process( SettingsType settings_type ) const = 0;
+ };
+ using IErrorPtr = std::shared_ptr<IError>;
+}
diff --git a/src/file/mail/checker_decorator.cpp b/src/file/mail/checker_decorator.cpp
index 54da9da..3539bc7 100644
--- a/src/file/mail/checker_decorator.cpp
+++ b/src/file/mail/checker_decorator.cpp
@@ -17,9 +17,9 @@ namespace smtp::file::mail
//Public methods
//
- manage::MailsSet CheckerDecorator::Read() const
+ general::MailsSet CheckerDecorator::Read() const
{
- manage::MailsSet result;
+ general::MailsSet result;
if( !mBase )
{
@@ -38,9 +38,9 @@ namespace smtp::file::mail
return result;
}
- bool CheckerDecorator::Write( manage::MailsSet const& data ) const
+ bool CheckerDecorator::Write( general::MailsSet const& data ) const
{
- manage::MailsSet result;
+ general::MailsSet result;
for( const auto& line : data )
{
diff --git a/src/file/mail/checker_decorator.hpp b/src/file/mail/checker_decorator.hpp
index ed87fc5..612c07a 100644
--- a/src/file/mail/checker_decorator.hpp
+++ b/src/file/mail/checker_decorator.hpp
@@ -1,23 +1,23 @@
#pragma once
-#include "management/general.hpp"
+#include "general/struct.hpp"
#include "checker/registrator_mails.hpp"
-#include "message/builder/types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/ifile_manipulator.hpp"
namespace smtp::file::mail
{
- class CheckerDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator>
+ class CheckerDecorator : public general::IDecorator< types::IFileManipulator>
{
public:
explicit CheckerDecorator( checker::RegistratorMails const& registrator_errors );
~CheckerDecorator() override = default;
- manage::MailsSet Read() const override;
- bool Write( manage::MailsSet const& data ) const override;
+ general::MailsSet Read() const override;
+ bool Write( general::MailsSet const& data ) const override;
private:
- manage::MailsSet ReadFile( std::ifstream& mail_file ) const;
- bool WriteFile( std::ofstream& mail_file, manage::MailsSet const& data ) const;
+ general::MailsSet ReadFile( std::ifstream& mail_file ) const;
+ bool WriteFile( std::ofstream& mail_file, general::MailsSet const& data ) const;
checker::RegistratorMails mRegistratorErrors;
};
diff --git a/src/file/mail/file_decorator.cpp b/src/file/mail/file_decorator.cpp
index 82111ac..76da5a8 100644
--- a/src/file/mail/file_decorator.cpp
+++ b/src/file/mail/file_decorator.cpp
@@ -10,8 +10,9 @@ namespace smtp::file::mail
//Constructors
//
- FileDecorator::FileDecorator( std::string const& path_file )
+ FileDecorator::FileDecorator( std::string const& path_file, file::errors::Registrator const& registrator_file_errors )
: mPathFile( path_file )
+ , mRegistratorFileErrors( registrator_file_errors )
{
}
@@ -19,14 +20,14 @@ namespace smtp::file::mail
//Public methods
//
- manage::MailsSet FileDecorator::Read() const
+ general::MailsSet FileDecorator::Read() const
{
static const std::string METHOD_NAME = "Read mails";
std::ifstream mail_file{ mPathFile, std::fstream::in };
if ( !mail_file.is_open() )
{
- logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to read " + mPathFile );
+ mRegistratorFileErrors.Process( errors::types::SettingsType::Mail );
return {};
}
@@ -36,7 +37,7 @@ namespace smtp::file::mail
return result;
}
- bool FileDecorator::Write( manage::MailsSet const& data ) const
+ bool FileDecorator::Write( general::MailsSet const& data ) const
{
static const std::string METHOD_NAME = "Write mails";
@@ -59,10 +60,10 @@ namespace smtp::file::mail
//Private methods
//
- manage::MailsSet FileDecorator::ReadFile( std::ifstream& mail_file ) const
+ general::MailsSet FileDecorator::ReadFile( std::ifstream& mail_file ) const
{
std::string line{};
- manage::MailsSet result;
+ general::MailsSet result;
while ( std::getline( mail_file, line ) )
{
@@ -71,7 +72,7 @@ namespace smtp::file::mail
return result;
}
- bool FileDecorator::WriteFile( std::ofstream& mail_file, manage::MailsSet const& data ) const
+ bool FileDecorator::WriteFile( std::ofstream& mail_file, general::MailsSet const& data ) const
{
bool result = true;
diff --git a/src/file/mail/file_decorator.hpp b/src/file/mail/file_decorator.hpp
index 21dab10..a1767e6 100644
--- a/src/file/mail/file_decorator.hpp
+++ b/src/file/mail/file_decorator.hpp
@@ -1,24 +1,26 @@
#pragma once
-#include "management/general.hpp"
-#include "message/builder/types/idecorator.hpp"
+#include "general/struct.hpp"
+#include "general/idecorator.hpp"
#include "types/ifile_manipulator.hpp"
+#include "file/errors/registrator.hpp"
namespace smtp::file::mail
{
- class FileDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator>
+ class FileDecorator : public general::IDecorator< types::IFileManipulator>
{
public:
- explicit FileDecorator( std::string const& path_file );
+ explicit FileDecorator( std::string const& path_file, file::errors::Registrator const& registrator_file_errors );
~FileDecorator() override = default;
- manage::MailsSet Read() const override;
- bool Write( manage::MailsSet const& data ) const override;
+ general::MailsSet Read() const override;
+ bool Write( general::MailsSet const& data ) const override;
private:
- manage::MailsSet ReadFile( std::ifstream& mail_file ) const;
- bool WriteFile( std::ofstream& mail_file, manage::MailsSet const& data ) const;
+ general::MailsSet ReadFile( std::ifstream& mail_file ) const;
+ bool WriteFile( std::ofstream& mail_file, general::MailsSet const& data ) const;
std::string mPathFile;
+ file::errors::Registrator mRegistratorFileErrors;
};
}
diff --git a/src/file/mail/sort_decorator.cpp b/src/file/mail/sort_decorator.cpp
index dca464f..ebfde97 100644
--- a/src/file/mail/sort_decorator.cpp
+++ b/src/file/mail/sort_decorator.cpp
@@ -7,9 +7,9 @@ namespace smtp::file::mail
//Public methods
//
- manage::MailsSet SortDecorator::Read() const
+ general::MailsSet SortDecorator::Read() const
{
- manage::MailsSet result;
+ general::MailsSet result;
if(!mBase)
{
@@ -22,7 +22,7 @@ namespace smtp::file::mail
return result;
}
- bool SortDecorator::Write( manage::MailsSet const& data ) const
+ bool SortDecorator::Write( general::MailsSet const& data ) const
{
if( mBase )
{
diff --git a/src/file/mail/sort_decorator.hpp b/src/file/mail/sort_decorator.hpp
index 80edf1d..142159b 100644
--- a/src/file/mail/sort_decorator.hpp
+++ b/src/file/mail/sort_decorator.hpp
@@ -1,19 +1,19 @@
#pragma once
-#include "management/general.hpp"
-#include "message/builder/types/idecorator.hpp"
+#include "general/struct.hpp"
+#include "general/idecorator.hpp"
#include "types/ifile_manipulator.hpp"
namespace smtp::file::mail
{
- class SortDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator>
+ class SortDecorator : public general::IDecorator< types::IFileManipulator>
{
public:
SortDecorator() = default;
~SortDecorator() = default;
- manage::MailsSet Read() const;
- bool Write( manage::MailsSet const& data ) const;
+ general::MailsSet Read() const;
+ bool Write( general::MailsSet const& data ) const;
};
}
diff --git a/src/file/mail/types/ifile_manipulator.hpp b/src/file/mail/types/ifile_manipulator.hpp
index 62965e7..0841c16 100644
--- a/src/file/mail/types/ifile_manipulator.hpp
+++ b/src/file/mail/types/ifile_manipulator.hpp
@@ -2,7 +2,7 @@
#include <memory>
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::file::mail::types
{
@@ -11,8 +11,8 @@ namespace smtp::file::mail::types
public:
virtual ~IFileManipulator() = default;
- virtual manage::MailsSet Read() const = 0;
- virtual bool Write( manage::MailsSet const& data ) const = 0;
+ virtual general::MailsSet Read() const = 0;
+ virtual bool Write( general::MailsSet const& data ) const = 0;
};
using IFileManipulatorPtr = std::shared_ptr<IFileManipulator>;
}
diff --git a/src/file/settings/checker_decorator.cpp b/src/file/settings/checker_decorator.cpp
index ef560ad..a7ccda1 100644
--- a/src/file/settings/checker_decorator.cpp
+++ b/src/file/settings/checker_decorator.cpp
@@ -16,18 +16,22 @@ namespace smtp::file::settings
//Public methods
//
- manage::SettingsFileDataType CheckerDecorator::Read() const
+ general::SettingsFileDataType CheckerDecorator::Read() const
{
- manage::SettingsFileDataType result;
+ general::SettingsFileDataType result;
if(!mBase)
{
return result;
}
result = mBase->Read();
- return mRegistratorErrors.Check( result ) ? result : manage::SettingsFileDataType{};
+ if(result.empty())
+ {
+ return result;
+ }
+ return mRegistratorErrors.Check( result ) ? result : general::SettingsFileDataType{};
}
- bool CheckerDecorator::Write( manage::SettingsFileDataType const& settings_fields ) const
+ bool CheckerDecorator::Write( general::SettingsFileDataType const& settings_fields ) const
{
if( !mBase )
{
diff --git a/src/file/settings/checker_decorator.hpp b/src/file/settings/checker_decorator.hpp
index ecaba5a..c596fb6 100644
--- a/src/file/settings/checker_decorator.hpp
+++ b/src/file/settings/checker_decorator.hpp
@@ -1,20 +1,20 @@
#pragma once
-#include "management/general.hpp"
+#include "general/struct.hpp"
#include "checker/registrator_settings.hpp"
#include "types/ifile_manipulator.hpp"
-#include "message/builder/types/idecorator.hpp"
+#include "general/idecorator.hpp"
namespace smtp::file::settings
{
- class CheckerDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator>
+ class CheckerDecorator : public general::IDecorator< types::IFileManipulator>
{
public:
explicit CheckerDecorator( checker::RegistratorSettings const& registrator_errors );
~CheckerDecorator() = default;
- manage::SettingsFileDataType Read() const override;
- bool Write( manage::SettingsFileDataType const& data ) const override;
+ general::SettingsFileDataType Read() const override;
+ bool Write( general::SettingsFileDataType const& data ) const override;
private:
checker::RegistratorSettings mRegistratorErrors;
};
diff --git a/src/file/settings/file_decorator.cpp b/src/file/settings/file_decorator.cpp
index 38b42ce..1b05f72 100644
--- a/src/file/settings/file_decorator.cpp
+++ b/src/file/settings/file_decorator.cpp
@@ -12,8 +12,9 @@ namespace smtp::file::settings
//Constructors
//
- FileDecorator::FileDecorator( std::string const& path_file )
+ FileDecorator::FileDecorator( std::string const& path_file, errors::Registrator const& registrator_errors )
: mPathFile( path_file )
+ , mRegistratorErrors( registrator_errors )
{
}
@@ -22,14 +23,14 @@ namespace smtp::file::settings
//Public methods
//
- manage::SettingsFileDataType FileDecorator::Read() const
+ general::SettingsFileDataType FileDecorator::Read() const
{
static const std::string METHOD_NAME = "Read settings";
std::ifstream settings_file{mPathFile, std::fstream::in};
if( !settings_file.is_open() )
{
- logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to read " + mPathFile );
+ mRegistratorErrors.Process( errors::types::SettingsType::Server );
return {};
}
auto result = GetDataFromFile( settings_file );
@@ -38,7 +39,7 @@ namespace smtp::file::settings
return result;
}
- bool FileDecorator::Write( manage::SettingsFileDataType const& data ) const
+ bool FileDecorator::Write( general::SettingsFileDataType const& data ) const
{
static const std::string METHOD_NAME = "Write settings";
@@ -61,10 +62,10 @@ namespace smtp::file::settings
//Private methods
//
- manage::SettingsFileDataType FileDecorator::GetDataFromFile( std::ifstream& settings_file ) const
+ general::SettingsFileDataType FileDecorator::GetDataFromFile( std::ifstream& settings_file ) const
{
std::string line{};
- manage::SettingsFileDataType result;
+ general::SettingsFileDataType result;
parser::Settings parser;
while( std::getline( settings_file, line ))
diff --git a/src/file/settings/file_decorator.hpp b/src/file/settings/file_decorator.hpp
index 5896aed..93c8c20 100644
--- a/src/file/settings/file_decorator.hpp
+++ b/src/file/settings/file_decorator.hpp
@@ -1,22 +1,24 @@
#pragma once
-#include "management/general.hpp"
+#include "general/struct.hpp"
#include "types/ifile_manipulator.hpp"
-#include "message/builder/types/idecorator.hpp"
+#include "general/idecorator.hpp"
+#include "file/errors/registrator.hpp"
namespace smtp::file::settings
{
- class FileDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator>
+ class FileDecorator : public general::IDecorator< types::IFileManipulator>
{
public:
- explicit FileDecorator( std::string const& path_file );
+ explicit FileDecorator( std::string const& path_file, errors::Registrator const& registrator_errors );
~FileDecorator() = default;
- manage::SettingsFileDataType Read() const override;
- bool Write( manage::SettingsFileDataType const& data ) const override;
+ general::SettingsFileDataType Read() const override;
+ bool Write( general::SettingsFileDataType const& data ) const override;
private:
- manage::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const;
+ general::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const;
std::string mPathFile;
+ errors::Registrator mRegistratorErrors;
};
}
diff --git a/src/file/settings/settings.cpp b/src/file/settings/settings.cpp
index 48232e6..0815f11 100644
--- a/src/file/settings/settings.cpp
+++ b/src/file/settings/settings.cpp
@@ -17,13 +17,13 @@ namespace smtp::file::settings
//Public methods
//
- manage::SettingsFields Settings::Read() const
+ general::SettingsFields Settings::Read() const
{
auto parsed_store = mFileManipulator->Read();
return converter::FileToStruct{}.Convert( parsed_store );
}
- bool Settings::Write( manage::SettingsFields const& settings_fields ) const
+ bool Settings::Write( general::SettingsFields const& settings_fields ) const
{
auto parsed_data = converter::StructToFile{}.Convert( settings_fields );
return mFileManipulator->Write( parsed_data );
diff --git a/src/file/settings/settings.hpp b/src/file/settings/settings.hpp
index 60634fe..9e05f24 100644
--- a/src/file/settings/settings.hpp
+++ b/src/file/settings/settings.hpp
@@ -1,6 +1,6 @@
#pragma once
-#include "management/general.hpp"
+#include "general/struct.hpp"
#include "types/ifile_manipulator.hpp"
namespace smtp::file::settings
@@ -11,12 +11,12 @@ namespace smtp::file::settings
explicit Settings( types::IFileManipulatorPtr const& file_manipulator );
~Settings() = default;
- manage::SettingsFields Read() const;
- bool Write( manage::SettingsFields const& settings_fields ) const;
+ general::SettingsFields Read() const;
+ bool Write( general::SettingsFields const& settings_fields ) const;
private:
- manage::SettingsFileDataType GetParsedStore() const;
- manage::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const;
- bool SetParsedData( manage::SettingsFileDataType const& parsed_data ) const;
+ general::SettingsFileDataType GetParsedStore() const;
+ general::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const;
+ bool SetParsedData( general::SettingsFileDataType const& parsed_data ) const;
std::string BuildParam( std::pair < std::string, std::string > const& data ) const;
std::string mPathFile;
diff --git a/src/file/settings/types/ifile_manipulator.hpp b/src/file/settings/types/ifile_manipulator.hpp
index 6de0bf3..312aece 100644
--- a/src/file/settings/types/ifile_manipulator.hpp
+++ b/src/file/settings/types/ifile_manipulator.hpp
@@ -2,7 +2,7 @@
#include <memory>
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::file::settings::types
{
@@ -11,8 +11,8 @@ namespace smtp::file::settings::types
public:
virtual ~IFileManipulator() = default;
- virtual manage::SettingsFileDataType Read() const = 0;
- virtual bool Write( manage::SettingsFileDataType const& data ) const = 0;
+ virtual general::SettingsFileDataType Read() const = 0;
+ virtual bool Write( general::SettingsFileDataType const& data ) const = 0;
};
using IFileManipulatorPtr = std::shared_ptr<IFileManipulator>;
}
diff --git a/src/message/builder/types/idecorator.hpp b/src/general/idecorator.hpp
index 19284ac..53efda5 100644
--- a/src/message/builder/types/idecorator.hpp
+++ b/src/general/idecorator.hpp
@@ -2,7 +2,7 @@
#include <memory>
-namespace smtp::message::builder::types
+namespace smtp::general
{
/**
diff --git a/src/management/general.hpp b/src/general/struct.hpp
index ed1a789..db61e68 100644
--- a/src/management/general.hpp
+++ b/src/general/struct.hpp
@@ -4,7 +4,7 @@
#include <string>
#include <list>
-namespace smtp::manage
+namespace smtp::general
{
using SettingsFileDataType = std::unordered_map<std::string, std::string>;
using MailsSet = std::list<std::string>;
diff --git a/src/logger/journal.cpp b/src/logger/journal.cpp
index ba002b0..5e4f36d 100644
--- a/src/logger/journal.cpp
+++ b/src/logger/journal.cpp
@@ -6,6 +6,11 @@ namespace smtp::logger
{
void Journal::LogError( std::string const& method, std::string const& message ) const
{
- std::cout << message << std::endl;
- }
-} \ No newline at end of file
+ std::cout << "Error in method: " + method + " with message " + message << std::endl;
+ }
+
+ void Journal::LogOk( std::string const& message ) const
+ {
+ std::cout << message << std::endl;
+ }
+}
diff --git a/src/logger/journal.hpp b/src/logger/journal.hpp
index 0f1e6bb..f28fbeb 100644
--- a/src/logger/journal.hpp
+++ b/src/logger/journal.hpp
@@ -12,6 +12,7 @@ namespace smtp::logger
~Journal() override = default;
void LogError( std::string const& method, std::string const& message ) const override;
+ void LogOk( std::string const& message ) const override;
};
}
diff --git a/src/logger/logger_set.cpp b/src/logger/logger_set.cpp
index d5d45a0..e46b6cc 100644
--- a/src/logger/logger_set.cpp
+++ b/src/logger/logger_set.cpp
@@ -38,8 +38,16 @@ namespace smtp::logger
for( const auto& logger: mLogger )
{
logger->LogError( method, message );
- }
- }
+ }
+ }
+
+ void LoggerSet::LogOk( std::string const& message )
+ {
+ for( const auto& logger: mLogger )
+ {
+ logger->LogOk( message );
+ }
+ }
}
diff --git a/src/logger/logger_set.hpp b/src/logger/logger_set.hpp
index e482042..c60779b 100644
--- a/src/logger/logger_set.hpp
+++ b/src/logger/logger_set.hpp
@@ -19,7 +19,9 @@ namespace smtp::logger
LoggerSet( const LoggerSet& ) = delete;
LoggerSet& operator=( LoggerSet& ) = delete;
+ static std::shared_ptr < LoggerSet > GetInstance();
+
void LogError( std::string const& method, std::string const& message );
- static std::shared_ptr < LoggerSet > GetInstance();
+ void LogOk( std::string const& message );
};
}
diff --git a/src/logger/phosphor.cpp b/src/logger/phosphor.cpp
index f3575c4..a5ebe04 100644
--- a/src/logger/phosphor.cpp
+++ b/src/logger/phosphor.cpp
@@ -10,4 +10,10 @@ namespace smtp::logger
const auto* msg = "OpenBMC.0.1.SMTPError";
lg2::error("SMTP error", "REDFISH_MESSAGE_ID", msg, "REDFISH_MESSAGE_ARGS", join_message);
}
-} \ No newline at end of file
+
+ void Phosphor::LogOk( std::string const& message ) const
+ {
+ const auto* msg = "OpenBMC.0.1.SMTPOk";
+ lg2::error("SMTP event", "REDFISH_MESSAGE_ID", msg, "REDFISH_MESSAGE_ARGS", message);
+ }
+}
diff --git a/src/logger/phosphor.hpp b/src/logger/phosphor.hpp
index f40ddf2..fdbce0c 100644
--- a/src/logger/phosphor.hpp
+++ b/src/logger/phosphor.hpp
@@ -12,5 +12,6 @@ namespace smtp::logger
~Phosphor() override = default;
void LogError( std::string const& method, std::string const& message ) const override;
+ void LogOk( std::string const& message ) const override;
};
}
diff --git a/src/logger/types/ilogger.hpp b/src/logger/types/ilogger.hpp
index 5dce1d5..7f2a5e5 100644
--- a/src/logger/types/ilogger.hpp
+++ b/src/logger/types/ilogger.hpp
@@ -10,7 +10,8 @@ namespace smtp::logger::types
virtual ~ILogger() = default;
virtual void LogError( std::string const& method, std::string const& message ) const = 0;
+ virtual void LogOk( std::string const& message ) const = 0;
};
using ILoggerPtr = std::shared_ptr < ILogger >;
-} \ No newline at end of file
+}
diff --git a/src/management/builder/mail.cpp b/src/management/builder/mail.cpp
index a96fd33..7a8aa42 100644
--- a/src/management/builder/mail.cpp
+++ b/src/management/builder/mail.cpp
@@ -7,6 +7,8 @@
#include "file/mail/checker_decorator.hpp"
#include "file/mail/sort_decorator.hpp"
+#include "file/errors/not_create.hpp"
+
namespace smtp::manage::builder
{
smtp::manage::Mail Mail::Build() const
@@ -18,12 +20,20 @@ namespace smtp::manage::builder
{
static const std::string PATH = {"/var/lib/smtp/mails.txt"};
auto result = std::make_shared<file::mail::SortDecorator>() ;
- result->Apply(std::make_shared<file::mail::CheckerDecorator>( BuildErrorRegistrator() ))
- .Apply(std::make_shared<file::mail::FileDecorator>( PATH ));
+ result->Apply(std::make_shared<file::mail::CheckerDecorator>( BuildSettingsErrorRegistrator() ))
+ .Apply(std::make_shared<file::mail::FileDecorator>( PATH, BuildFileErrorRegistrator(PATH) ));
+ return result;
+ }
+
+ file::errors::Registrator Mail::BuildFileErrorRegistrator( std::string const& path ) const
+ {
+ file::errors::Registrator result;
+ auto not_created_file_error = std::make_shared<file::errors::NotCreatedFile>(path);
+ result.Add(not_created_file_error, ENOENT);
return result;
}
- checker::RegistratorMails Mail::BuildErrorRegistrator() const
+ checker::RegistratorMails Mail::BuildSettingsErrorRegistrator() const
{
checker::RegistratorMails result;
result.Add( std::make_shared < checker::errors::mail::Empty >());
diff --git a/src/management/builder/mail.hpp b/src/management/builder/mail.hpp
index 7cbb29d..ecd6de4 100644
--- a/src/management/builder/mail.hpp
+++ b/src/management/builder/mail.hpp
@@ -3,6 +3,7 @@
#include "management/mail.hpp"
#include "checker/registrator_mails.hpp"
#include "file/mail/types/ifile_manipulator.hpp"
+#include "file/errors/registrator.hpp"
namespace smtp::manage::builder
{
@@ -15,7 +16,8 @@ namespace smtp::manage::builder
smtp::manage::Mail Build() const;
private:
file::mail::types::IFileManipulatorPtr BuildFileManipulator() const;
- checker::RegistratorMails BuildErrorRegistrator() const;
+ file::errors::Registrator BuildFileErrorRegistrator( std::string const& path ) const;
+ checker::RegistratorMails BuildSettingsErrorRegistrator() const;
};
}
diff --git a/src/management/builder/settings.cpp b/src/management/builder/settings.cpp
index b682c49..bf345e7 100644
--- a/src/management/builder/settings.cpp
+++ b/src/management/builder/settings.cpp
@@ -4,6 +4,7 @@
#include "file/settings/settings.hpp"
#include "file/settings/checker_decorator.hpp"
#include "file/settings/file_decorator.hpp"
+#include "file/errors/not_create.hpp"
namespace smtp::manage::builder
{
@@ -17,12 +18,20 @@ namespace smtp::manage::builder
{
static const std::string PATH = "/var/lib/smtp/settings.txt";
- auto result = std::make_shared<file::settings::CheckerDecorator>(BuildErrorRegistrator());
- result->Apply(std::make_shared<file::settings::FileDecorator>(PATH));
+ auto result = std::make_shared<file::settings::CheckerDecorator>(BuildSettingsErrorRegistrator());
+ result->Apply(std::make_shared<file::settings::FileDecorator>(PATH, BuildFileErrorRegistrator(PATH)));
return result;
}
- checker::RegistratorSettings Settings::BuildErrorRegistrator() const
+ file::errors::Registrator Settings::BuildFileErrorRegistrator( std::string const& path ) const
+ {
+ file::errors::Registrator result;
+ auto not_created_file_error = std::make_shared<file::errors::NotCreatedFile>(path);
+ result.Add(not_created_file_error, ENOENT);
+ return result;
+ }
+
+ checker::RegistratorSettings Settings::BuildSettingsErrorRegistrator() const
{
checker::RegistratorSettings result;
diff --git a/src/management/builder/settings.hpp b/src/management/builder/settings.hpp
index b7215e2..2cfbd5d 100644
--- a/src/management/builder/settings.hpp
+++ b/src/management/builder/settings.hpp
@@ -3,6 +3,7 @@
#include "management/settings.hpp"
#include "checker/registrator_settings.hpp"
#include "file/settings/types/ifile_manipulator.hpp"
+#include "file/errors/registrator.hpp"
namespace smtp::manage::builder
{
@@ -15,7 +16,8 @@ namespace smtp::manage::builder
smtp::manage::Settings Build() const;
private:
file::settings::types::IFileManipulatorPtr BuildFileManipulator()const;
- checker::RegistratorSettings BuildErrorRegistrator() const;
+ file::errors::Registrator BuildFileErrorRegistrator( std::string const& path ) const;
+ checker::RegistratorSettings BuildSettingsErrorRegistrator() const;
};
}
diff --git a/src/management/mail.cpp b/src/management/mail.cpp
index d569826..eefb666 100644
--- a/src/management/mail.cpp
+++ b/src/management/mail.cpp
@@ -19,19 +19,19 @@ namespace smtp::manage
//Public methods
//
- MailsSet Mail::GetMailToSend() const
+ general::MailsSet Mail::GetMailToSend() const
{
return mMails;
}
- bool Mail::AddMailsToSend( MailsSet const& mails_to_add )
+ bool Mail::AddMailsToSend( general::MailsSet const& mails_to_add )
{
auto merged_mails = GetMergedMails( mails_to_add );
return RefreshMails( merged_mails );
}
- bool Mail::DeleteMailToSend( MailsSet const& mail_to_delete )
+ bool Mail::DeleteMailToSend( general::MailsSet const& mail_to_delete )
{
auto mails_to_delete = GetItersectionMails( mail_to_delete );
@@ -44,7 +44,7 @@ namespace smtp::manage
//Private methods
//
- MailsSet Mail::GetMergedMails( MailsSet const& mails_to_add )
+ general::MailsSet Mail::GetMergedMails( general::MailsSet const& mails_to_add )
{
auto result = mails_to_add;
result.merge( mMails );
@@ -55,9 +55,9 @@ namespace smtp::manage
return result;
}
- MailsSet Mail::GetItersectionMails( MailsSet const& mail_to_delete ) const
+ general::MailsSet Mail::GetItersectionMails( general::MailsSet const& mail_to_delete ) const
{
- MailsSet result;
+ general::MailsSet result;
auto sorted_mail_to_send = mail_to_delete;
sorted_mail_to_send.sort();
@@ -67,7 +67,7 @@ namespace smtp::manage
return result;
}
- MailsSet Mail::GetMailsAfterDelete( MailsSet const& mails_to_delete )
+ general::MailsSet Mail::GetMailsAfterDelete( general::MailsSet const& mails_to_delete )
{
auto result = mMails;
for( const auto& mail : mails_to_delete )
@@ -77,7 +77,7 @@ namespace smtp::manage
return result;
}
- bool Mail::RefreshMails( MailsSet const& new_mails )
+ bool Mail::RefreshMails( general::MailsSet const& new_mails )
{
auto result = mFileReader->Write( new_mails );
mMails = mFileReader->Read();
diff --git a/src/management/mail.hpp b/src/management/mail.hpp
index 813a5b4..94919e6 100644
--- a/src/management/mail.hpp
+++ b/src/management/mail.hpp
@@ -14,17 +14,17 @@ namespace smtp::manage
explicit Mail( file::mail::types::IFileManipulatorPtr const& file_reader );
~Mail() = default;
- MailsSet GetMailToSend() const;
- bool AddMailsToSend( MailsSet const& mails );
- bool DeleteMailToSend( MailsSet const& mail_to_delete );
+ general::MailsSet GetMailToSend() const;
+ bool AddMailsToSend( general::MailsSet const& mails );
+ bool DeleteMailToSend( general::MailsSet const& mail_to_delete );
private:
- MailsSet GetMergedMails( MailsSet const& mails_to_add );
- MailsSet GetItersectionMails( MailsSet const& mail_to_delete ) const;
- MailsSet GetMailsAfterDelete( MailsSet const& mails_to_delete );
- bool RefreshMails( MailsSet const& new_mails );
+ general::MailsSet GetMergedMails( general::MailsSet const& mails_to_add );
+ general::MailsSet GetItersectionMails( general::MailsSet const& mail_to_delete ) const;
+ general::MailsSet GetMailsAfterDelete( general::MailsSet const& mails_to_delete );
+ bool RefreshMails( general::MailsSet const& new_mails );
file::mail::types::IFileManipulatorPtr mFileReader;
- MailsSet mMails;
+ general::MailsSet mMails;
};
}
diff --git a/src/management/settings.cpp b/src/management/settings.cpp
index 20c38cb..02392e0 100644
--- a/src/management/settings.cpp
+++ b/src/management/settings.cpp
@@ -9,10 +9,11 @@ namespace smtp::manage
{
}
- bool Settings::SetSettings( manage::SettingsFields const& settings_fields )
+ bool Settings::SetSettings( general::SettingsFields const& settings_fields )
{
auto result = mFileReader.Write( settings_fields );
mSettingsFields = mFileReader.Read();
+
return result;
}
diff --git a/src/management/settings.hpp b/src/management/settings.hpp
index eb2aafb..2dbe1b6 100644
--- a/src/management/settings.hpp
+++ b/src/management/settings.hpp
@@ -3,7 +3,7 @@
#include <string>
#include "file/settings/settings.hpp"
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::manage
{
@@ -13,7 +13,7 @@ namespace smtp::manage
explicit Settings( file::settings::Settings const& file_reader );
~Settings() = default;
- bool SetSettings( manage::SettingsFields const& settings_fields );
+ bool SetSettings( general::SettingsFields const& settings_fields );
std::string GetSettings();
bool IsNeedAuth() const noexcept;
@@ -25,6 +25,6 @@ namespace smtp::manage
std::string GetPort() const;
private:
file::settings::Settings mFileReader;
- manage::SettingsFields mSettingsFields;
+ general::SettingsFields mSettingsFields;
};
}
diff --git a/src/message/builder/cc.cpp b/src/message/builder/cc.cpp
index 3cf3276..b186167 100644
--- a/src/message/builder/cc.cpp
+++ b/src/message/builder/cc.cpp
@@ -2,7 +2,7 @@
namespace smtp::message::builder
{
- Cc::Cc( manage::MailsSet const& mail_to )
+ Cc::Cc( general::MailsSet const& mail_to )
: mMailTo( mail_to )
{
diff --git a/src/message/builder/cc.hpp b/src/message/builder/cc.hpp
index 9eee0a7..e990310 100644
--- a/src/message/builder/cc.hpp
+++ b/src/message/builder/cc.hpp
@@ -1,21 +1,21 @@
#pragma once
-#include "types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/imessage_builder.hpp"
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::message::builder
{
- class Cc : public types::IDecorator<types::IMessageBuilder>
+ class Cc : public general::IDecorator<types::IMessageBuilder>
{
public:
- explicit Cc( manage::MailsSet const& mail_to );
+ explicit Cc( general::MailsSet const& mail_to );
~Cc() override = default;
std::string Get() const override;
private:
bool IsFirstElement( std::string const& cc ) const;
- manage::MailsSet const& mMailTo;
+ general::MailsSet const& mMailTo;
};
}
diff --git a/src/message/builder/date.hpp b/src/message/builder/date.hpp
index 31908ac..38e9bc2 100644
--- a/src/message/builder/date.hpp
+++ b/src/message/builder/date.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/imessage_builder.hpp"
namespace smtp::message::builder
{
- class Date : public types::IDecorator<types::IMessageBuilder>
+ class Date : public general::IDecorator<types::IMessageBuilder>
{
public:
Date() = default;
diff --git a/src/message/builder/from.hpp b/src/message/builder/from.hpp
index d1f0b21..8f67c46 100644
--- a/src/message/builder/from.hpp
+++ b/src/message/builder/from.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/imessage_builder.hpp"
namespace smtp::message::builder
{
- class From : public types::IDecorator<types::IMessageBuilder>
+ class From : public general::IDecorator<types::IMessageBuilder>
{
public:
explicit From( std::string const& mail_to );
diff --git a/src/message/builder/mail_to.cpp b/src/message/builder/mail_to.cpp
index 3ef7e0e..342829c 100644
--- a/src/message/builder/mail_to.cpp
+++ b/src/message/builder/mail_to.cpp
@@ -2,7 +2,7 @@
namespace smtp::message::builder
{
- MailTo::MailTo( manage::MailsSet const& mails )
+ MailTo::MailTo( general::MailsSet const& mails )
: mMailTo( mails )
{
diff --git a/src/message/builder/mail_to.hpp b/src/message/builder/mail_to.hpp
index 626f210..7d2fa32 100644
--- a/src/message/builder/mail_to.hpp
+++ b/src/message/builder/mail_to.hpp
@@ -1,21 +1,21 @@
#pragma once
-#include "types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/imessage_builder.hpp"
-#include "management/general.hpp"
+#include "general/struct.hpp"
namespace smtp::message::builder
{
- class MailTo : public types::IDecorator<types::IMessageBuilder>
+ class MailTo : public general::IDecorator<types::IMessageBuilder>
{
public:
- explicit MailTo( manage::MailsSet const& mails );
+ explicit MailTo( general::MailsSet const& mails );
~MailTo() override = default;
std::string Get() const override;
private:
std::string GetFirstMail() const;
- manage::MailsSet const& mMailTo;
+ general::MailsSet const& mMailTo;
};
}
diff --git a/src/message/builder/subject.hpp b/src/message/builder/subject.hpp
index 8153bc8..22e5b3b 100644
--- a/src/message/builder/subject.hpp
+++ b/src/message/builder/subject.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/imessage_builder.hpp"
namespace smtp::message::builder
{
- class Subject : public types::IDecorator<types::IMessageBuilder>
+ class Subject : public general::IDecorator<types::IMessageBuilder>
{
public:
explicit Subject( std::string const& subject );
diff --git a/src/message/builder/text.hpp b/src/message/builder/text.hpp
index 9715656..8deb14a 100644
--- a/src/message/builder/text.hpp
+++ b/src/message/builder/text.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "types/idecorator.hpp"
+#include "general/idecorator.hpp"
#include "types/imessage_builder.hpp"
namespace smtp::message::builder
{
- class Text : public types::IDecorator<types::IMessageBuilder>
+ class Text : public general::IDecorator<types::IMessageBuilder>
{
public:
explicit Text( std::string const& text );
diff --git a/src/service/smtp.cpp b/src/service/smtp.cpp
index 90e3acc..3c71161 100644
--- a/src/service/smtp.cpp
+++ b/src/service/smtp.cpp
@@ -8,7 +8,7 @@ namespace smtp::service
//
Smtp::Smtp( ConnectionPtr connection, manage::Settings const& settings, manage::Mail const& mail_to )
- :mSettingsStorage(settings), mMailTo(mail_to)
+ : mSettingsStorage(settings), mMailTo(mail_to)
{
CreateService( connection );
CreateMessengerInterface( connection );
@@ -102,7 +102,7 @@ namespace smtp::service
mManagerMailInterface->register_method( SMTP_GET_MAILS_TO_SEND_METHOD_NAME, [this]()
{ return mMailTo.GetMailToSend();});
- mManagerMailInterface->register_method( SMTP_ADD_MAILS_TO_SEND_METHOD_NAME, [this](manage::MailsSet const& mails){ return mMailTo.AddMailsToSend(mails);});
- mManagerMailInterface->register_method( SMTP_DELETE_MAILS_METHOD_NAME, [this](manage::MailsSet const& mails_to_delete){ return mMailTo.DeleteMailToSend(mails_to_delete);});
+ mManagerMailInterface->register_method( SMTP_ADD_MAILS_TO_SEND_METHOD_NAME, [this](general::MailsSet const& mails){ return mMailTo.AddMailsToSend(mails);});
+ mManagerMailInterface->register_method( SMTP_DELETE_MAILS_METHOD_NAME, [this](general::MailsSet const& mails_to_delete){ return mMailTo.DeleteMailToSend(mails_to_delete);});
}
}