module Network.Mail.Parse (parseMessage) where

import Network.Mail.Parse.Types
import Network.Mail.Parse.Parsers.Message (messageParser)

import qualified Data.ByteString.Char8 as BSC
import Data.Attoparsec.ByteString
import Control.Monad (join)
import qualified Data.Text as T
import Data.Either.Combinators (mapLeft)

-- |Parses a single message of any mimetype
parseMessage :: BSC.ByteString -> Either ErrorMessage EmailMessage
parseMessage message =
  join . mapLeft T.pack $ parseOnly (messageParser Nothing Nothing) message