{-# 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.CreatePipeline -- 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) -- | The CreatePipeline operation creates a pipeline with settings that you -- specify. -- -- <http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/CreatePipeline.html> module Network.AWS.ElasticTranscoder.CreatePipeline ( -- * Request CreatePipeline -- ** Request constructor , createPipeline -- ** Request lenses , cp1ContentConfig , cp1InputBucket , cp1Name , cp1Notifications , cp1OutputBucket , cp1Role , cp1ThumbnailConfig -- * Response , CreatePipelineResponse -- ** Response constructor , createPipelineResponse -- ** Response lenses , cprPipeline ) where import Network.AWS.Prelude import Network.AWS.Request.RestJSON import Network.AWS.ElasticTranscoder.Types import qualified GHC.Exts data CreatePipeline = CreatePipeline { _cp1ContentConfig :: Maybe PipelineOutputConfig , _cp1InputBucket :: Text , _cp1Name :: Text , _cp1Notifications :: Maybe Notifications , _cp1OutputBucket :: Maybe Text , _cp1Role :: Text , _cp1ThumbnailConfig :: Maybe PipelineOutputConfig } deriving (Eq, Show) -- | 'CreatePipeline' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cp1ContentConfig' @::@ 'Maybe' 'PipelineOutputConfig' -- -- * 'cp1InputBucket' @::@ 'Text' -- -- * 'cp1Name' @::@ 'Text' -- -- * 'cp1Notifications' @::@ 'Maybe' 'Notifications' -- -- * 'cp1OutputBucket' @::@ 'Maybe' 'Text' -- -- * 'cp1Role' @::@ 'Text' -- -- * 'cp1ThumbnailConfig' @::@ 'Maybe' 'PipelineOutputConfig' -- createPipeline :: Text -- ^ 'cp1Name' -> Text -- ^ 'cp1InputBucket' -> Text -- ^ 'cp1Role' -> CreatePipeline createPipeline p1 p2 p3 = CreatePipeline { _cp1Name = p1 , _cp1InputBucket = p2 , _cp1Role = p3 , _cp1OutputBucket = Nothing , _cp1Notifications = Nothing , _cp1ContentConfig = Nothing , _cp1ThumbnailConfig = 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. cp1ContentConfig :: Lens' CreatePipeline (Maybe PipelineOutputConfig) cp1ContentConfig = lens _cp1ContentConfig (\s a -> s { _cp1ContentConfig = a }) -- | The Amazon S3 bucket in which you saved the media files that you want to -- transcode. cp1InputBucket :: Lens' CreatePipeline Text cp1InputBucket = lens _cp1InputBucket (\s a -> s { _cp1InputBucket = 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. cp1Name :: Lens' CreatePipeline Text cp1Name = lens _cp1Name (\s a -> s { _cp1Name = a }) -- | The Amazon Simple Notification Service (Amazon SNS) topic that you want -- to notify to report job status. To receive notifications, you must also -- subscribe to the new topic in the Amazon SNS console. Progressing: The -- topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic -- that you want to notify when Elastic Transcoder has started to process a -- job in this pipeline. This is the ARN that Amazon SNS returned when you -- created the topic. For more information, see Create a Topic in the Amazon -- Simple Notification Service Developer Guide. Completed: The topic ARN for -- the Amazon SNS topic that you want to notify when Elastic Transcoder has -- finished processing a job in this pipeline. This is the ARN that Amazon -- SNS returned when you created the topic. Warning: The topic ARN for the -- Amazon SNS topic that you want to notify when Elastic Transcoder -- encounters a warning condition while processing a job in this pipeline. -- This is the ARN that Amazon SNS returned when you created the topic. -- Error: The topic ARN for the Amazon SNS topic that you want to notify -- when Elastic Transcoder encounters an error condition while processing a -- job in this pipeline. This is the ARN that Amazon SNS returned when you -- created the topic. cp1Notifications :: Lens' CreatePipeline (Maybe Notifications) cp1Notifications = lens _cp1Notifications (\s a -> s { _cp1Notifications = a }) -- | The Amazon S3 bucket in which you want Elastic Transcoder to save the -- transcoded files. (Use this, or use ContentConfig:Bucket plus -- ThumbnailConfig:Bucket.) Specify this value when all of the following are -- true: You want to save transcoded files, thumbnails (if any), and -- playlists (if any) together in one bucket. You do not want to specify the -- users or groups who have access to the transcoded files, thumbnails, and -- playlists. You do not want to specify the permissions that Elastic -- Transcoder grants to the files. When Elastic Transcoder saves files in -- OutputBucket, it grants full control over the files only to the AWS -- account that owns the role that is specified by Role. You want to -- associate the transcoded files and thumbnails with the Amazon S3 Standard -- storage class. If you want to save transcoded files and playlists in one -- bucket and thumbnails in another bucket, specify which users can access -- the transcoded files or the permissions the users have, or change the -- Amazon S3 storage class, omit OutputBucket and specify values for -- ContentConfig and ThumbnailConfig instead. cp1OutputBucket :: Lens' CreatePipeline (Maybe Text) cp1OutputBucket = lens _cp1OutputBucket (\s a -> s { _cp1OutputBucket = a }) -- | The IAM Amazon Resource Name (ARN) for the role that you want Elastic -- Transcoder to use to create the pipeline. cp1Role :: Lens' CreatePipeline Text cp1Role = lens _cp1Role (\s a -> s { _cp1Role = 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. cp1ThumbnailConfig :: Lens' CreatePipeline (Maybe PipelineOutputConfig) cp1ThumbnailConfig = lens _cp1ThumbnailConfig (\s a -> s { _cp1ThumbnailConfig = a }) newtype CreatePipelineResponse = CreatePipelineResponse { _cprPipeline :: Maybe Pipeline } deriving (Eq, Show) -- | 'CreatePipelineResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cprPipeline' @::@ 'Maybe' 'Pipeline' -- createPipelineResponse :: CreatePipelineResponse createPipelineResponse = CreatePipelineResponse { _cprPipeline = Nothing } -- | A section of the response body that provides information about the -- pipeline that is created. cprPipeline :: Lens' CreatePipelineResponse (Maybe Pipeline) cprPipeline = lens _cprPipeline (\s a -> s { _cprPipeline = a }) instance ToPath CreatePipeline where toPath = const "/2012-09-25/pipelines" instance ToQuery CreatePipeline where toQuery = const mempty instance ToHeaders CreatePipeline instance ToJSON CreatePipeline where toJSON CreatePipeline{..} = object [ "Name" .= _cp1Name , "InputBucket" .= _cp1InputBucket , "OutputBucket" .= _cp1OutputBucket , "Role" .= _cp1Role , "Notifications" .= _cp1Notifications , "ContentConfig" .= _cp1ContentConfig , "ThumbnailConfig" .= _cp1ThumbnailConfig ] instance AWSRequest CreatePipeline where type Sv CreatePipeline = ElasticTranscoder type Rs CreatePipeline = CreatePipelineResponse request = post response = jsonResponse instance FromJSON CreatePipelineResponse where parseJSON = withObject "CreatePipelineResponse" $ \o -> CreatePipelineResponse <$> o .:? "Pipeline"