diff options
| author | Roland Reichwein <mail@reichwein.it> | 2020-05-11 12:24:04 +0200 | 
|---|---|---|
| committer | Roland Reichwein <mail@reichwein.it> | 2020-05-11 12:24:04 +0200 | 
| commit | 5bc1f7bed536e0e936fd13fad45c49392b0bfff4 (patch) | |
| tree | 67d4b63e38c6799d63ae4f78168d6838c4e13906 /plugins/webbox | |
| parent | 2715d8e5910304d89a5a1666726aac3b777ad16c (diff) | |
Separated out routines to libcommon
Diffstat (limited to 'plugins/webbox')
| -rw-r--r-- | plugins/webbox/Makefile | 2 | ||||
| -rw-r--r-- | plugins/webbox/file.cpp | 46 | ||||
| -rw-r--r-- | plugins/webbox/file.h | 15 | ||||
| -rw-r--r-- | plugins/webbox/stringutil.cpp | 66 | ||||
| -rw-r--r-- | plugins/webbox/stringutil.h | 10 | ||||
| -rw-r--r-- | plugins/webbox/webbox.cpp | 35 | 
6 files changed, 4 insertions, 170 deletions
diff --git a/plugins/webbox/Makefile b/plugins/webbox/Makefile index 1c49fda..4794e72 100644 --- a/plugins/webbox/Makefile +++ b/plugins/webbox/Makefile @@ -60,8 +60,6 @@ endif  LDFLAGS+=-L../../libcommon  PROGSRC=\ -    file.cpp \ -    stringutil.cpp \      webbox.cpp  TESTSRC=\ diff --git a/plugins/webbox/file.cpp b/plugins/webbox/file.cpp deleted file mode 100644 index 47ab8be..0000000 --- a/plugins/webbox/file.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "file.h" - -#include <fstream> - -namespace fs = std::filesystem; - -using namespace std::string_literals; - -std::string File::getFile(const fs::path& filename) -{ - std::ifstream file(filename.string(), std::ios::in | std::ios::binary | std::ios::ate); - - if (file.is_open()) { -  std::ifstream::pos_type fileSize = file.tellg(); -  file.seekg(0, std::ios::beg); - -  std::string bytes(fileSize, ' '); -  file.read(reinterpret_cast<char*>(bytes.data()), fileSize); - -  return bytes; - - } else { -  throw std::runtime_error("Opening "s + filename.string() + " for reading"); - } -} - -void File::setFile(const fs::path& filename, const std::string& s) -{ - File::setFile(filename, s.data(), s.size()); -} - -void File::setFile(const fs::path& filename, const char* data, size_t size) -{ - std::ofstream file(filename.string(), std::ios::out | std::ios::binary); - if (file.is_open()) { -  file.write(data, size); - } else { -  throw std::runtime_error("Opening "s + filename.string() + " for writing"); - } -} - -void File::setFile(const fs::path& filename, const std::vector<uint8_t>& data) -{ - File::setFile(filename, reinterpret_cast<const char*>(data.data()), data.size()); -} - diff --git a/plugins/webbox/file.h b/plugins/webbox/file.h deleted file mode 100644 index e7e4cf6..0000000 --- a/plugins/webbox/file.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <cstdint> -#include <filesystem> -#include <string> -#include <vector> - -namespace File { - -std::string getFile(const std::filesystem::path& filename); -void setFile(const std::filesystem::path& filename, const std::string& s); -void setFile(const std::filesystem::path& filename, const char* data, size_t size); -void setFile(const std::filesystem::path& filename, const std::vector<uint8_t>& data); - -} diff --git a/plugins/webbox/stringutil.cpp b/plugins/webbox/stringutil.cpp deleted file mode 100644 index f87fa00..0000000 --- a/plugins/webbox/stringutil.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "stringutil.h" - -#include <boost/algorithm/string/predicate.hpp> -#include <boost/algorithm/string/case_conv.hpp> - -#include <cstdarg> - -std::string strfmt(const char* fmt, ...) -{ - va_list args; - - va_start(args, fmt); - int size = std::vsnprintf(nullptr, 0, fmt, args); - va_end(args); - - std::string result(size, ' '); - - va_start(args, fmt); - std::vsnprintf(result.data(), size + 1, fmt, args); - va_end(args); - - return result; -} - -std::vector<std::string> split(std::string value, const std::string separators) -{ - std::vector<std::string> result; - - size_t pos0 = 0; - size_t pos1 = 0; - while (pos0 < value.size()) { -  pos1 = value.find_first_of(separators, pos0); -  if (pos1 == std::string::npos) -   pos1 = value.size(); -  std::string part = value.substr(pos0, pos1 - pos0); -  //std::cout << "DEBUG: " << part << std::endl << std::flush; -  if (part != "") -   result.push_back(part); -  pos0 = value.find_first_not_of(separators, pos1); -  if (pos0 == std::string::npos) -   pos0 = value.size(); - } - - return result; -} - -std::string join(std::vector<std::string> vs, std::string separator) -{ -  std::string s; -  for (const auto& line : vs) { -   if (s.size() > 0) -    s += separator; -   s += line; -  } - -  return s; -} - -bool startsWithAnyOfLower(const std::string &s, const std::vector<std::string> &list) { - for (const std::string& element : list) { -  if (boost::algorithm::starts_with(boost::algorithm::to_lower_copy(s), boost::algorithm::to_lower_copy(element))) -   return true; - } - return false; -} - diff --git a/plugins/webbox/stringutil.h b/plugins/webbox/stringutil.h deleted file mode 100644 index 5110e2e..0000000 --- a/plugins/webbox/stringutil.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include <string> -#include <vector> - -std::string strfmt(const char* fmt, ...); - -std::vector<std::string> split(std::string value, const std::string separators = "\r\n "); -std::string join(std::vector<std::string> vs, std::string separator = "\n"); -bool startsWithAnyOfLower(const std::string &s, const std::vector<std::string> &list); diff --git a/plugins/webbox/webbox.cpp b/plugins/webbox/webbox.cpp index 7de431a..01241a9 100644 --- a/plugins/webbox/webbox.cpp +++ b/plugins/webbox/webbox.cpp @@ -1,9 +1,10 @@  #include "webbox.h" -#include "file.h" -#include "stringutil.h" -  #include "libcommon/mime.h" +#include "libcommon/tempfile.h" +#include "libcommon/file.h" +#include "libcommon/stringutil.h" +  #include <boost/algorithm/string/predicate.hpp>  #include <boost/algorithm/string/replace.hpp> @@ -36,34 +37,6 @@ namespace {   static const std::string STATIC_HTML_TARGET{"webbox-html/"};   static const fs::path STATIC_HTML_DOC_ROOT{"/usr/lib/webbox/html"}; - // TODO: separate out - class Tempfile - { -  fs::path m_path; - - public: -  fs::path GetPath() const -  { -   return m_path; -  } - -  Tempfile() { -   try { -    m_path = std::string{tmpnam(NULL)} + ".zip"s; -   } catch (const std::exception& ex) { -    throw std::runtime_error("Tempfile error: "s + ex.what()); -   } -  } - -  ~Tempfile() { -   try { -    fs::remove_all(m_path); -   } catch (const std::exception& ex) { -    std::cerr << "Warning: Couldn't remove temporary file " << m_path << std::endl; -   } -  } - }; -   std::unordered_map<std::string, std::string> status_map {    { "301", "Moved Permanently" },    { "400", "Bad Request"},  | 
