diff --git a/webserv/utils/FileUtils.cpp b/webserv/utils/FileUtils.cpp index 0bc0f9c..73c78be 100644 --- a/webserv/utils/FileUtils.cpp +++ b/webserv/utils/FileUtils.cpp @@ -1,7 +1,10 @@ +#include "webserv/log/Log.hpp" + #include #include // for strlen -#include // for string +#include +#include // for string #include // for stat, S_ISREG, S_ISDIR @@ -58,4 +61,42 @@ std::string joinPath(const std::string &base, const std::string &addition) // NO } return result; } + +std::vector readBinaryFile(const std::string &filepath) +{ + Log::trace(LOCATION); + + std::ifstream file(filepath, std::ios::binary | std::ios::ate); + if (!file.is_open()) + { + Log::error("Failed to open file: " + filepath); + return {}; + } + + std::streamsize size = file.tellg(); + file.seekg(0, std::ios::beg); + + std::vector buffer(size); + if (!file.read(buffer.data(), size)) + { + Log::error("Failed to read file: " + filepath); + return {}; + } + + return buffer; +} + +std::string readFileAsString(const std::string &filepath) +{ + Log::trace(LOCATION); + + std::ifstream file(filepath, std::ios::binary); + if (!file.is_open()) + { + return ""; + } + + return {std::istreambuf_iterator(file), std::istreambuf_iterator()}; +} + } // namespace FileUtils \ No newline at end of file diff --git a/webserv/utils/FileUtils.hpp b/webserv/utils/FileUtils.hpp index 9c94096..0f7be9d 100644 --- a/webserv/utils/FileUtils.hpp +++ b/webserv/utils/FileUtils.hpp @@ -1,11 +1,16 @@ #pragma once #include +#include namespace FileUtils { bool isDirectory(const std::string &path); bool isFile(const std::string &path); + std::string getExtension(const std::string &filename); std::string joinPath(const std::string &base, const std::string &addition); + +std::vector readBinaryFile(const std::string &filepath); +std::string readFileAsString(const std::string &filepath); } // namespace FileUtils \ No newline at end of file