{-# 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 #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.CodePipeline.PollForJobs -- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns information about any jobs for AWS CodePipeline to act upon. -- -- -- /Important:/ When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action. -- module Network.AWS.CodePipeline.PollForJobs ( -- * Creating a Request pollForJobs , PollForJobs -- * Request Lenses , pfjMaxBatchSize , pfjQueryParam , pfjActionTypeId -- * Destructuring the Response , pollForJobsResponse , PollForJobsResponse -- * Response Lenses , pfjrsJobs , pfjrsResponseStatus ) where import Network.AWS.CodePipeline.Types import Network.AWS.CodePipeline.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Represents the input of a PollForJobs action. -- -- -- -- /See:/ 'pollForJobs' smart constructor. data PollForJobs = PollForJobs' { _pfjMaxBatchSize :: !(Maybe Nat) , _pfjQueryParam :: !(Maybe (Map Text Text)) , _pfjActionTypeId :: !ActionTypeId } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'PollForJobs' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pfjMaxBatchSize' - The maximum number of jobs to return in a poll for jobs call. -- -- * 'pfjQueryParam' - A map of property names and values. For an action type with no queryable properties, this value must be null or an empty map. For an action type with a queryable property, you must supply that property as a key in the map. Only jobs whose action configuration matches the mapped value will be returned. -- -- * 'pfjActionTypeId' - Represents information about an action type. pollForJobs :: ActionTypeId -- ^ 'pfjActionTypeId' -> PollForJobs pollForJobs pActionTypeId_ = PollForJobs' { _pfjMaxBatchSize = Nothing , _pfjQueryParam = Nothing , _pfjActionTypeId = pActionTypeId_ } -- | The maximum number of jobs to return in a poll for jobs call. pfjMaxBatchSize :: Lens' PollForJobs (Maybe Natural) pfjMaxBatchSize = lens _pfjMaxBatchSize (\ s a -> s{_pfjMaxBatchSize = a}) . mapping _Nat; -- | A map of property names and values. For an action type with no queryable properties, this value must be null or an empty map. For an action type with a queryable property, you must supply that property as a key in the map. Only jobs whose action configuration matches the mapped value will be returned. pfjQueryParam :: Lens' PollForJobs (HashMap Text Text) pfjQueryParam = lens _pfjQueryParam (\ s a -> s{_pfjQueryParam = a}) . _Default . _Map; -- | Represents information about an action type. pfjActionTypeId :: Lens' PollForJobs ActionTypeId pfjActionTypeId = lens _pfjActionTypeId (\ s a -> s{_pfjActionTypeId = a}); instance AWSRequest PollForJobs where type Rs PollForJobs = PollForJobsResponse request = postJSON codePipeline response = receiveJSON (\ s h x -> PollForJobsResponse' <$> (x .?> "jobs" .!@ mempty) <*> (pure (fromEnum s))) instance Hashable PollForJobs where instance NFData PollForJobs where instance ToHeaders PollForJobs where toHeaders = const (mconcat ["X-Amz-Target" =# ("CodePipeline_20150709.PollForJobs" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON PollForJobs where toJSON PollForJobs'{..} = object (catMaybes [("maxBatchSize" .=) <$> _pfjMaxBatchSize, ("queryParam" .=) <$> _pfjQueryParam, Just ("actionTypeId" .= _pfjActionTypeId)]) instance ToPath PollForJobs where toPath = const "/" instance ToQuery PollForJobs where toQuery = const mempty -- | Represents the output of a PollForJobs action. -- -- -- -- /See:/ 'pollForJobsResponse' smart constructor. data PollForJobsResponse = PollForJobsResponse' { _pfjrsJobs :: !(Maybe [Job]) , _pfjrsResponseStatus :: !Int } deriving (Eq, Show, Data, Typeable, Generic) -- | Creates a value of 'PollForJobsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pfjrsJobs' - Information about the jobs to take action on. -- -- * 'pfjrsResponseStatus' - -- | The response status code. pollForJobsResponse :: Int -- ^ 'pfjrsResponseStatus' -> PollForJobsResponse pollForJobsResponse pResponseStatus_ = PollForJobsResponse' {_pfjrsJobs = Nothing, _pfjrsResponseStatus = pResponseStatus_} -- | Information about the jobs to take action on. pfjrsJobs :: Lens' PollForJobsResponse [Job] pfjrsJobs = lens _pfjrsJobs (\ s a -> s{_pfjrsJobs = a}) . _Default . _Coerce; -- | -- | The response status code. pfjrsResponseStatus :: Lens' PollForJobsResponse Int pfjrsResponseStatus = lens _pfjrsResponseStatus (\ s a -> s{_pfjrsResponseStatus = a}); instance NFData PollForJobsResponse where