diff --git a/srv/content/file_io.hy b/srv/content/file_io.hy index f0fd2d1..d11f4ca 100644 --- a/srv/content/file_io.hy +++ b/srv/content/file_io.hy @@ -29,4 +29,4 @@ (with [f (open path "rb")] (setv data (.read f))) - (return #({"Content-Type" mime-type "Cache-Control" "max-age=0, stale-while-revalidate=31536000"} data))) + (return #({"Content-Type" mime-type "Cache-Control" "max-age=300, stale-while-revalidate=3600"} data))) diff --git a/srv/http_utils/request.hy b/srv/http_utils/request.hy index 8990275..c74553d 100644 --- a/srv/http_utils/request.hy +++ b/srv/http_utils/request.hy @@ -19,8 +19,8 @@ (setv [http-method route http-version] (.split (.decode request-line "utf-8") " ")) (doto request - (assoc :method http-method) - (assoc :route (let + (assoc "method" http-method) + (assoc "route" (let [[_ _ path query _] (urlsplit route)] (dict :path (.join "/" @@ -35,8 +35,8 @@ :parameters (parse-url-encoded query)))) - (assoc :version http-version) - (assoc :headers (dict + (assoc "version" http-version) + (assoc "headers" (dict (dfor header (map (fn [x] (.split (.decode x "utf-8") ": ")) headers) @@ -44,7 +44,7 @@ (get header 1)))) - (assoc :body (branch (in it (. request (get "headers") (get "Content-Type" ""))) + (assoc "body" (branch (in it (. request (get "headers") (get "Content-Type" ""))) "application/x-www-form-urlencoded" (parse-url-encoded (.decode (.join b"\n" body) "utf-8")) "" "" ;;"multipart/form-data" ;(do diff --git a/srv/main.hy b/srv/main.hy index f013dd2..94c2785 100644 --- a/srv/main.hy +++ b/srv/main.hy @@ -16,11 +16,11 @@ (.bind socket #(ADDRESS PORT)) (.listen socket 10) (.debug log "socket bound") - + (while True - (try - (.start - (Thread + (try + (.start + (Thread :target (fn [client-socket address] (try (setv request-data (bytes)) @@ -28,7 +28,7 @@ (+= request-data data) (when (< (len data) 1024) (break))) - + (setv parsed-request (http.request.parse-data request-data)) (.debug log parsed-request) (.info log (+ (str (cond @@ -37,19 +37,19 @@ (setv response (match-request parsed-request)) (.sendall client-socket (http.response.send #** response)) - + (except [e Exception] (.warn log (format-exc)) (.close client-socket)))) :args #(#* (socket.accept)))) - + (except [e Exception] (.warn log (format-exc))))) - + (except [e Exception] (.critical log (format-exc))) - + (finally (.close socket) (.info log "server shut down")))))