amazonka-rekognition-1.6.0: gen/Network/AWS/Rekognition/GetContentModeration.hs
{-# 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.Rekognition.GetContentModeration
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the content moderation analysis results for a Rekognition Video analysis started by .
--
--
-- Content moderation analysis of a video is an asynchronous operation. You start analysis by calling . which returns a job identifier (@JobId@ ). When analysis finishes, Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic registered in the initial call to @StartContentModeration@ . To get the results of the content moderation analysis, first check that the status value published to the Amazon SNS topic is @SUCCEEDED@ . If so, call @GetCelebrityDetection@ and pass the job identifier (@JobId@ ) from the initial call to @StartCelebrityDetection@ . For more information, see 'video' .
--
-- @GetContentModeration@ returns detected content moderation labels, and the time they are detected, in an array, @ModerationLabels@ , of objects.
--
-- By default, the moderated labels are returned sorted by time, in milliseconds from the start of the video. You can also sort them by moderated label by specifying @NAME@ for the @SortBy@ input parameter.
--
-- Since video analysis can return a large number of results, use the @MaxResults@ parameter to limit the number of labels returned in a single call to @GetContentModeration@ . If there are more results than specified in @MaxResults@ , the value of @NextToken@ in the operation response contains a pagination token for getting the next set of results. To get the next page of results, call @GetContentModeration@ and populate the @NextToken@ request parameter with the value of @NextToken@ returned from the previous call to @GetContentModeration@ .
--
-- For more information, see 'moderation' .
--
module Network.AWS.Rekognition.GetContentModeration
(
-- * Creating a Request
getContentModeration
, GetContentModeration
-- * Request Lenses
, gcmNextToken
, gcmMaxResults
, gcmSortBy
, gcmJobId
-- * Destructuring the Response
, getContentModerationResponse
, GetContentModerationResponse
-- * Response Lenses
, gcmrsNextToken
, gcmrsVideoMetadata
, gcmrsStatusMessage
, gcmrsJobStatus
, gcmrsModerationLabels
, gcmrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Rekognition.Types
import Network.AWS.Rekognition.Types.Product
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'getContentModeration' smart constructor.
data GetContentModeration = GetContentModeration'
{ _gcmNextToken :: !(Maybe Text)
, _gcmMaxResults :: !(Maybe Nat)
, _gcmSortBy :: !(Maybe ContentModerationSortBy)
, _gcmJobId :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetContentModeration' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'gcmNextToken' - If the previous response was incomplete (because there is more data to retrieve), Amazon Rekognition returns a pagination token in the response. You can use this pagination token to retrieve the next set of content moderation labels.
--
-- * 'gcmMaxResults' - Maximum number of results to return per paginated call. The largest value you can specify is 1000. If you specify a value greater than 1000, a maximum of 1000 results is returned. The default value is 1000.
--
-- * 'gcmSortBy' - Sort to use for elements in the @ModerationLabelDetections@ array. Use @TIMESTAMP@ to sort array elements by the time labels are detected. Use @NAME@ to alphabetically group elements for a label together. Within each label group, the array element are sorted by detection confidence. The default sort is by @TIMESTAMP@ .
--
-- * 'gcmJobId' - The identifier for the content moderation job. Use @JobId@ to identify the job in a subsequent call to @GetContentModeration@ .
getContentModeration
:: Text -- ^ 'gcmJobId'
-> GetContentModeration
getContentModeration pJobId_ =
GetContentModeration'
{ _gcmNextToken = Nothing
, _gcmMaxResults = Nothing
, _gcmSortBy = Nothing
, _gcmJobId = pJobId_
}
-- | If the previous response was incomplete (because there is more data to retrieve), Amazon Rekognition returns a pagination token in the response. You can use this pagination token to retrieve the next set of content moderation labels.
gcmNextToken :: Lens' GetContentModeration (Maybe Text)
gcmNextToken = lens _gcmNextToken (\ s a -> s{_gcmNextToken = a})
-- | Maximum number of results to return per paginated call. The largest value you can specify is 1000. If you specify a value greater than 1000, a maximum of 1000 results is returned. The default value is 1000.
gcmMaxResults :: Lens' GetContentModeration (Maybe Natural)
gcmMaxResults = lens _gcmMaxResults (\ s a -> s{_gcmMaxResults = a}) . mapping _Nat
-- | Sort to use for elements in the @ModerationLabelDetections@ array. Use @TIMESTAMP@ to sort array elements by the time labels are detected. Use @NAME@ to alphabetically group elements for a label together. Within each label group, the array element are sorted by detection confidence. The default sort is by @TIMESTAMP@ .
gcmSortBy :: Lens' GetContentModeration (Maybe ContentModerationSortBy)
gcmSortBy = lens _gcmSortBy (\ s a -> s{_gcmSortBy = a})
-- | The identifier for the content moderation job. Use @JobId@ to identify the job in a subsequent call to @GetContentModeration@ .
gcmJobId :: Lens' GetContentModeration Text
gcmJobId = lens _gcmJobId (\ s a -> s{_gcmJobId = a})
instance AWSRequest GetContentModeration where
type Rs GetContentModeration =
GetContentModerationResponse
request = postJSON rekognition
response
= receiveJSON
(\ s h x ->
GetContentModerationResponse' <$>
(x .?> "NextToken") <*> (x .?> "VideoMetadata") <*>
(x .?> "StatusMessage")
<*> (x .?> "JobStatus")
<*> (x .?> "ModerationLabels" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable GetContentModeration where
instance NFData GetContentModeration where
instance ToHeaders GetContentModeration where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("RekognitionService.GetContentModeration" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetContentModeration where
toJSON GetContentModeration'{..}
= object
(catMaybes
[("NextToken" .=) <$> _gcmNextToken,
("MaxResults" .=) <$> _gcmMaxResults,
("SortBy" .=) <$> _gcmSortBy,
Just ("JobId" .= _gcmJobId)])
instance ToPath GetContentModeration where
toPath = const "/"
instance ToQuery GetContentModeration where
toQuery = const mempty
-- | /See:/ 'getContentModerationResponse' smart constructor.
data GetContentModerationResponse = GetContentModerationResponse'
{ _gcmrsNextToken :: !(Maybe Text)
, _gcmrsVideoMetadata :: !(Maybe VideoMetadata)
, _gcmrsStatusMessage :: !(Maybe Text)
, _gcmrsJobStatus :: !(Maybe VideoJobStatus)
, _gcmrsModerationLabels :: !(Maybe [ContentModerationDetection])
, _gcmrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetContentModerationResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'gcmrsNextToken' - If the response is truncated, Rekognition Video returns this token that you can use in the subsequent request to retrieve the next set of moderation labels.
--
-- * 'gcmrsVideoMetadata' - Information about a video that Amazon Rekognition analyzed. @Videometadata@ is returned in every page of paginated responses from @GetContentModeration@ .
--
-- * 'gcmrsStatusMessage' - If the job fails, @StatusMessage@ provides a descriptive error message.
--
-- * 'gcmrsJobStatus' - The current status of the content moderation job.
--
-- * 'gcmrsModerationLabels' - The detected moderation labels and the time(s) they were detected.
--
-- * 'gcmrsResponseStatus' - -- | The response status code.
getContentModerationResponse
:: Int -- ^ 'gcmrsResponseStatus'
-> GetContentModerationResponse
getContentModerationResponse pResponseStatus_ =
GetContentModerationResponse'
{ _gcmrsNextToken = Nothing
, _gcmrsVideoMetadata = Nothing
, _gcmrsStatusMessage = Nothing
, _gcmrsJobStatus = Nothing
, _gcmrsModerationLabels = Nothing
, _gcmrsResponseStatus = pResponseStatus_
}
-- | If the response is truncated, Rekognition Video returns this token that you can use in the subsequent request to retrieve the next set of moderation labels.
gcmrsNextToken :: Lens' GetContentModerationResponse (Maybe Text)
gcmrsNextToken = lens _gcmrsNextToken (\ s a -> s{_gcmrsNextToken = a})
-- | Information about a video that Amazon Rekognition analyzed. @Videometadata@ is returned in every page of paginated responses from @GetContentModeration@ .
gcmrsVideoMetadata :: Lens' GetContentModerationResponse (Maybe VideoMetadata)
gcmrsVideoMetadata = lens _gcmrsVideoMetadata (\ s a -> s{_gcmrsVideoMetadata = a})
-- | If the job fails, @StatusMessage@ provides a descriptive error message.
gcmrsStatusMessage :: Lens' GetContentModerationResponse (Maybe Text)
gcmrsStatusMessage = lens _gcmrsStatusMessage (\ s a -> s{_gcmrsStatusMessage = a})
-- | The current status of the content moderation job.
gcmrsJobStatus :: Lens' GetContentModerationResponse (Maybe VideoJobStatus)
gcmrsJobStatus = lens _gcmrsJobStatus (\ s a -> s{_gcmrsJobStatus = a})
-- | The detected moderation labels and the time(s) they were detected.
gcmrsModerationLabels :: Lens' GetContentModerationResponse [ContentModerationDetection]
gcmrsModerationLabels = lens _gcmrsModerationLabels (\ s a -> s{_gcmrsModerationLabels = a}) . _Default . _Coerce
-- | -- | The response status code.
gcmrsResponseStatus :: Lens' GetContentModerationResponse Int
gcmrsResponseStatus = lens _gcmrsResponseStatus (\ s a -> s{_gcmrsResponseStatus = a})
instance NFData GetContentModerationResponse where