@@ -32,7 +32,6 @@ import Network.Wai.Internal qualified as Wai
3232import Network.Wai.Middleware.Cors
3333import Network.Wai.Middleware.Gzip qualified as Gzip
3434import Network.Wai.Middleware.RequestLogger (logStdoutDev )
35- import Network.Wai.Middleware.Routed (routedMiddleware )
3635import Servant
3736import Share.App
3837import Share.BackgroundJobs qualified as BackgroundJobs
@@ -123,14 +122,19 @@ mkShareServer env = do
123122 appServer reqTagsKey
124123 & hoistServerWithContext appAPI ctxType (toServantHandler env)
125124 & serveWithContext appAPI ctx
126- & reqLoggerMiddleware
127125 & requestIDMiddleware
128126 & requestMetricsMiddleware Web. api
129127 & metricsMiddleware
130128 & skipOnLocal corsMiddleware
131- & gzipMiddleware
129+ & Gzip. gzip gzipSettings
130+ & reqLoggerMiddleware
132131 pure waiApp
133132 where
133+ gzipSettings =
134+ Gzip. def
135+ { Gzip. gzipFiles = Gzip. GzipCompress ,
136+ Gzip. gzipCheckMime = \ mime -> Gzip. defaultCheckMime mime || mime == " application/cbor"
137+ }
134138 ctxType = Proxy @ (AuthCheckCtx .++ '[Cookies. CookieSettings , JWT. JWTSettings ])
135139 uriFromReq req =
136140 (Env. apiOrigin env)
@@ -216,19 +220,6 @@ mkShareServer env = do
216220 appAPI = Proxy
217221 skipOnLocal :: Middleware -> Middleware
218222 skipOnLocal m = if Deployment. onLocal then id else m
219- gzipMiddleware =
220- -- Only apply gzipping on subsections of the api which tend to have sufficiently
221- -- large payloads. Gzipping small payloads is a waste of time and might actually
222- -- inflate them.
223- -- Normally this would be done by looking at Content-Length headers, but Wai sends
224- -- responses in the 'chunked' format and doesn't usually provide a Content-Length.
225- flip routedMiddleware (Gzip. gzip Gzip. def) \ case
226- (" codebases" : _) -> True
227- (" search" : _) -> True
228- (" sync" : _) -> True
229- (" ucm" : " v1" : " sync" : _) -> True
230- (" ucm" : " v2" : " sync" : _) -> True
231- _ -> False
232223 corsPolicy :: Request -> Maybe CorsResourcePolicy
233224 corsPolicy req = case Deployment. deployment of
234225 Deployment. Local -> Nothing
@@ -326,7 +317,10 @@ verboseRequestResponseLogger app req responder = do
326317 case requestBodyLength req of
327318 ChunkedBody -> putStrLn " Request Body: Unknown Size"
328319 KnownLength wo -> putStrLn $ " Request Body: " <> show wo <> " bytes"
320+ putStrLn $ " Request Headers: " <> show (requestHeaders req)
329321 logStdoutDev app req $ \ resp -> do
322+ -- Response headers
323+ putStrLn $ " Response Headers: " <> show (responseHeaders resp)
330324 BL. putStr $ " Response Body: "
331325 case resp of
332326 Wai. ResponseFile _ _ filePath _ -> putStrLn $ " <ResponseFile: " <> filePath <> " >"
0 commit comments