{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.IoT.CreateStream
(
createStream
, CreateStream
, csDescription
, csStreamId
, csFiles
, csRoleARN
, createStreamResponse
, CreateStreamResponse
, csrsStreamVersion
, csrsStreamARN
, csrsDescription
, csrsStreamId
, csrsResponseStatus
) where
import Network.AWS.IoT.Types
import Network.AWS.IoT.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateStream = CreateStream'
{ _csDescription :: !(Maybe Text)
, _csStreamId :: !Text
, _csFiles :: !(List1 StreamFile)
, _csRoleARN :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createStream
:: Text
-> NonEmpty StreamFile
-> Text
-> CreateStream
createStream pStreamId_ pFiles_ pRoleARN_ =
CreateStream'
{ _csDescription = Nothing
, _csStreamId = pStreamId_
, _csFiles = _List1 # pFiles_
, _csRoleARN = pRoleARN_
}
csDescription :: Lens' CreateStream (Maybe Text)
csDescription = lens _csDescription (\ s a -> s{_csDescription = a})
csStreamId :: Lens' CreateStream Text
csStreamId = lens _csStreamId (\ s a -> s{_csStreamId = a})
csFiles :: Lens' CreateStream (NonEmpty StreamFile)
csFiles = lens _csFiles (\ s a -> s{_csFiles = a}) . _List1
csRoleARN :: Lens' CreateStream Text
csRoleARN = lens _csRoleARN (\ s a -> s{_csRoleARN = a})
instance AWSRequest CreateStream where
type Rs CreateStream = CreateStreamResponse
request = postJSON ioT
response
= receiveJSON
(\ s h x ->
CreateStreamResponse' <$>
(x .?> "streamVersion") <*> (x .?> "streamArn") <*>
(x .?> "description")
<*> (x .?> "streamId")
<*> (pure (fromEnum s)))
instance Hashable CreateStream where
instance NFData CreateStream where
instance ToHeaders CreateStream where
toHeaders = const mempty
instance ToJSON CreateStream where
toJSON CreateStream'{..}
= object
(catMaybes
[("description" .=) <$> _csDescription,
Just ("files" .= _csFiles),
Just ("roleArn" .= _csRoleARN)])
instance ToPath CreateStream where
toPath CreateStream'{..}
= mconcat ["/streams/", toBS _csStreamId]
instance ToQuery CreateStream where
toQuery = const mempty
data CreateStreamResponse = CreateStreamResponse'
{ _csrsStreamVersion :: !(Maybe Nat)
, _csrsStreamARN :: !(Maybe Text)
, _csrsDescription :: !(Maybe Text)
, _csrsStreamId :: !(Maybe Text)
, _csrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createStreamResponse
:: Int
-> CreateStreamResponse
createStreamResponse pResponseStatus_ =
CreateStreamResponse'
{ _csrsStreamVersion = Nothing
, _csrsStreamARN = Nothing
, _csrsDescription = Nothing
, _csrsStreamId = Nothing
, _csrsResponseStatus = pResponseStatus_
}
csrsStreamVersion :: Lens' CreateStreamResponse (Maybe Natural)
csrsStreamVersion = lens _csrsStreamVersion (\ s a -> s{_csrsStreamVersion = a}) . mapping _Nat
csrsStreamARN :: Lens' CreateStreamResponse (Maybe Text)
csrsStreamARN = lens _csrsStreamARN (\ s a -> s{_csrsStreamARN = a})
csrsDescription :: Lens' CreateStreamResponse (Maybe Text)
csrsDescription = lens _csrsDescription (\ s a -> s{_csrsDescription = a})
csrsStreamId :: Lens' CreateStreamResponse (Maybe Text)
csrsStreamId = lens _csrsStreamId (\ s a -> s{_csrsStreamId = a})
csrsResponseStatus :: Lens' CreateStreamResponse Int
csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a})
instance NFData CreateStreamResponse where