Catch exceptions
This commit is contained in:
		@@ -5,7 +5,6 @@ import qualified Data.Text as T
 | 
			
		||||
import Conduit
 | 
			
		||||
import qualified Data.Conduit.Binary as CB
 | 
			
		||||
import qualified Data.Conduit.Combinators as C
 | 
			
		||||
import qualified Data.Conduit.List as CL
 | 
			
		||||
import qualified Data.Conduit.Text as CT
 | 
			
		||||
 | 
			
		||||
import Data.Email
 | 
			
		||||
@@ -15,7 +14,7 @@ import Data.Email.Header
 | 
			
		||||
import System.IO
 | 
			
		||||
       (stdin)
 | 
			
		||||
 | 
			
		||||
combine :: (MonadResource m, MonadThrow m, MonadIO m) => ConduitM FilePath Header m ()
 | 
			
		||||
combine :: (MonadUnliftIO m, MonadResource m, MonadThrow m, MonadIO m) => ConduitM FilePath Header m ()
 | 
			
		||||
combine = await >>= \case
 | 
			
		||||
  Nothing -> pure ()
 | 
			
		||||
  Just path -> (CB.sourceFile path .| parseEmail) >> combine
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
{-# LANGUAGE TypeApplications #-}
 | 
			
		||||
module Data.Email where
 | 
			
		||||
 | 
			
		||||
import Data.Email.Header
 | 
			
		||||
@@ -9,5 +10,7 @@ import qualified Data.Conduit.Text as CT
 | 
			
		||||
import Data.ByteString
 | 
			
		||||
       (ByteString)
 | 
			
		||||
 | 
			
		||||
parseEmail :: (MonadThrow m, Monad m) => ConduitM ByteString Header m ()
 | 
			
		||||
parseEmail = CT.decode CT.utf8 .| CT.lines .| C.concatMap decode
 | 
			
		||||
parseEmail :: (MonadUnliftIO m, MonadThrow m, Monad m) => ConduitM ByteString Header m ()
 | 
			
		||||
parseEmail = catchC (CT.decode CT.utf8) err .| CT.lines .| C.concatMap decode
 | 
			
		||||
  where
 | 
			
		||||
    err e = liftIO (print @CT.TextException e) >> yield ""
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user