Browse Source

Simplified the sample code.

yhirose 13 years ago
parent
commit
7c803330e0
2 changed files with 39 additions and 66 deletions
  1. 8 66
      example/sample.cc
  2. 31 0
      httpsvrkit.h

+ 8 - 66
example/sample.cc

@@ -10,81 +10,23 @@
 
 
 using namespace httpsvrkit;
 using namespace httpsvrkit;
 
 
-std::string dump_request(Context& cxt)
-{
-    std::string s;
-    char buf[BUFSIZ];
-
-    s += "================================\n";
-
-    sprintf(buf, "Method: %s\n", cxt.request.method.c_str());
-    s += buf;
-
-    sprintf(buf, "URL: %s\n", cxt.request.url.c_str());
-    s += buf;
-
-    std::string query;
-    for (auto it = cxt.request.query.begin(); it != cxt.request.query.end(); ++it) {
-       const auto& x = *it;
-       sprintf(buf, "(%s:%s)", x.first.c_str(), x.second.c_str());
-       query += buf;
-    }
-    sprintf(buf, "QUERY: %s\n", query.c_str());
-    s += buf;
-
-    //for (const auto& x : cxt.request.headers) {
-    for (auto it = cxt.request.headers.begin(); it != cxt.request.headers.end(); ++it) {
-       const auto& x = *it;
-       sprintf(buf, "%s: %s\n", x.first.c_str(), x.second.c_str());
-       s += buf;
-    }
-
-    s += "================================\n";
-
-    return s;
-}
-
 int main(void)
 int main(void)
 {
 {
-    if (true) {
-        const char* s = "abcde";
-
-        // DSL style
-        HTTP_SERVER("localhost", 1234) {
-
-            GET("/", {
-                res.set_redirect("/home");
-            });
+    const char* hi = "/hi";
 
 
-            GET("/home", {
-                res.set_content(dump_request(cxt));
-            });
+    HTTP_SERVER("localhost", 1234) {
 
 
-            GET("/abcde", {
-                res.set_content(s);
-            });
-        }
-    } else {
-        // Regular style
-        Server svr("localhost", 1234);
-
-        svr.get("/", [](Context& cxt) {
-            cxt.response.set_redirect("/home");
-        });
-
-        svr.get("/home", [](Context& cxt) {
-            cxt.response.set_content(dump_request(cxt));
+        GET("/", {
+            res.set_redirect(hi);
         });
         });
 
 
-        svr.post("/item", [](Context& cxt) {
-            cxt.response.set_content(dump_request(cxt));
+        GET("/hi", {
+            res.set_content("Hello World!");
         });
         });
 
 
-        svr.get("/item/([^/]+)", [](Context& cxt) {
-            cxt.response.set_content(dump_request(cxt));
+        GET("/dump", {
+            res.set_content(dump_request(cxt));
         });
         });
-
-        svr.run();
     }
     }
 }
 }
 
 

+ 31 - 0
httpsvrkit.h

@@ -170,6 +170,35 @@ inline void close_socket(socket_t sock)
 #endif
 #endif
 }
 }
 
 
+std::string dump_request(Context& cxt)
+{
+    const auto& req = cxt.request;
+    std::string s;
+    char buf[BUFSIZ];
+
+    s += "================================\n";
+
+    sprintf(buf, "%s %s", req.method.c_str(), req.url.c_str());
+    s += buf;
+
+    std::string query;
+    for (auto it = req.query.begin(); it != req.query.end(); ++it) {
+       const auto& x = *it;
+       sprintf(buf, "%c%s=%s", (it == req.query.begin()) ? '?' : '&', x.first.c_str(), x.second.c_str());
+       query += buf;
+    }
+    sprintf(buf, "%s\n", query.c_str());
+    s += buf;
+
+    for (auto it = req.headers.begin(); it != req.headers.end(); ++it) {
+       const auto& x = *it;
+       sprintf(buf, "%s: %s\n", x.first.c_str(), x.second.c_str());
+       s += buf;
+    }
+
+    return s;
+}
+
 void Response::set_redirect(const char* url)
 void Response::set_redirect(const char* url)
 {
 {
     headers.insert(std::make_pair("Location", url));
     headers.insert(std::make_pair("Location", url));
@@ -379,6 +408,8 @@ inline void Server::process_request(FILE* fp_read, FILE* fp_write)
 
 
     // Read headers
     // Read headers
     read_headers(fp_read, cxt.request.headers);
     read_headers(fp_read, cxt.request.headers);
+    
+    printf("%s", dump_request(cxt).c_str());
 
 
     // Routing
     // Routing
     cxt.response.status = 404;
     cxt.response.status = 404;