module Aws.Sqs.Commands.ListQueues where
import Aws.Response
import Aws.Sqs.Info
import Aws.Sqs.Metadata
import Aws.Sqs.Query
import Aws.Sqs.Response
import Aws.Signature
import Aws.Transaction
import Control.Applicative
import Data.Maybe
import Text.XML.Cursor (($//), (&/))
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
import qualified Text.XML.Cursor as Cu
data ListQueues = ListQueues {
lqQueueNamePrefix :: Maybe T.Text
}deriving (Show)
data ListQueuesResponse = ListQueuesResponse{
lqrQueueUrls :: [T.Text]
} deriving (Show)
instance ResponseConsumer r ListQueuesResponse where
type ResponseMetadata ListQueuesResponse = SqsMetadata
responseConsumer _ = sqsXmlResponseConsumer parse
where
parse el = do
let queues = el $// Cu.laxElement "QueueUrl" &/ Cu.content
return ListQueuesResponse { lqrQueueUrls = queues }
instance SignQuery ListQueues where
type Info ListQueues = SqsInfo
signQuery ListQueues{..} = sqsSignQuery SqsQuery {
sqsQueueName = Nothing,
sqsQuery = [("Action", Just "ListQueues")] ++ catMaybes [
("QueueNamePrefix",) <$> case lqQueueNamePrefix of
Just x -> Just $ Just $ TE.encodeUtf8 x
Nothing -> Nothing]}
instance Transaction ListQueues ListQueuesResponse