Browse Source

mv memcached example to separated page

221V 1 week ago
parent
commit
e9d9399a0c
3 changed files with 83 additions and 24 deletions
  1. 1 1
      README.md
  2. 5 23
      vtest/source/app.d
  3. 77 0
      vtest/source/memcached_test.d

+ 1 - 1
README.md

@@ -55,7 +55,7 @@ sudo apt-get install memcached
 
 $ cd <FOLDER_NAME>
 $ make c
-
+$ make run
 
 http://127.0.0.1:8080/
 http://127.0.0.1:8080/test

+ 5 - 23
vtest/source/app.d

@@ -13,6 +13,7 @@ import vibe.core.log;
 
 import ws_bert_login : ws_bert_handle, login_test; // login - logged - logout -- via ws with bert ++ memcached + postgresql for sessions
 
+import memcached_test : memcached_test; // memcached example
 
 
 import std.string;
@@ -126,8 +127,6 @@ __gshared UserStateManager userStateManager;
 
 
 
-import memcached4d;
-
 import std.conv : to;
 
 import tr;
@@ -334,9 +333,10 @@ void main(){
   //router.get("/", staticTemplate!"index.html");
   router.get("/", serveStaticFile("public/index.html") ); // static html + ws echo example
   router.get("/ws", handleWebSockets(&ws_handle) ); // static html + ws echo example
-  router.get("/test", &test); // Mustache template + memcached + postgresql pool example
+  router.get("/test", &test); // Mustache template + postgresql pool example
   router.get("/ws_login_test", handleWebSockets(&ws_bert_handle) ); // ws handler begins from "ws_" and next same http page path // login - logged - logout -- via ws with bert
   router.get("/login_test", &login_test); // login - logged - logout -- via ws with bert
+  router.get("/memcached_test", &memcached_test); // memcached example
   router.get("*", serveStaticFiles("public/"));
   
   //auto listener = listenHTTP(settings, &hello);
@@ -515,9 +515,6 @@ void test_pg_conn_driver_queries(){
 
 
 void test(HTTPServerRequest req, HTTPServerResponse res){
-  auto cache = memcachedConnect("127.0.0.1:11211");
-  
-  
   
   /* test unproper arguments order */
   /* do not */
@@ -555,6 +552,7 @@ void test(HTTPServerRequest req, HTTPServerResponse res){
   
   
   
+  // i18n example
   Language Lang = Language.uk;
   writeln("tr 1 = ", Tr(Lang, TKey.hello));
   writeln("tr 2 = ", Tr(Lang, TKey.welcome, ["username"], 0) );
@@ -565,22 +563,6 @@ void test(HTTPServerRequest req, HTTPServerResponse res){
   
   
   
-  writeln("get test1 = ", cache.get!string("test1"));
-  
-  string v1 = "value1 = 🔥🦀";
-  
-  if(cache.store("test1", v1) == RETURN_STATE.SUCCESS ){
-    writeln("stored successfully");
-    writeln("get stored: ", cache.get!string("test1") );
-  }else{
-    writeln("not stored");
-  }
-  
-  string result = cache.get!string("test1");
-  writeln("get test1 = ", result);
-  
-  writeln(cache.del("test1"));
-  
   
   //test_pg_conn_driver();
   test_pg_conn_driver_queries();
@@ -614,7 +596,7 @@ void test(HTTPServerRequest req, HTTPServerResponse res){
   context.useSection("maybe1");
   
   context["part1"] = mustache2.render("part1", context2);
-  context["result1"] = "Hello, World!\n" ~ result;
+  context["result1"] = "Hello, World!\n";
   
   res.headers["Content-Type"] = "text/html; charset=utf-8";
   

+ 77 - 0
vtest/source/memcached_test.d

@@ -0,0 +1,77 @@
+
+
+import memcached4d;
+
+
+import std.stdio : writeln;
+
+import vibe.core.core;
+import vibe.http.router;
+import vibe.http.server;
+import vibe.http.fileserver;
+import vibe.http.websockets;
+import vibe.core.log;
+
+
+import mustache;
+alias MustacheEngine!(string) Mustache;
+
+
+
+void memcached_test(HTTPServerRequest req, HTTPServerResponse res){
+  auto cache = memcachedConnect("127.0.0.1:11211");
+  
+  
+  writeln("get test1 = ", cache.get!string("test1"));
+  
+  string v1 = "value1 = 🔥🦀";
+  
+  if(cache.store("test1", v1) == RETURN_STATE.SUCCESS ){
+    writeln("stored successfully");
+    writeln("get stored: ", cache.get!string("test1") );
+  }else{
+    writeln("not stored");
+  }
+  
+  string result = cache.get!string("test1");
+  writeln("get test1 = ", result);
+  
+  writeln(cache.del("test1"));
+  
+  
+  Mustache mustache2;
+  auto context2 = new Mustache.Context;
+  mustache2.path = "priv/folder2";
+  mustache2.ext = "dtl";
+  
+  context2["param2"] = "blah blah blah ";
+  
+  Mustache mustache;
+  auto context = new Mustache.Context;
+  mustache.path = "priv";
+  mustache.ext = "dtl";
+  
+  //context.useSection("boolean");
+  //assert(mustache.renderString(" {{#boolean}}YES{{/boolean}}\n {{#boolean}}GOOD{{/boolean}}\n", context) == " YES\n GOOD\n");
+  
+  //{{escaped_html_tags}}
+  //{{{not_escaped_html_tags}}}
+  
+  //{{#repo}}<b>{{name}}</b>{{/repo}}
+  //{{^repo}}No repos :({{/repo}}
+  //  to
+  //No repos :(
+  
+  context["lang"] = "en";
+  context["number1"] = 42;
+  context.useSection("maybe1");
+  
+  context["part1"] = mustache2.render("part1", context2);
+  context["result1"] = "Hello, World!\n" ~ result;
+  
+  res.headers["Content-Type"] = "text/html; charset=utf-8";
+  
+  //res.writeBody("Hello, World!\n" ~ result);
+  res.writeBody( mustache.render("main", context) );
+}
+