{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} 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