{-# LANGUAGE FlexibleContexts #-} -- | mostly the monad the service runs in module Server.Util (Service, ServiceM, runService, redirect) where import Control.Monad.Logger (LoggingT, runStderrLoggingT) import Data.ByteString (ByteString) import Servant (Handler, ServerError, ServerT, err302, errHeaders, throwError) type ServiceM = LoggingT Handler type Service api = ServerT api ServiceM runService :: ServiceM a -> Handler a runService = runStderrLoggingT redirect :: ByteString -> ServiceM a redirect path = throwError $ err302 { errHeaders = [("Location", path)] }