-- Copyright (c) 2013-2014 PivotCloud, Inc. -- -- Aws.Kinesis.Commands.DeleteStream -- -- Please feel free to contact us at licensing@pivotmail.com with any -- contributions, additions, or other feedback; we would love to hear from -- you. -- -- Licensed under the Apache License, Version 2.0 (the "License"); you may -- not use this file except in compliance with the License. You may obtain a -- copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -- License for the specific language governing permissions and limitations -- under the License. -- | -- Module: Aws.Kinesis.Commands.DeleteStream -- Copyright: Copyright (c) 2013-2014 PivotCloud, Inc. -- license: Apache License, Version 2.0 -- Maintainer: Lars Kuhtz <lars@alephcloud.com> -- Stability: experimental -- -- /API Version: 2013-12-02/ -- -- This operation deletes a stream and all of its shards and data. You must -- shut down any applications that are operating on the stream before you -- delete the stream. If an application attempts to operate on a deleted -- stream, it will receive the exception ResourceNotFoundException. -- -- If the stream is in the ACTIVE state, you can delete it. After a -- DeleteStream request, the specified stream is in the DELETING state until -- Amazon Kinesis completes the deletion. -- -- Note: Amazon Kinesis might continue to accept data read and write -- operations, such as PutRecord and GetRecords, on a stream in the DELETING -- state until the stream deletion is complete. -- -- When you delete a stream, any shards in that stream are also deleted. -- -- You can use the DescribeStream operation to check the state of the stream, -- which is returned in StreamStatus. -- -- DeleteStream has a limit of 5 transactions per second per account. -- -- <http://docs.aws.amazon.com/kinesis/2013-12-02/APIReference/API_DeleteStream.html> {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} module Aws.Kinesis.Commands.DeleteStream ( DeleteStream(..) , DeleteStreamResponse(..) , DeleteStreamExceptions(..) ) where import Aws.Core import Aws.Kinesis.Core import Aws.Kinesis.Types import Data.Aeson import qualified Data.ByteString.Lazy as LB import Data.Typeable deleteStreamAction :: KinesisAction deleteStreamAction = KinesisDeleteStream data DeleteStream = DeleteStream { deleteStreamStreamName :: !StreamName -- ^ The name of the stream to delete. } deriving (Show, Read, Eq, Ord, Typeable) instance ToJSON DeleteStream where toJSON DeleteStream{..} = object [ "StreamName" .= deleteStreamStreamName ] data DeleteStreamResponse = DeleteStreamResponse deriving (Show, Read, Eq, Ord, Typeable) instance FromJSON DeleteStreamResponse where parseJSON _ = return DeleteStreamResponse instance ResponseConsumer r DeleteStreamResponse where type ResponseMetadata DeleteStreamResponse = KinesisMetadata responseConsumer _ = kinesisResponseConsumer instance SignQuery DeleteStream where type ServiceConfiguration DeleteStream = KinesisConfiguration signQuery cmd = kinesisSignQuery KinesisQuery { kinesisQueryAction = deleteStreamAction , kinesisQueryBody = Just $ LB.toStrict $ encode cmd } instance Transaction DeleteStream DeleteStreamResponse instance AsMemoryResponse DeleteStreamResponse where type MemoryResponse DeleteStreamResponse = DeleteStreamResponse loadToMemory = return -- -------------------------------------------------------------------------- -- -- Exceptions -- -- Currently not used for requests. It's included for future usage -- and as reference. data DeleteStreamExceptions = DeleteStreamLimitExceededException -- ^ /Code 400/ | DeleteStreamResourceNotFoundException -- ^ /Code 400/ deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable)