amazonka-elastictranscoder-0.0.0: gen/Network/AWS/ElasticTranscoder/UpdatePipeline.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.ElasticTranscoder.UpdatePipeline
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
-- | Use the UpdatePipeline operation to update settings for a pipeline. When
-- you change pipeline settings, your changes take effect immediately. Jobs
-- that you have already submitted and that Elastic Transcoder has not started
-- to process are affected in addition to jobs that you submit after you
-- change settings.
--
-- <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/UpdatePipeline.html>
module Network.AWS.ElasticTranscoder.UpdatePipeline
(
-- * Request
UpdatePipeline
-- ** Request constructor
, updatePipeline
-- ** Request lenses
, upContentConfig
, upId
, upInputBucket
, upName
, upNotifications
, upRole
, upThumbnailConfig
-- * Response
, UpdatePipelineResponse
-- ** Response constructor
, updatePipelineResponse
-- ** Response lenses
, uprPipeline
) where
import Network.AWS.Prelude
import Network.AWS.Request.RestJSON
import Network.AWS.ElasticTranscoder.Types
import qualified GHC.Exts
data UpdatePipeline = UpdatePipeline
{ _upContentConfig :: Maybe PipelineOutputConfig
, _upId :: Text
, _upInputBucket :: Maybe Text
, _upName :: Maybe Text
, _upNotifications :: Maybe Notifications
, _upRole :: Maybe Text
, _upThumbnailConfig :: Maybe PipelineOutputConfig
} deriving (Eq, Show)
-- | 'UpdatePipeline' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'upContentConfig' @::@ 'Maybe' 'PipelineOutputConfig'
--
-- * 'upId' @::@ 'Text'
--
-- * 'upInputBucket' @::@ 'Maybe' 'Text'
--
-- * 'upName' @::@ 'Maybe' 'Text'
--
-- * 'upNotifications' @::@ 'Maybe' 'Notifications'
--
-- * 'upRole' @::@ 'Maybe' 'Text'
--
-- * 'upThumbnailConfig' @::@ 'Maybe' 'PipelineOutputConfig'
--
updatePipeline :: Text -- ^ 'upId'
-> UpdatePipeline
updatePipeline p1 = UpdatePipeline
{ _upId = p1
, _upName = Nothing
, _upInputBucket = Nothing
, _upRole = Nothing
, _upNotifications = Nothing
, _upContentConfig = Nothing
, _upThumbnailConfig = Nothing
}
-- | The optional ContentConfig object specifies information about the Amazon
-- S3 bucket in which you want Elastic Transcoder to save transcoded files
-- and playlists: which bucket to use, which users you want to have access
-- to the files, the type of access you want users to have, and the storage
-- class that you want to assign to the files. If you specify values for
-- ContentConfig, you must also specify values for ThumbnailConfig. If you
-- specify values for ContentConfig and ThumbnailConfig, omit the
-- OutputBucket object. Bucket: The Amazon S3 bucket in which you want
-- Elastic Transcoder to save transcoded files and playlists. Permissions
-- (Optional): The Permissions object specifies which users you want to have
-- access to transcoded files and the type of access you want them to have.
-- You can grant permissions to a maximum of 30 users and/or predefined
-- Amazon S3 groups. Grantee Type: Specify the type of value that appears in
-- the Grantee object: Canonical: The value in the Grantee object is either
-- the canonical user ID for an AWS account or an origin access identity for
-- an Amazon CloudFront distribution. For more information about canonical
-- user IDs, see Access Control List (ACL) Overview in the Amazon Simple
-- Storage Service Developer Guide. For more information about using
-- CloudFront origin access identities to require that users use CloudFront
-- URLs instead of Amazon S3 URLs, see Using an Origin Access Identity to
-- Restrict Access to Your Amazon S3 Content. A canonical user ID is not the
-- same as an AWS account number. Email: The value in the Grantee object is
-- the registered email address of an AWS account. Group: The value in the
-- Grantee object is one of the following predefined Amazon S3 groups:
-- AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS user or
-- group that you want to have access to transcoded files and playlists. To
-- identify the user or group, you can specify the canonical user ID for an
-- AWS account, an origin access identity for a CloudFront distribution, the
-- registered email address of an AWS account, or a predefined Amazon S3
-- group Access: The permission that you want to give to the AWS user that
-- you specified in Grantee. Permissions are granted on the files that
-- Elastic Transcoder adds to the bucket, including playlists and video
-- files. Valid values include: READ: The grantee can read the objects and
-- metadata for objects that Elastic Transcoder adds to the Amazon S3
-- bucket. READ_ACP: The grantee can read the object ACL for objects that
-- Elastic Transcoder adds to the Amazon S3 bucket. WRITE_ACP: The grantee
-- can write the ACL for the objects that Elastic Transcoder adds to the
-- Amazon S3 bucket. FULL_CONTROL: The grantee has READ, READ_ACP, and
-- WRITE_ACP permissions for the objects that Elastic Transcoder adds to the
-- Amazon S3 bucket. StorageClass: The Amazon S3 storage class, Standard or
-- ReducedRedundancy, that you want Elastic Transcoder to assign to the
-- video files and playlists that it stores in your Amazon S3 bucket.
upContentConfig :: Lens' UpdatePipeline (Maybe PipelineOutputConfig)
upContentConfig = lens _upContentConfig (\s a -> s { _upContentConfig = a })
-- | The ID of the pipeline that you want to update.
upId :: Lens' UpdatePipeline Text
upId = lens _upId (\s a -> s { _upId = a })
-- | The Amazon S3 bucket in which you saved the media files that you want to
-- transcode and the graphics that you want to use as watermarks.
upInputBucket :: Lens' UpdatePipeline (Maybe Text)
upInputBucket = lens _upInputBucket (\s a -> s { _upInputBucket = a })
-- | The name of the pipeline. We recommend that the name be unique within the
-- AWS account, but uniqueness is not enforced. Constraints: Maximum 40
-- characters.
upName :: Lens' UpdatePipeline (Maybe Text)
upName = lens _upName (\s a -> s { _upName = a })
upNotifications :: Lens' UpdatePipeline (Maybe Notifications)
upNotifications = lens _upNotifications (\s a -> s { _upNotifications = a })
-- | The IAM Amazon Resource Name (ARN) for the role that you want Elastic
-- Transcoder to use to transcode jobs for this pipeline.
upRole :: Lens' UpdatePipeline (Maybe Text)
upRole = lens _upRole (\s a -> s { _upRole = a })
-- | The ThumbnailConfig object specifies several values, including the Amazon
-- S3 bucket in which you want Elastic Transcoder to save thumbnail files,
-- which users you want to have access to the files, the type of access you
-- want users to have, and the storage class that you want to assign to the
-- files. If you specify values for ContentConfig, you must also specify
-- values for ThumbnailConfig even if you don't want to create thumbnails.
-- If you specify values for ContentConfig and ThumbnailConfig, omit the
-- OutputBucket object. Bucket: The Amazon S3 bucket in which you want
-- Elastic Transcoder to save thumbnail files. Permissions (Optional): The
-- Permissions object specifies which users and/or predefined Amazon S3
-- groups you want to have access to thumbnail files, and the type of access
-- you want them to have. You can grant permissions to a maximum of 30 users
-- and/or predefined Amazon S3 groups. GranteeType: Specify the type of
-- value that appears in the Grantee object: Canonical: The value in the
-- Grantee object is either the canonical user ID for an AWS account or an
-- origin access identity for an Amazon CloudFront distribution. A canonical
-- user ID is not the same as an AWS account number. Email: The value in the
-- Grantee object is the registered email address of an AWS account. Group:
-- The value in the Grantee object is one of the following predefined Amazon
-- S3 groups: AllUsers, AuthenticatedUsers, or LogDelivery. Grantee: The AWS
-- user or group that you want to have access to thumbnail files. To
-- identify the user or group, you can specify the canonical user ID for an
-- AWS account, an origin access identity for a CloudFront distribution, the
-- registered email address of an AWS account, or a predefined Amazon S3
-- group. Access: The permission that you want to give to the AWS user that
-- you specified in Grantee. Permissions are granted on the thumbnail files
-- that Elastic Transcoder adds to the bucket. Valid values include: READ:
-- The grantee can read the thumbnails and metadata for objects that Elastic
-- Transcoder adds to the Amazon S3 bucket. READ_ACP: The grantee can read
-- the object ACL for thumbnails that Elastic Transcoder adds to the Amazon
-- S3 bucket. WRITE_ACP: The grantee can write the ACL for the thumbnails
-- that Elastic Transcoder adds to the Amazon S3 bucket. FULL_CONTROL: The
-- grantee has READ, READ_ACP, and WRITE_ACP permissions for the thumbnails
-- that Elastic Transcoder adds to the Amazon S3 bucket. StorageClass: The
-- Amazon S3 storage class, Standard or ReducedRedundancy, that you want
-- Elastic Transcoder to assign to the thumbnails that it stores in your
-- Amazon S3 bucket.
upThumbnailConfig :: Lens' UpdatePipeline (Maybe PipelineOutputConfig)
upThumbnailConfig =
lens _upThumbnailConfig (\s a -> s { _upThumbnailConfig = a })
newtype UpdatePipelineResponse = UpdatePipelineResponse
{ _uprPipeline :: Maybe Pipeline
} deriving (Eq, Show)
-- | 'UpdatePipelineResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'uprPipeline' @::@ 'Maybe' 'Pipeline'
--
updatePipelineResponse :: UpdatePipelineResponse
updatePipelineResponse = UpdatePipelineResponse
{ _uprPipeline = Nothing
}
uprPipeline :: Lens' UpdatePipelineResponse (Maybe Pipeline)
uprPipeline = lens _uprPipeline (\s a -> s { _uprPipeline = a })
instance ToPath UpdatePipeline where
toPath UpdatePipeline{..} = mconcat
[ "/2012-09-25/pipelines/"
, toText _upId
]
instance ToQuery UpdatePipeline where
toQuery = const mempty
instance ToHeaders UpdatePipeline
instance ToJSON UpdatePipeline where
toJSON UpdatePipeline{..} = object
[ "Name" .= _upName
, "InputBucket" .= _upInputBucket
, "Role" .= _upRole
, "Notifications" .= _upNotifications
, "ContentConfig" .= _upContentConfig
, "ThumbnailConfig" .= _upThumbnailConfig
]
instance AWSRequest UpdatePipeline where
type Sv UpdatePipeline = ElasticTranscoder
type Rs UpdatePipeline = UpdatePipelineResponse
request = put
response = jsonResponse
instance FromJSON UpdatePipelineResponse where
parseJSON = withObject "UpdatePipelineResponse" $ \o -> UpdatePipelineResponse
<$> o .:? "Pipeline"