module Freckle.App.Wai
( noCacheMiddleware
, denyFrameEmbeddingMiddleware
, corsMiddleware
, requestLogger
, addThreadContextFromRequest
, newOpenTelemetryWaiMiddleware
, addThreadContextFromTracing
, addThreadContextFromStatsTags
, requestStats
) where
import Freckle.App.Prelude
import Freckle.App.OpenTelemetry.ThreadContext
import Network.Wai
import Network.Wai.Middleware.AddHeaders
import Network.Wai.Middleware.Cors
import Network.Wai.Middleware.Logging
import Network.Wai.Middleware.Stats
import OpenTelemetry.Instrumentation.Wai
noCacheMiddleware :: Middleware
noCacheMiddleware :: Middleware
noCacheMiddleware =
[(ByteString, ByteString)] -> Middleware
addHeaders [(ByteString
"Cache-Control", ByteString
"no-cache, no-store, max-age=0, private")]
denyFrameEmbeddingMiddleware :: Middleware
denyFrameEmbeddingMiddleware :: Middleware
denyFrameEmbeddingMiddleware = [(ByteString, ByteString)] -> Middleware
addHeaders [(ByteString
"X-Frame-Options", ByteString
"DENY")]
addThreadContextFromTracing :: Middleware
addThreadContextFromTracing :: Middleware
addThreadContextFromTracing Application
app Request
req = IO ResponseReceived -> IO ResponseReceived
forall (m :: * -> *) a. (MonadIO m, MonadMask m) => m a -> m a
withTraceContext (IO ResponseReceived -> IO ResponseReceived)
-> ((Response -> IO ResponseReceived) -> IO ResponseReceived)
-> (Response -> IO ResponseReceived)
-> IO ResponseReceived
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Application
app Request
req