aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Halle <niklas@niklashalle.net>2020-09-18 15:40:36 +0200
committerNiklas Halle <niklas@niklashalle.net>2020-09-18 15:40:36 +0200
commit48d6a7408f2371c5b66482cc68ec2b801d444700 (patch)
tree9205b9e656d4b06d17e5abdabb478b9f917d64ce
parentc24fa23e21091a1afb89418c03692cca63e39123 (diff)
downloadn_core-48d6a7408f2371c5b66482cc68ec2b801d444700.tar.gz
n_core-48d6a7408f2371c5b66482cc68ec2b801d444700.zip
started work on latex render command
-rw-r--r--include/SimpleHandlers.hpp2
-rw-r--r--src/SimpleHandlers.cpp30
-rw-r--r--src/main.cpp4
3 files changed, 36 insertions, 0 deletions
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 <cctype>
+#include <string>
#include <fstream>
+#include <iomanip>
+#include <sstream>
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!");