module Aws.Ses.Commands.GetIdentityVerificationAttributes ( GetIdentityVerificationAttributes(..) , GetIdentityVerificationAttributesResponse(..) , IdentityVerificationAttributes(..) ) where import Data.Text (Text) import qualified Data.ByteString.Char8 as BS import Data.Maybe (listToMaybe) import Control.Applicative ((<$>)) import Data.Text.Encoding as T (encodeUtf8) import Data.Typeable import Text.XML.Cursor (($//), ($/), (&|), laxElement) import Aws.Core import Aws.Ses.Core -- | Get verification status for a list of email addresses and/or domains data GetIdentityVerificationAttributes = GetIdentityVerificationAttributes [Text] deriving (Eq, Ord, Show, Typeable) -- | ServiceConfiguration: 'SesConfiguration' instance SignQuery GetIdentityVerificationAttributes where type ServiceConfiguration GetIdentityVerificationAttributes = SesConfiguration signQuery (GetIdentityVerificationAttributes identities) = sesSignQuery $ ("Action", "GetIdentityVerificationAttributes") : zip (enumMember <$> [1..]) (T.encodeUtf8 <$> identities) where enumMember (n :: Int) = BS.append "Identities.member." (BS.pack $ show n) data IdentityVerificationAttributes = IdentityVerificationAttributes { ivIdentity :: Text , ivVerificationStatus :: Text , ivVerificationToken :: Maybe Text } deriving (Eq, Ord, Show, Typeable) -- | The response sent back by Amazon SES after a -- 'GetIdentityVerificationAttributes' command. data GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse [IdentityVerificationAttributes] deriving (Eq, Ord, Show, Typeable) instance ResponseConsumer GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse where type ResponseMetadata GetIdentityVerificationAttributesResponse = SesMetadata responseConsumer _ _ = sesResponseConsumer $ \cursor -> do let buildAttr e = do ivIdentity <- force "Missing Key" $ e $/ elContent "key" ivVerificationStatus <- force "Missing Verification Status" $ e $// elContent "VerificationStatus" let ivVerificationToken = listToMaybe $ e $// elContent "VerificationToken" return IdentityVerificationAttributes {..} attributes <- sequence $ cursor $// laxElement "entry" &| buildAttr return $ GetIdentityVerificationAttributesResponse attributes instance Transaction GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse where instance AsMemoryResponse GetIdentityVerificationAttributesResponse where type MemoryResponse GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse loadToMemory = return