summaryrefslogtreecommitdiffhomepage
path: root/plugins/webbox
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2020-05-11 12:24:04 +0200
committerRoland Reichwein <mail@reichwein.it>2020-05-11 12:24:04 +0200
commit5bc1f7bed536e0e936fd13fad45c49392b0bfff4 (patch)
tree67d4b63e38c6799d63ae4f78168d6838c4e13906 /plugins/webbox
parent2715d8e5910304d89a5a1666726aac3b777ad16c (diff)
Separated out routines to libcommon
Diffstat (limited to 'plugins/webbox')
-rw-r--r--plugins/webbox/Makefile2
-rw-r--r--plugins/webbox/file.cpp46
-rw-r--r--plugins/webbox/file.h15
-rw-r--r--plugins/webbox/stringutil.cpp66
-rw-r--r--plugins/webbox/stringutil.h10
-rw-r--r--plugins/webbox/webbox.cpp35
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"},