Sfoglia il codice sorgente

Initial example for #688

bel2125 6 anni fa
parent
commit
fce28d4578
1 ha cambiato i file con 62 aggiunte e 0 eliminazioni
  1. 62 0
      test/luarest/api/1/sensors/index.lua

+ 62 - 0
test/luarest/api/1/sensors/index.lua

@@ -0,0 +1,62 @@
+require "json"
+-- json library needs to be available 
+
+
+local http_status = "200 OK";
+local response_table = {};
+
+
+if mg.request_info.request_method == "GET" then
+
+  response_table["result"] = "ok";
+  response_table["data"] = {};
+  for i=1,10 do
+    response_table.data[i] = {name = "sensor" .. i, value = 20+i};
+  end
+  
+elseif mg.request_info.request_method == "PUT" then
+
+  local request_len = mg.request_info.content_length
+  local read_len = 0
+  local request_body_sep = {}
+  local error_reading = false
+  
+  repeat 
+    local chunk = mg.read()
+	if chunk then
+	   read_len = read_len + #chunk
+	   request_body_sep[#request_body_sep+1] = chunk
+	else
+	   error_reading = true;	   
+	end
+  until ((read_len == request_len) or error_reading);
+  
+  
+  if (error_reading) then
+    response_table["error"] = "ok";
+    response_table["status"] = "error reading request body data";
+  else
+    local request_body = table.concat(request_body_sep)
+    local isok, request_table = pcall(json.parse, request_body)
+  
+    -- TODO: check "isok", then check all arguments in "request_table", 
+    
+    response_table["result"] = "ok";
+    response_table["data"] = {name = request_table};
+  end
+  
+else
+
+  http_status = "403 Forbidden";
+  response_table["result"] = "error";
+  response_table["status"] = "invalid method " .. mg.request_info.request_method;
+  
+end
+
+
+local response_body = json.stringify(response_table)
+mg.write("HTTP/1.1 " .. http_status .. "\r\n")
+mg.write("Content-Type: application/javascript; charset=UTF-8\r\n")
+mg.write("Content-Length: ".. #response_body .."\r\n")
+mg.write("\r\n")
+mg.write(response_body)