From 48d6a7408f2371c5b66482cc68ec2b801d444700 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Fri, 18 Sep 2020 15:40:36 +0200 Subject: started work on latex render command --- include/SimpleHandlers.hpp | 2 ++ src/SimpleHandlers.cpp | 30 ++++++++++++++++++++++++++++++ src/main.cpp | 4 ++++ 3 files changed, 36 insertions(+) diff --git a/include/SimpleHandlers.hpp b/include/SimpleHandlers.hpp index aef2372..1121685 100644 --- a/include/SimpleHandlers.hpp +++ b/include/SimpleHandlers.hpp @@ -11,5 +11,7 @@ namespace Handler { json wikiHandler(std::string const &arguments, std::string const &session, void *payload); + json latexRenderHandler(std::string const &arguments, std::string const &session, void *payload); + json klingerHandler(std::string const &arguments, std::string const &session, void *payload); } \ No newline at end of file diff --git a/src/SimpleHandlers.cpp b/src/SimpleHandlers.cpp index ee801d4..0a4bdb1 100644 --- a/src/SimpleHandlers.cpp +++ b/src/SimpleHandlers.cpp @@ -2,7 +2,11 @@ #include "Response.hpp" +#include +#include #include +#include +#include using namespace Response; @@ -87,3 +91,29 @@ json Handler::sayHandler(const std::string &arguments, const std::string &sessio (void) payload; return simple_response(arguments, session, true); } + +std::string url_encode(std::string const &value) { + std::ostringstream escaped; + escaped.fill('0'); + escaped << std::hex; + + for (char c : value) { + // Keep alphanumeric and other accepted characters intact + if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') { + escaped << c; + continue; + } + + // Any other characters are percent-encoded + escaped << std::uppercase; + escaped << '%' << std::setw(2) << int((unsigned char) c); + escaped << std::nouppercase; + } + + return escaped.str(); +} + +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); +} diff --git a/src/main.cpp b/src/main.cpp index 948bc1d..2e215cd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -39,6 +39,10 @@ int main() { return createPlainDescriptionFromText( "{adlershof, nord, sued} Shows the daily menu of the mensa at various places."); }}); + Handler::CommandHandler{"latex", Handler::latexRenderHandler [createPlainDescriptionFromText]() { + return createPlainDescriptionFromText( + "Renders the given string to a png"); + }}); regular_commands.emplace_back( Handler::CommandHandler{"klinger", Handler::klingerHandler, [createPlainDescriptionFromText]() { return createPlainDescriptionFromText("Greats in french. Bonjour!"); -- cgit v1.2.3-54-g00ecf