18 #ifndef NAF_FILES_FILEMANAGER
19 #define NAF_FILES_FILEMANAGER
23 #include <string_view>
30 #include "Poco/Path.h"
31 #include "Poco/File.h"
33 #include "Poco/DateTime.h"
34 #include "Poco/Random.h"
35 #include "Poco/StreamCopier.h"
36 #include "Poco/Net/HTMLForm.h"
37 #include "Poco/Net/PartHandler.h"
38 #include "Poco/Net/MessageHeader.h"
39 #include "Poco/CountingStream.h"
40 #include <Poco/JSON/JSON.h>
41 #include <Poco/JSON/JSONException.h>
42 #include <Poco/JSON/Array.h>
43 #include <Poco/JSON/Object.h>
45 #include "files/file_properties.h"
46 #include "files/file.h"
47 #include "tools/settings_manager.h"
54 enum class OperationType;
61 using namespace Poco::Net;
64 enum class NAF::Files::OperationType
79 std::map<std::string, Files::FileProperties>& get_supported_files()
81 auto& var = supported_files_;
84 OperationType get_operation_type()
const{
return operation_type_;}
85 std::string get_directory_base()
const{
return directory_base_;}
86 std::string get_directory_for_uploaded_files()
const{
return directory_for_uploaded_files_;}
87 std::string get_directory_for_temp_files()
const{
return directory_for_temp_files_;}
88 JSON::Object::Ptr& get_result()
93 std::vector<Files::File>& get_files()
99 void set_operation_type(OperationType operation_type){operation_type_ = operation_type;}
100 void set_directory_base(std::string directory_base) { directory_base_ = directory_base;}
101 void set_directory_for_uploaded_files(std::string directory_for_uploaded_files) { directory_for_uploaded_files_ = directory_for_uploaded_files;}
102 void set_directory_for_temp_files(std::string directory_for_temp_files) { directory_for_temp_files_ = directory_for_temp_files;}
104 void handlePart(
const MessageHeader& header, std::istream& stream)
override;
105 std::string GenerateName_(std::string name);
110 void DownloadFile_(std::ostream& out_response);
114 void AddBasicSupportedFiles_();
116 Files::File CreateTempFileFromAddress_(std::string address);
117 void ProcessContentLength_();
118 bool VerifyMaxFileSize_();
123 void ProcessFileType_();
124 std::string SplitHeaderValue_(
const MessageHeader& header, std::string header_name, std::string parameter);
125 void CheckTargetFilename_(
Files::File& file, std::string directory);
126 std::size_t ReplaceText_(std::string& inout, std::string what, std::string with);
129 std::map<std::string, Files::FileProperties> supported_files_;
130 OperationType operation_type_;
131 std::string directory_base_;
132 std::string directory_for_uploaded_files_;
133 std::string directory_for_temp_files_;
134 JSON::Object::Ptr result_;
135 std::vector<Files::File> files_;
Definition: file_manager.h:73
Definition: file_properties.h:36