module Aws.ElasticTranscoder.Commands.CreatePipeline
( CreatePipeline(..)
, CreatePipelineResponse(..)
) where
import Aws.Core
import Aws.ElasticTranscoder.Core
import Control.Applicative
import Data.Aeson
data CreatePipeline
= CreatePipeline
{ cplName :: PipelineName
, cplInputBucket :: S3Object
, cplOutputBucket :: S3Object
, cplRole :: IAMRole
, cplNotifications :: Notifications
}
deriving (Show,Eq)
data CreatePipelineResponse
= CreatePipelineResponse
{ cprName :: PipelineName
, cprInputBucket :: S3Object
, cprOutputBucket :: S3Object
, cprRole :: IAMRole
, cprNotifications :: Notifications
, cprId :: PipelineId
, cprStatus :: PipelineStatus
}
deriving (Show,Eq)
instance SignQuery CreatePipeline where
type ServiceConfiguration CreatePipeline = EtsConfiguration
signQuery CreatePipeline{..} = etsSignQuery
EtsQuery
{ etsqMethod = Post
, etsqRequest = "pipeline"
, etsqQuery = []
, etsqBody = Just $ toJSON $
Pipeline
cplName
cplInputBucket
cplOutputBucket
cplRole
cplNotifications
}
instance ResponseConsumer CreatePipeline CreatePipelineResponse where
type ResponseMetadata CreatePipelineResponse = EtsMetadata
responseConsumer _ mref = etsResponseConsumer mref $ \rsp ->
cnv <$> jsonConsumer rsp
where
cnv (PipelineSingle(PipelineIdStatus a b c d e f g)) =
CreatePipelineResponse a b c d e f g
instance Transaction CreatePipeline CreatePipelineResponse
instance AsMemoryResponse CreatePipelineResponse where
type MemoryResponse CreatePipelineResponse = CreatePipelineResponse
loadToMemory = return