{-# LANGUAGE OverloadedStrings #-} module Data.MIME.Untweaked where import Data.Foldable (fold) import Data.List.NonEmpty (intersperse) import Data.MIME import qualified Data.ByteString.Builder as Builder newtype Untweaked = Untweaked MIME toUntweaked :: Message ctx MIME -> Message ctx Untweaked toUntweaked (Message h b) = Message h (Untweaked b) instance RenderMessage Untweaked where buildBody _h (Untweaked z) = Just $ case z of Part partbody -> Builder.byteString partbody Encapsulated msg -> buildMessage . toUntweaked $ msg Multipart _sub b xs -> let boundary = "--" <> Builder.byteString (unBoundary b) in boundary <> "\r\n" <> fold (intersperse ("\r\n" <> boundary <> "\r\n") (fmap (buildMessage . toUntweaked) xs)) <> "\r\n" <> boundary <> "--\r\n" FailedParse _ bs -> Builder.byteString bs