module Mensam.Server.Server.Route.Static where import Mensam.API.Route.Static import Mensam.Server.Application.Configured.Class import Mensam.Server.Configuration import Mensam.Server.Server.Err404 import Mensam.Server.Server.FileServer import Control.Monad.IO.Unlift import Control.Monad.Logger.CallStack import Network.Wai.Trans import Servant import Servant.RawM.Server qualified as RawM import WaiAppStatic.Types handler :: (MonadConfigured m, MonadLogger m, MonadUnliftIO m) => ServerT API m handler :: forall (m :: * -> *). (MonadConfigured m, MonadLogger m, MonadUnliftIO m) => ServerT API m handler = do FilePath directory <- Configuration -> FilePath configDirectoryStatic (Configuration -> FilePath) -> m Configuration -> m FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> m Configuration forall (m :: * -> *). MonadConfigured m => m Configuration configuration Application fallbackApplication <- ApplicationT m -> m Application forall (m :: * -> *). MonadUnliftIO m => ApplicationT m -> m Application runApplicationT ApplicationT m forall (m :: * -> *). (MonadConfigured m, MonadLogger m) => ApplicationT m application404 Text -> m () forall (m :: * -> *). (HasCallStack, MonadLogger m) => Text -> m () logInfo Text "Serve static file download." StaticSettings settings <- FilePath -> m StaticSettings forall (m :: * -> *). (MonadLogger m, MonadUnliftIO m) => FilePath -> m StaticSettings fileServerSettings FilePath directory StaticSettings -> ServerT (RawM' Any) m forall (m :: * -> *) serverType. Applicative m => StaticSettings -> ServerT (RawM' serverType) m RawM.serveDirectoryWith StaticSettings settings {ss404Handler = Just fallbackApplication}