{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module Network.AWS.KinesisVideoArchivedMedia.Types.Product where
import Network.AWS.KinesisVideoArchivedMedia.Types.Sum
import Network.AWS.Lens
import Network.AWS.Prelude
data Fragment = Fragment'
{ _fFragmentLengthInMilliseconds :: !(Maybe Integer)
, _fServerTimestamp :: !(Maybe POSIX)
, _fFragmentSizeInBytes :: !(Maybe Integer)
, _fFragmentNumber :: !(Maybe Text)
, _fProducerTimestamp :: !(Maybe POSIX)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
fragment
:: Fragment
fragment =
Fragment'
{ _fFragmentLengthInMilliseconds = Nothing
, _fServerTimestamp = Nothing
, _fFragmentSizeInBytes = Nothing
, _fFragmentNumber = Nothing
, _fProducerTimestamp = Nothing
}
fFragmentLengthInMilliseconds :: Lens' Fragment (Maybe Integer)
fFragmentLengthInMilliseconds = lens _fFragmentLengthInMilliseconds (\ s a -> s{_fFragmentLengthInMilliseconds = a})
fServerTimestamp :: Lens' Fragment (Maybe UTCTime)
fServerTimestamp = lens _fServerTimestamp (\ s a -> s{_fServerTimestamp = a}) . mapping _Time
fFragmentSizeInBytes :: Lens' Fragment (Maybe Integer)
fFragmentSizeInBytes = lens _fFragmentSizeInBytes (\ s a -> s{_fFragmentSizeInBytes = a})
fFragmentNumber :: Lens' Fragment (Maybe Text)
fFragmentNumber = lens _fFragmentNumber (\ s a -> s{_fFragmentNumber = a})
fProducerTimestamp :: Lens' Fragment (Maybe UTCTime)
fProducerTimestamp = lens _fProducerTimestamp (\ s a -> s{_fProducerTimestamp = a}) . mapping _Time
instance FromJSON Fragment where
parseJSON
= withObject "Fragment"
(\ x ->
Fragment' <$>
(x .:? "FragmentLengthInMilliseconds") <*>
(x .:? "ServerTimestamp")
<*> (x .:? "FragmentSizeInBytes")
<*> (x .:? "FragmentNumber")
<*> (x .:? "ProducerTimestamp"))
instance Hashable Fragment where
instance NFData Fragment where
data FragmentSelector = FragmentSelector'
{ _fsFragmentSelectorType :: !FragmentSelectorType
, _fsTimestampRange :: !TimestampRange
} deriving (Eq, Read, Show, Data, Typeable, Generic)
fragmentSelector
:: FragmentSelectorType
-> TimestampRange
-> FragmentSelector
fragmentSelector pFragmentSelectorType_ pTimestampRange_ =
FragmentSelector'
{ _fsFragmentSelectorType = pFragmentSelectorType_
, _fsTimestampRange = pTimestampRange_
}
fsFragmentSelectorType :: Lens' FragmentSelector FragmentSelectorType
fsFragmentSelectorType = lens _fsFragmentSelectorType (\ s a -> s{_fsFragmentSelectorType = a})
fsTimestampRange :: Lens' FragmentSelector TimestampRange
fsTimestampRange = lens _fsTimestampRange (\ s a -> s{_fsTimestampRange = a})
instance Hashable FragmentSelector where
instance NFData FragmentSelector where
instance ToJSON FragmentSelector where
toJSON FragmentSelector'{..}
= object
(catMaybes
[Just
("FragmentSelectorType" .= _fsFragmentSelectorType),
Just ("TimestampRange" .= _fsTimestampRange)])
data TimestampRange = TimestampRange'
{ _trStartTimestamp :: !POSIX
, _trEndTimestamp :: !POSIX
} deriving (Eq, Read, Show, Data, Typeable, Generic)
timestampRange
:: UTCTime
-> UTCTime
-> TimestampRange
timestampRange pStartTimestamp_ pEndTimestamp_ =
TimestampRange'
{ _trStartTimestamp = _Time # pStartTimestamp_
, _trEndTimestamp = _Time # pEndTimestamp_
}
trStartTimestamp :: Lens' TimestampRange UTCTime
trStartTimestamp = lens _trStartTimestamp (\ s a -> s{_trStartTimestamp = a}) . _Time
trEndTimestamp :: Lens' TimestampRange UTCTime
trEndTimestamp = lens _trEndTimestamp (\ s a -> s{_trEndTimestamp = a}) . _Time
instance Hashable TimestampRange where
instance NFData TimestampRange where
instance ToJSON TimestampRange where
toJSON TimestampRange'{..}
= object
(catMaybes
[Just ("StartTimestamp" .= _trStartTimestamp),
Just ("EndTimestamp" .= _trEndTimestamp)])