hledger/hledger-web/Handler/ImportR.hs
2018-06-24 14:13:04 +02:00

30 lines
771 B
Haskell

{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Handler.ImportR
( postImportR
) where
import Import
import Control.Monad.Trans (lift)
import Control.Monad.Trans.Except
import Handler.Common (showErrors)
-- | Handle a post from the journal import form.
postImportR :: Handler ()
postImportR = runE $ do
((res, _), _) <- lift . runFormPost . renderDivs $ areq fileField "file" Nothing
case res of
FormMissing -> throwE ["No file provided"]
FormFailure es -> throwE es
FormSuccess _ -> do
setMessage "File uploaded successfully"
redirect JournalR
where
runE :: ExceptT [Text] Handler () -> Handler ()
runE f = runExceptT f >>= \case
Left e -> showErrors e >> redirect JournalR
Right x -> pure x