module Network.AWS.EMR.ListSteps
(
ListSteps
, listSteps
, lsClusterId
, lsMarker
, lsStepIds
, lsStepStates
, ListStepsResponse
, listStepsResponse
, lsrMarker
, lsrSteps
) where
import Network.AWS.Data (Object)
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.EMR.Types
import qualified GHC.Exts
data ListSteps = ListSteps
{ _lsClusterId :: Text
, _lsMarker :: Maybe Text
, _lsStepIds :: List "StepIds" Text
, _lsStepStates :: List "StepStates" StepState
} deriving (Eq, Read, Show)
listSteps :: Text
-> ListSteps
listSteps p1 = ListSteps
{ _lsClusterId = p1
, _lsStepStates = mempty
, _lsStepIds = mempty
, _lsMarker = Nothing
}
lsClusterId :: Lens' ListSteps Text
lsClusterId = lens _lsClusterId (\s a -> s { _lsClusterId = a })
lsMarker :: Lens' ListSteps (Maybe Text)
lsMarker = lens _lsMarker (\s a -> s { _lsMarker = a })
lsStepIds :: Lens' ListSteps [Text]
lsStepIds = lens _lsStepIds (\s a -> s { _lsStepIds = a }) . _List
lsStepStates :: Lens' ListSteps [StepState]
lsStepStates = lens _lsStepStates (\s a -> s { _lsStepStates = a }) . _List
data ListStepsResponse = ListStepsResponse
{ _lsrMarker :: Maybe Text
, _lsrSteps :: List "Steps" StepSummary
} deriving (Eq, Read, Show)
listStepsResponse :: ListStepsResponse
listStepsResponse = ListStepsResponse
{ _lsrSteps = mempty
, _lsrMarker = Nothing
}
lsrMarker :: Lens' ListStepsResponse (Maybe Text)
lsrMarker = lens _lsrMarker (\s a -> s { _lsrMarker = a })
lsrSteps :: Lens' ListStepsResponse [StepSummary]
lsrSteps = lens _lsrSteps (\s a -> s { _lsrSteps = a }) . _List
instance ToPath ListSteps where
toPath = const "/"
instance ToQuery ListSteps where
toQuery = const mempty
instance ToHeaders ListSteps
instance ToJSON ListSteps where
toJSON ListSteps{..} = object
[ "ClusterId" .= _lsClusterId
, "StepStates" .= _lsStepStates
, "StepIds" .= _lsStepIds
, "Marker" .= _lsMarker
]
instance AWSRequest ListSteps where
type Sv ListSteps = EMR
type Rs ListSteps = ListStepsResponse
request = post "ListSteps"
response = jsonResponse
instance FromJSON ListStepsResponse where
parseJSON = withObject "ListStepsResponse" $ \o -> ListStepsResponse
<$> o .:? "Marker"
<*> o .:? "Steps" .!= mempty
instance AWSPager ListSteps where
page rq rs
| stop (rs ^. lsrMarker) = Nothing
| otherwise = (\x -> rq & lsMarker ?~ x)
<$> (rs ^. lsrMarker)