aboutsummaryrefslogtreecommitdiff
path: root/example/redirect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'example/redirect.cc')
-rw-r--r--example/redirect.cc60
1 files changed, 60 insertions, 0 deletions
diff --git a/example/redirect.cc b/example/redirect.cc
new file mode 100644
index 0000000..b1f3939
--- /dev/null
+++ b/example/redirect.cc
@@ -0,0 +1,60 @@
+//
+// redirect.cc
+//
+// Copyright (c) 2019 Yuji Hirose. All rights reserved.
+// MIT License
+//
+
+#include <httplib.h>
+
+#define SERVER_CERT_FILE "./cert.pem"
+#define SERVER_PRIVATE_KEY_FILE "./key.pem"
+
+using namespace httplib;
+
+int main(void) {
+ // HTTP server
+ Server http;
+#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
+ SSLServer https(SERVER_CERT_FILE, SERVER_PRIVATE_KEY_FILE);
+#endif
+
+ http.Get("/test", [](const Request & /*req*/, Response &res) {
+ res.set_content("Test\n", "text/plain");
+ });
+
+ http.set_error_handler([](const Request & /*req*/, Response &res) {
+ res.set_redirect("https://localhost:8081/");
+ });
+
+ // HTTPS server
+#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
+ https.Get("/", [=](const Request & /*req*/, Response &res) {
+ res.set_redirect("/hi");
+ });
+
+ https.Get("/hi", [](const Request & /*req*/, Response &res) {
+ res.set_content("Hello World!\n", "text/plain");
+ });
+
+ https.Get("/stop", [&](const Request & /*req*/, Response & /*res*/) {
+ https.stop();
+ http.stop();
+ });
+#endif
+
+ // Run servers
+ auto httpThread = std::thread([&]() { http.listen("localhost", 8080); });
+
+#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
+ auto httpsThread = std::thread([&]() { https.listen("localhost", 8081); });
+#endif
+
+ httpThread.join();
+
+#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
+ httpsThread.join();
+#endif
+
+ return 0;
+}