postmark-0.2.7: src/Network/Api/Postmark/Response.hs
module Network.Api.Postmark.Response (
PostmarkResponse (..),
PostmarkUnexpectedType (..),
PostmarkResponse',
syntaxErr,
formatErr
) where
import qualified Data.ByteString.Lazy as BL
import Data.Text
import Network.Api.Postmark.Data (toText)
import Network.Api.Postmark.Error
data PostmarkResponse e a =
PostmarkSuccess a
| PostmarkUnauthorized
| PostmarkFailure e
| PostmarkUnexpected PostmarkUnexpectedType Int (Maybe Text) (Maybe Text)
deriving (Eq, Show)
data PostmarkUnexpectedType =
ServerError
| UnexpectedResponseCode
| JsonSyntaxError
| JsonFormatError
deriving (Eq, Show)
type PostmarkResponse' a =
PostmarkResponse PostmarkError a
syntaxErr :: Int -> BL.ByteString -> Text -> PostmarkResponse e a
syntaxErr code body msg = PostmarkUnexpected JsonSyntaxError code (Just . toText $ body) (Just msg)
formatErr :: Int -> BL.ByteString -> Text -> PostmarkResponse e a
formatErr code body msg = PostmarkUnexpected JsonFormatError code (Just . toText $ body) (Just msg)