Compare commits
No commits in common. "472d17509315e5d448c7e85787bbfa9c3d55c575" and "d516147238b4bddb060c071f92908d99bce80caf" have entirely different histories.
472d175093
...
d516147238
|
@ -3,7 +3,6 @@ package http
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt" // Added for fmt.Fprintf
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
@ -280,37 +279,21 @@ func writeResponse(w http.ResponseWriter, result any) {
|
||||||
result = httpResp.Body // Set result to body for processing below
|
result = httpResp.Body // Set result to body for processing below
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if it's a map (table) or array - return as JSON
|
switch res := result.(type) {
|
||||||
isJSON := false
|
case string:
|
||||||
|
// String result - default to plain text
|
||||||
switch result.(type) {
|
setContentTypeIfMissing(w, contentTypePlain)
|
||||||
case map[string]any, []any, []float64, []string, []int:
|
w.Write([]byte(res))
|
||||||
isJSON = true
|
default:
|
||||||
}
|
// All other types - convert to JSON
|
||||||
|
|
||||||
if isJSON {
|
|
||||||
setContentTypeIfMissing(w, contentTypeJSON)
|
setContentTypeIfMissing(w, contentTypeJSON)
|
||||||
data, err := json.Marshal(result)
|
data, err := json.Marshal(res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed to marshal response: %v", err)
|
logger.Error("Failed to marshal response: %v", err)
|
||||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.Write(data)
|
w.Write(data)
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// All other types - convert to plain text
|
|
||||||
setContentTypeIfMissing(w, contentTypePlain)
|
|
||||||
|
|
||||||
switch r := result.(type) {
|
|
||||||
case string:
|
|
||||||
w.Write([]byte(r))
|
|
||||||
case []byte:
|
|
||||||
w.Write(r)
|
|
||||||
default:
|
|
||||||
// Convert any other type to string
|
|
||||||
fmt.Fprintf(w, "%v", r)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,22 +117,23 @@ local cookie = {
|
||||||
if opts.expires then
|
if opts.expires then
|
||||||
if type(opts.expires) == "number" then
|
if type(opts.expires) == "number" then
|
||||||
if opts.expires > 0 then
|
if opts.expires > 0 then
|
||||||
|
-- Add seconds to current time
|
||||||
cookie.max_age = opts.expires
|
cookie.max_age = opts.expires
|
||||||
local now = os.time()
|
local now = os.time()
|
||||||
cookie.expires = now + opts.expires
|
cookie.expires = now + opts.expires
|
||||||
elseif opts.expires < 0 then
|
elseif opts.expires < 0 then
|
||||||
cookie.expires = 1
|
-- Session cookie (default)
|
||||||
cookie.max_age = 0
|
|
||||||
else
|
else
|
||||||
-- opts.expires == 0: Session cookie
|
-- Expire immediately
|
||||||
-- Do nothing (omitting both expires and max-age creates a session cookie)
|
cookie.expires = 0
|
||||||
|
cookie.max_age = 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Security flags
|
-- Set flags (http_only defaults to true)
|
||||||
cookie.secure = (opts.secure ~= false)
|
cookie.secure = opts.secure or false
|
||||||
cookie.http_only = (opts.http_only ~= false)
|
cookie.http_only = (opts.http_only ~= false) -- Default to true unless explicitly set to false
|
||||||
|
|
||||||
-- Store in cookies table
|
-- Store in cookies table
|
||||||
local n = #resp.cookies + 1
|
local n = #resp.cookies + 1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user