aws-elastic-transcoder-0.2.0.0: Aws/ElasticTranscoder/Commands/CreateJob.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
module Aws.ElasticTranscoder.Commands.CreateJob
( CreateJob(..)
, CreateJobResponse(..)
, createJob
, defaultJSInput
, defaultJSOutput
) where
import Aws.Core
import Aws.ElasticTranscoder.Core
import Control.Applicative
import Data.Aeson
-- | A brief example createJob program
--
-- @
-- {-# LANGUAGE OverloadedStrings #-}
--
-- import Aws
-- import Aws.ElasticTranscoder
-- import Network.HTTP.Conduit
--
-- myCreateJob :: IO ()
-- myCreateJob =
-- do cfg <- Aws.baseConfiguration
-- rsp <- withManager $ \mgr -> Aws.pureAws cfg my_ets_cfg mgr $
-- createJob "Wildlife.wmv" "Wildlife-t.f4v" my_preset my_pipeline
-- print rsp
--
-- my_ets_cfg :: EtsConfiguration NormalQuery
-- my_ets_cfg = etsConfiguration HTTPS etsEndpointEu
--
-- my_preset :: PresetId
-- my_preset = "1351620000001-000001" -- System preset: Generic 720p
--
-- my_pipeline :: PipelineId
-- my_pipeline = "<one-of-ypour-pipeline-ids>"
-- @
data CreateJob
= CreateJob
{ cjInput :: JSInput
, cjOutput :: JSOutput
, cjPipelineId :: PipelineId
}
deriving (Show,Eq)
data CreateJobResponse
= CreateJobResponse
{ cjrId :: JobId
, cjrInput :: JSInput
, cjrOutput :: JSOutputStatus
, cjrPipelineId :: PipelineId
}
deriving (Show,Eq)
createJob :: S3Object -> S3Object -> PresetId -> PipelineId -> CreateJob
createJob inb oub pri pli = CreateJob cji cjo pli
where
cji = defaultJSInput inb
cjo = defaultJSOutput oub pri
defaultJSInput :: S3Object -> JSInput
defaultJSInput inb = JSInput inb FRauto Rauto ARauto ABauto Cauto
defaultJSOutput :: S3Object -> PresetId -> JSOutput
defaultJSOutput oub pri = JSOutput oub "" ROTauto pri
instance SignQuery CreateJob where
type ServiceConfiguration CreateJob = EtsConfiguration
signQuery CreateJob {..} = etsSignQuery EtsQuery
{ etsqMethod = Post
, etsqRequest = "jobs"
, etsqQuery = []
, etsqBody = Just $ toJSON $ JobSpec cjInput cjOutput cjPipelineId
}
instance ResponseConsumer CreateJob CreateJobResponse where
type ResponseMetadata CreateJobResponse = EtsMetadata
responseConsumer _ mref = etsResponseConsumer mref $ \rsp ->
cnv <$> jsonConsumer rsp
where
cnv (JobSingle(JobSpecId a b c d)) = CreateJobResponse a b c d
instance Transaction CreateJob CreateJobResponse
instance AsMemoryResponse CreateJobResponse where
type MemoryResponse CreateJobResponse = CreateJobResponse
loadToMemory = return