{-# 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.CreateJob
(
createJob
, CreateJob
, cjJobExecutionsRolloutConfig
, cjDocumentSource
, cjDocumentParameters
, cjPresignedURLConfig
, cjDocument
, cjDescription
, cjTargetSelection
, cjJobId
, cjTargets
, createJobResponse
, CreateJobResponse
, cjrsJobId
, cjrsJobARN
, cjrsDescription
, cjrsResponseStatus
) 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 CreateJob = CreateJob'
{ _cjJobExecutionsRolloutConfig :: !(Maybe JobExecutionsRolloutConfig)
, _cjDocumentSource :: !(Maybe Text)
, _cjDocumentParameters :: !(Maybe (Map Text Text))
, _cjPresignedURLConfig :: !(Maybe PresignedURLConfig)
, _cjDocument :: !(Maybe Text)
, _cjDescription :: !(Maybe Text)
, _cjTargetSelection :: !(Maybe TargetSelection)
, _cjJobId :: !Text
, _cjTargets :: !(List1 Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createJob
:: Text
-> NonEmpty Text
-> CreateJob
createJob pJobId_ pTargets_ =
CreateJob'
{ _cjJobExecutionsRolloutConfig = Nothing
, _cjDocumentSource = Nothing
, _cjDocumentParameters = Nothing
, _cjPresignedURLConfig = Nothing
, _cjDocument = Nothing
, _cjDescription = Nothing
, _cjTargetSelection = Nothing
, _cjJobId = pJobId_
, _cjTargets = _List1 # pTargets_
}
cjJobExecutionsRolloutConfig :: Lens' CreateJob (Maybe JobExecutionsRolloutConfig)
cjJobExecutionsRolloutConfig = lens _cjJobExecutionsRolloutConfig (\ s a -> s{_cjJobExecutionsRolloutConfig = a})
cjDocumentSource :: Lens' CreateJob (Maybe Text)
cjDocumentSource = lens _cjDocumentSource (\ s a -> s{_cjDocumentSource = a})
cjDocumentParameters :: Lens' CreateJob (HashMap Text Text)
cjDocumentParameters = lens _cjDocumentParameters (\ s a -> s{_cjDocumentParameters = a}) . _Default . _Map
cjPresignedURLConfig :: Lens' CreateJob (Maybe PresignedURLConfig)
cjPresignedURLConfig = lens _cjPresignedURLConfig (\ s a -> s{_cjPresignedURLConfig = a})
cjDocument :: Lens' CreateJob (Maybe Text)
cjDocument = lens _cjDocument (\ s a -> s{_cjDocument = a})
cjDescription :: Lens' CreateJob (Maybe Text)
cjDescription = lens _cjDescription (\ s a -> s{_cjDescription = a})
cjTargetSelection :: Lens' CreateJob (Maybe TargetSelection)
cjTargetSelection = lens _cjTargetSelection (\ s a -> s{_cjTargetSelection = a})
cjJobId :: Lens' CreateJob Text
cjJobId = lens _cjJobId (\ s a -> s{_cjJobId = a})
cjTargets :: Lens' CreateJob (NonEmpty Text)
cjTargets = lens _cjTargets (\ s a -> s{_cjTargets = a}) . _List1
instance AWSRequest CreateJob where
type Rs CreateJob = CreateJobResponse
request = putJSON ioT
response
= receiveJSON
(\ s h x ->
CreateJobResponse' <$>
(x .?> "jobId") <*> (x .?> "jobArn") <*>
(x .?> "description")
<*> (pure (fromEnum s)))
instance Hashable CreateJob where
instance NFData CreateJob where
instance ToHeaders CreateJob where
toHeaders = const mempty
instance ToJSON CreateJob where
toJSON CreateJob'{..}
= object
(catMaybes
[("jobExecutionsRolloutConfig" .=) <$>
_cjJobExecutionsRolloutConfig,
("documentSource" .=) <$> _cjDocumentSource,
("documentParameters" .=) <$> _cjDocumentParameters,
("presignedUrlConfig" .=) <$> _cjPresignedURLConfig,
("document" .=) <$> _cjDocument,
("description" .=) <$> _cjDescription,
("targetSelection" .=) <$> _cjTargetSelection,
Just ("targets" .= _cjTargets)])
instance ToPath CreateJob where
toPath CreateJob'{..}
= mconcat ["/jobs/", toBS _cjJobId]
instance ToQuery CreateJob where
toQuery = const mempty
data CreateJobResponse = CreateJobResponse'
{ _cjrsJobId :: !(Maybe Text)
, _cjrsJobARN :: !(Maybe Text)
, _cjrsDescription :: !(Maybe Text)
, _cjrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createJobResponse
:: Int
-> CreateJobResponse
createJobResponse pResponseStatus_ =
CreateJobResponse'
{ _cjrsJobId = Nothing
, _cjrsJobARN = Nothing
, _cjrsDescription = Nothing
, _cjrsResponseStatus = pResponseStatus_
}
cjrsJobId :: Lens' CreateJobResponse (Maybe Text)
cjrsJobId = lens _cjrsJobId (\ s a -> s{_cjrsJobId = a})
cjrsJobARN :: Lens' CreateJobResponse (Maybe Text)
cjrsJobARN = lens _cjrsJobARN (\ s a -> s{_cjrsJobARN = a})
cjrsDescription :: Lens' CreateJobResponse (Maybe Text)
cjrsDescription = lens _cjrsDescription (\ s a -> s{_cjrsDescription = a})
cjrsResponseStatus :: Lens' CreateJobResponse Int
cjrsResponseStatus = lens _cjrsResponseStatus (\ s a -> s{_cjrsResponseStatus = a})
instance NFData CreateJobResponse where