login

<     >

2022-02-27 21:44:10 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

parse cookies in request

diff --git a/src/http.lua b/src/http.lua
index 6d77e9c..42f4dd6 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -17,6 +17,17 @@ local function parse_uri(uri)
     return path, query, fragment
 end
 
+local function parse_cookies(cookie_values)
+    local cookies = {}
+    if cookie_values ~= nil then
+        for pair in (cookie_values..";"):gmatch("([^;]*);") do
+            local key, val = pair:match("%s*([^=]*)=(.*)")
+            cookies[key] = val
+        end
+    end
+    return cookies
+end
+
 local function parse_request(data)
     local req = {payload="", headers={}}
     local stage = "status"
@@ -43,6 +54,7 @@ local function parse_request(data)
         query_str = query_str:sub(1, #query_str-1)
         req["form"] = parse_query(query_str)
     end
+    req.cookies = parse_cookies(req.headers["cookie"])
     return req
 end