{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-deserializer.html

module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDeserializer where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamHiveJsonSerDe
import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOpenXJsonSerDe

-- | Full data type definition for KinesisFirehoseDeliveryStreamDeserializer.
-- See 'kinesisFirehoseDeliveryStreamDeserializer' for a more convenient
-- constructor.
data KinesisFirehoseDeliveryStreamDeserializer =
  KinesisFirehoseDeliveryStreamDeserializer
  { _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe :: Maybe KinesisFirehoseDeliveryStreamHiveJsonSerDe
  , _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe :: Maybe KinesisFirehoseDeliveryStreamOpenXJsonSerDe
  } deriving (Show, Eq)

instance ToJSON KinesisFirehoseDeliveryStreamDeserializer where
  toJSON KinesisFirehoseDeliveryStreamDeserializer{..} =
    object $
    catMaybes
    [ fmap (("HiveJsonSerDe",) . toJSON) _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe
    , fmap (("OpenXJsonSerDe",) . toJSON) _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe
    ]

-- | Constructor for 'KinesisFirehoseDeliveryStreamDeserializer' containing
-- required fields as arguments.
kinesisFirehoseDeliveryStreamDeserializer
  :: KinesisFirehoseDeliveryStreamDeserializer
kinesisFirehoseDeliveryStreamDeserializer  =
  KinesisFirehoseDeliveryStreamDeserializer
  { _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe = Nothing
  , _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-deserializer.html#cfn-kinesisfirehose-deliverystream-deserializer-hivejsonserde
kfdsdHiveJsonSerDe :: Lens' KinesisFirehoseDeliveryStreamDeserializer (Maybe KinesisFirehoseDeliveryStreamHiveJsonSerDe)
kfdsdHiveJsonSerDe = lens _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe (\s a -> s { _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-deserializer.html#cfn-kinesisfirehose-deliverystream-deserializer-openxjsonserde
kfdsdOpenXJsonSerDe :: Lens' KinesisFirehoseDeliveryStreamDeserializer (Maybe KinesisFirehoseDeliveryStreamOpenXJsonSerDe)
kfdsdOpenXJsonSerDe = lens _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe (\s a -> s { _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe = a })