|
@@ -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)
|