{-# LANGUAGE RecordWildCards, TypeFamilies, FlexibleInstances, MultiParamTypeClasses, OverloadedStrings, TupleSections #-} module Aws.Sqs.Commands.AddPermission where import Aws.Response import Aws.Sqs.Info import Aws.Sqs.Metadata import Aws.Sqs.Model import Aws.Sqs.Query import Aws.Sqs.Response import Aws.Signature import Aws.Transaction import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Network.HTTP.Types as HTTP data AddPermission = AddPermission{ apLabel :: T.Text, apPermissions :: [(T.Text,SqsPermission)], apQueueName :: QueueName }deriving (Show) data AddPermissionResponse = AddPermissionResponse{ } deriving (Show) formatPermissions :: [(T.Text,SqsPermission)] -> [HTTP.QueryItem] formatPermissions perms = concat $ zipWith(\ x y -> [(B.pack $ "AwsAccountId." ++ show y, Just $ B.pack $ T.unpack $ fst x), (B.pack $ "ActionName." ++ show y, Just $ B.pack $ T.unpack $ printPermission $ snd x)]) perms [1 :: Integer ..] instance ResponseConsumer r AddPermissionResponse where type ResponseMetadata AddPermissionResponse = SqsMetadata responseConsumer _ = sqsXmlResponseConsumer parse where parse _ = do return AddPermissionResponse {} instance SignQuery AddPermission where type Info AddPermission = SqsInfo signQuery AddPermission {..} = sqsSignQuery SqsQuery { sqsQueueName = Just apQueueName, sqsQuery = [("Action", Just "AddPermission"), ("QueueName", Just $ B.pack $ T.unpack $ printQueueName apQueueName), ("Label", Just $ B.pack $ T.unpack apLabel)] ++ formatPermissions apPermissions} instance Transaction AddPermission AddPermissionResponse