packages feed

aws-0.0.1: Aws/S3/Error.hs

{-# LANGUAGE DeriveDataTypeable, MultiParamTypeClasses #-}
module Aws.S3.Error
where

import           Aws.Metadata
import           Aws.S3.Metadata
import           Control.Monad.Error.Class
import           Data.Typeable
import           Text.XML.Monad
import qualified Control.Exception         as C

data S3Error
    = S3XmlError { 
        fromS3XmlError :: XmlError
      , s3XmlErrorMetadata :: Maybe S3Metadata
      }
    deriving (Show, Typeable)

instance C.Exception S3Error

instance FromXmlError S3Error where
    fromXmlError = flip S3XmlError Nothing

instance Error S3Error where
    noMsg = fromXmlError noMsg
    strMsg = fromXmlError . strMsg

instance WithMetadata S3Error S3Metadata where
    getMetadata = s3XmlErrorMetadata
    setMetadata m a = a { s3XmlErrorMetadata = Just m }