From fc2f037e216e517ec4b87b0663277a3fc40c1d74 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Fri, 18 Sep 2020 16:23:04 +0200 Subject: fix stuff, start encoding, add doku for attachment sending --- src/SimpleHandlers.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src/SimpleHandlers.cpp') diff --git a/src/SimpleHandlers.cpp b/src/SimpleHandlers.cpp index 0a4bdb1..d9c6448 100644 --- a/src/SimpleHandlers.cpp +++ b/src/SimpleHandlers.cpp @@ -2,11 +2,14 @@ #include "Response.hpp" +#include #include +#include #include -#include #include #include +#include +#include using namespace Response; @@ -113,7 +116,30 @@ std::string url_encode(std::string const &value) { return escaped.str(); } + +std::string exec(const char* cmd) { + std::array buffer{}; + std::string result; + std::unique_ptr pipe(popen(cmd, "r"), pclose); + if (!pipe) { + throw std::runtime_error("popen() failed!"); + } + while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { + result += buffer.data(); + } + return result; +} + json Handler::latexRenderHandler(std::string const &arguments, std::string const &session, void *payload) { (void) payload; - return simple_response("https://latex.codecogs.com/png.latex?" + url_encode(arguments), session, true); + + std::string file = exec("mktemp"); + + std::string result = exec(("curl -s 'https://latex.codecogs.com/png.latex?" + url_encode(arguments) + "' " + "-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0' " + "-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' " + "-H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' " + "-H 'Upgrade-Insecure-Requests: 1' --output " + file).c_str()); + + return simple_response(result, session, true); } -- cgit v1.2.3-54-g00ecf