summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang')
-rw-r--r--lambda-calcul/haskell/src/Minilang/Server.hs18
1 files changed, 12 insertions, 6 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/Server.hs b/lambda-calcul/haskell/src/Minilang/Server.hs
index 68d991a..4252669 100644
--- a/lambda-calcul/haskell/src/Minilang/Server.hs
+++ b/lambda-calcul/haskell/src/Minilang/Server.hs
@@ -53,7 +53,7 @@ startServer serverPort = do
envs <- newTVarIO mempty
logger <- newLog "minilang"
loggerMiddleware <- runHTTPLog logger
- challenges <- readChallenges
+ challenges <- readChallenges logger
env <- newStdGen >>= (`makeEnv` challenges)
let app =
loggerMiddleware $
@@ -75,14 +75,20 @@ startServer serverPort = do
destination = Callback (\str -> logInfo logger (decode @Value $ fromStrict $ fromLogStr str))
}
-readChallenges :: IO [Challenge]
-readChallenges = do
+readChallenges :: LoggerEnv IO -> IO [Challenge]
+readChallenges logger = do
file <- try $ LBS.readFile "challenges.json"
case file of
- Left (_ :: IOError) -> pure defaultChallenges
+ Left (_ :: IOError) -> do
+ logInfo logger $ object ["action" .= ("NoChallengesFile" :: Text)]
+ pure defaultChallenges
Right content -> case eitherDecode content of
- Right challenges -> pure challenges
- Left _ -> pure defaultChallenges
+ Right challenges -> do
+ logInfo logger $ object ["action" .= ("LoadedChallenges" :: Text), "count" .= length challenges]
+ pure challenges
+ Left err -> do
+ logError logger $ object ["action" .= ("FailedToLoadChallenges" :: Text), "error" .= show err]
+ pure defaultChallenges
serveAPI :: Env -> Application
serveAPI env =