{-# 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.StartContentModeration -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Starts asynchronous detection of explicit or suggestive adult content in a stored video. -- -- -- Rekognition Video can moderate content in a video stored in an Amazon S3 bucket. Use 'Video' to specify the bucket name and the filename of the video. @StartContentModeration@ returns a job identifier (@JobId@ ) which you use to get the results of the analysis. When content moderation analysis is finished, Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic that you specify in @NotificationChannel@ . -- -- 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 and pass the job identifier (@JobId@ ) from the initial call to @StartContentModeration@ . For more information, see 'moderation' . -- module Network.AWS.Rekognition.StartContentModeration ( -- * Creating a Request startContentModeration , StartContentModeration -- * Request Lenses , scmJobTag , scmNotificationChannel , scmClientRequestToken , scmMinConfidence , scmVideo -- * Destructuring the Response , startContentModerationResponse , StartContentModerationResponse -- * Response Lenses , scmrsJobId , scmrsResponseStatus ) 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:/ 'startContentModeration' smart constructor. data StartContentModeration = StartContentModeration' { _scmJobTag :: !(Maybe Text) , _scmNotificationChannel :: !(Maybe NotificationChannel) , _scmClientRequestToken :: !(Maybe Text) , _scmMinConfidence :: !(Maybe Double) , _scmVideo :: !Video } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'StartContentModeration' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'scmJobTag' - Unique identifier you specify to identify the job in the completion status published to the Amazon Simple Notification Service topic. -- -- * 'scmNotificationChannel' - The Amazon SNS topic ARN that you want Rekognition Video to publish the completion status of the content moderation analysis to. -- -- * 'scmClientRequestToken' - Idempotent token used to identify the start request. If you use the same token with multiple @StartContentModeration@ requests, the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same job from being accidently started more than once. -- -- * 'scmMinConfidence' - Specifies the minimum confidence that Amazon Rekognition must have in order to return a moderated content label. Confidence represents how certain Amazon Rekognition is that the moderated content is correctly identified. 0 is the lowest confidence. 100 is the highest confidence. Amazon Rekognition doesn't return any moderated content labels with a confidence level lower than this specified value. -- -- * 'scmVideo' - The video in which you want to moderate content. The video must be stored in an Amazon S3 bucket. startContentModeration :: Video -- ^ 'scmVideo' -> StartContentModeration startContentModeration pVideo_ = StartContentModeration' { _scmJobTag = Nothing , _scmNotificationChannel = Nothing , _scmClientRequestToken = Nothing , _scmMinConfidence = Nothing , _scmVideo = pVideo_ } -- | Unique identifier you specify to identify the job in the completion status published to the Amazon Simple Notification Service topic. scmJobTag :: Lens' StartContentModeration (Maybe Text) scmJobTag = lens _scmJobTag (\ s a -> s{_scmJobTag = a}) -- | The Amazon SNS topic ARN that you want Rekognition Video to publish the completion status of the content moderation analysis to. scmNotificationChannel :: Lens' StartContentModeration (Maybe NotificationChannel) scmNotificationChannel = lens _scmNotificationChannel (\ s a -> s{_scmNotificationChannel = a}) -- | Idempotent token used to identify the start request. If you use the same token with multiple @StartContentModeration@ requests, the same @JobId@ is returned. Use @ClientRequestToken@ to prevent the same job from being accidently started more than once. scmClientRequestToken :: Lens' StartContentModeration (Maybe Text) scmClientRequestToken = lens _scmClientRequestToken (\ s a -> s{_scmClientRequestToken = a}) -- | Specifies the minimum confidence that Amazon Rekognition must have in order to return a moderated content label. Confidence represents how certain Amazon Rekognition is that the moderated content is correctly identified. 0 is the lowest confidence. 100 is the highest confidence. Amazon Rekognition doesn't return any moderated content labels with a confidence level lower than this specified value. scmMinConfidence :: Lens' StartContentModeration (Maybe Double) scmMinConfidence = lens _scmMinConfidence (\ s a -> s{_scmMinConfidence = a}) -- | The video in which you want to moderate content. The video must be stored in an Amazon S3 bucket. scmVideo :: Lens' StartContentModeration Video scmVideo = lens _scmVideo (\ s a -> s{_scmVideo = a}) instance AWSRequest StartContentModeration where type Rs StartContentModeration = StartContentModerationResponse request = postJSON rekognition response = receiveJSON (\ s h x -> StartContentModerationResponse' <$> (x .?> "JobId") <*> (pure (fromEnum s))) instance Hashable StartContentModeration where instance NFData StartContentModeration where instance ToHeaders StartContentModeration where toHeaders = const (mconcat ["X-Amz-Target" =# ("RekognitionService.StartContentModeration" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON StartContentModeration where toJSON StartContentModeration'{..} = object (catMaybes [("JobTag" .=) <$> _scmJobTag, ("NotificationChannel" .=) <$> _scmNotificationChannel, ("ClientRequestToken" .=) <$> _scmClientRequestToken, ("MinConfidence" .=) <$> _scmMinConfidence, Just ("Video" .= _scmVideo)]) instance ToPath StartContentModeration where toPath = const "/" instance ToQuery StartContentModeration where toQuery = const mempty -- | /See:/ 'startContentModerationResponse' smart constructor. data StartContentModerationResponse = StartContentModerationResponse' { _scmrsJobId :: !(Maybe Text) , _scmrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'StartContentModerationResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'scmrsJobId' - The identifier for the content moderation analysis job. Use @JobId@ to identify the job in a subsequent call to @GetContentModeration@ . -- -- * 'scmrsResponseStatus' - -- | The response status code. startContentModerationResponse :: Int -- ^ 'scmrsResponseStatus' -> StartContentModerationResponse startContentModerationResponse pResponseStatus_ = StartContentModerationResponse' {_scmrsJobId = Nothing, _scmrsResponseStatus = pResponseStatus_} -- | The identifier for the content moderation analysis job. Use @JobId@ to identify the job in a subsequent call to @GetContentModeration@ . scmrsJobId :: Lens' StartContentModerationResponse (Maybe Text) scmrsJobId = lens _scmrsJobId (\ s a -> s{_scmrsJobId = a}) -- | -- | The response status code. scmrsResponseStatus :: Lens' StartContentModerationResponse Int scmrsResponseStatus = lens _scmrsResponseStatus (\ s a -> s{_scmrsResponseStatus = a}) instance NFData StartContentModerationResponse where