aboutsummaryrefslogtreecommitdiff
path: root/hsm-web/Hsm
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-web/Hsm')
-rw-r--r--hsm-web/Hsm/Web.hs14
1 files changed, 10 insertions, 4 deletions
diff --git a/hsm-web/Hsm/Web.hs b/hsm-web/Hsm/Web.hs
index aaf67d2..ae8b1f2 100644
--- a/hsm-web/Hsm/Web.hs
+++ b/hsm-web/Hsm/Web.hs
@@ -14,8 +14,9 @@ import Effectful.Dispatch.Static.Primitive (Env)
import Effectful.Exception (finally)
import Hsm.Log (Log, Logs, Severity (Info, Trace), logMsg, makeLoggerIO)
import Network.Wai.Handler.Warp (defaultSettings, setLogger)
+import Network.Wai.Middleware.Static (addBase, noDots, staticPolicy, (>->))
import Paths_hsm_web (getDataFileName)
-import Web.Scotty (Options (settings, verbose), defaultOptions, file, get, scottyOpts)
+import Web.Scotty (Options (settings, verbose), defaultOptions, file, get, middleware, scottyOpts)
data Web (a :: * -> *) (b :: *)
@@ -25,7 +26,11 @@ newtype instance StaticRep Web
= Web Options
server :: Options -> Env es -> IO ()
-server options _ = getDataFileName "Html/index.html" >>= scottyOpts options . get "/" . file
+server options _ = do
+ dist <- getDataFileName "Client/dist/"
+ scottyOpts options $ do
+ get "/" . file $ dist <> "index.html"
+ middleware . staticPolicy $ noDots >-> addBase dist
runServer :: (Log "web" :> es, Web :> es) => Eff es ()
runServer = finally startServer stopServer
@@ -39,7 +44,8 @@ runServer = finally startServer stopServer
runWeb :: (IOE :> es, Logs '["scotty", "web"] es) => Eff (Web : es) a -> Eff es a
runWeb action = do
logMsg @"web" Info "Registering logger for scotty web server"
- scottyLogger <- makeLoggerIO @"scotty" >>= return . logRequest
- evalStaticRep (Web $ defaultOptions{verbose = 0, settings = setLogger scottyLogger defaultSettings}) action
+ scottyLogger <- logRequest <$> makeLoggerIO @"scotty"
+ evalStaticRep (Web $ options scottyLogger) action
where
logRequest loggerIO request status fileSize = loggerIO Trace $ unwords [show request, show status, show fileSize]
+ options logger = defaultOptions{verbose = 0, settings = setLogger logger defaultSettings}