module Yam.Server.Refresh where

import           Data.Text   (Text, pack)
import           Salak
import           Servant
import           Yam.App
import           Yam.Logger
import           Yam.Prelude

type RefreshEndpoint = "refresh" :> Post '[PlainText] Text

refreshEndpoint :: (HasSalaks cxt, HasLogger cxt, MonadIO m) => Bool -> AppT cxt m Text
refreshEndpoint True = do
  io <- askReload
  ReloadResult{..} <- liftIO io
  if hasError
    then throwS err400 $ showMsg msgs
    else return $ showMsg msgs
refreshEndpoint _     = throwS err401 "Refresh not allowed"

showMsg :: [String] -> Text
showMsg = pack . unlines