-- Copyright (c) 2013-2015 PivotCloud, Inc. -- -- Aws.Kinesis.Client.Consumer.Internal.Kit -- -- 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. {-# LANGUAGE UnicodeSyntax #-} -- | -- Module: Aws.Kinesis.Client.Consumer.Internal.Kit -- Copyright: Copyright © 2013-2015 PivotCloud, Inc. -- License: Apache-2.0 -- Maintainer: Jon Sterling -- Stability: experimental -- module Aws.Kinesis.Client.Consumer.Internal.Kit ( ConsumerKit(..) , makeConsumerKit , ckKinesisKit , ckStreamName , ckBatchSize , ckIteratorType , ckSavedStreamState ) where import Aws.Kinesis import Aws.Kinesis.Client.Common import Aws.Kinesis.Client.Consumer.Internal.SavedStreamState import Control.Lens import Numeric.Natural -- | The 'ConsumerKit' contains what is needed to initialize a 'KinesisConsumer'. data ConsumerKit = ConsumerKit { _ckKinesisKit ∷ !KinesisKit -- ^ The credentials and configuration for making requests to AWS Kinesis. , _ckStreamName ∷ !StreamName -- ^ The name of the stream to consume from. , _ckBatchSize ∷ !Natural -- ^ The number of records to fetch at once from the stream. , _ckIteratorType ∷ !ShardIteratorType -- ^ The type of iterator to consume. , _ckSavedStreamState ∷ !(Maybe SavedStreamState) -- ^ Optionally, an initial stream state. The iterator type in -- '_ckIteratorType' will be used for any shards not present in the saved -- stream state; otherwise, 'AfterSequenceNumber' will be used. } -- | Create a 'ConsumerKit' with default settings (using iterator type -- 'Latest' and a batch size of @200@). -- makeConsumerKit ∷ KinesisKit → StreamName → ConsumerKit makeConsumerKit kinesisKit stream = ConsumerKit { _ckKinesisKit = kinesisKit , _ckStreamName = stream , _ckBatchSize = 200 , _ckIteratorType = Latest , _ckSavedStreamState = Nothing } -- | A lens for '_ckKinesisKit'. -- ckKinesisKit ∷ Lens' ConsumerKit KinesisKit ckKinesisKit = lens _ckKinesisKit $ \ck kk → ck { _ckKinesisKit = kk } -- | A lens for '_ckStreamName'. -- ckStreamName ∷ Lens' ConsumerKit StreamName ckStreamName = lens _ckStreamName $ \ck sn → ck { _ckStreamName = sn } -- | A lens for '_ckBatchSize'. -- ckBatchSize ∷ Lens' ConsumerKit Natural ckBatchSize = lens _ckBatchSize $ \ck bs → ck { _ckBatchSize = bs } -- | A lens for '_ckIteratorType'. -- ckIteratorType ∷ Lens' ConsumerKit ShardIteratorType ckIteratorType = lens _ckIteratorType $ \ck it → ck { _ckIteratorType = it } -- | A lens for '_ckSavedStreamState'. -- ckSavedStreamState ∷ Lens' ConsumerKit (Maybe SavedStreamState) ckSavedStreamState = lens _ckSavedStreamState $ \ck ss → ck { _ckSavedStreamState = ss }