module Network.AWS.ImportExport.Types
(
ImportExport
, RESTError
, ns
, JobType (..)
, Job
, job
, jobCreationDate
, jobIsCanceled
, jobJobId
, jobJobType
) where
import Network.AWS.Error
import Network.AWS.Prelude
import Network.AWS.Signing.V2
import qualified GHC.Exts
data ImportExport
instance AWSService ImportExport where
type Sg ImportExport = V2
type Er ImportExport = RESTError
service = Service
{ _svcAbbrev = "ImportExport"
, _svcPrefix = "importexport"
, _svcVersion = "2010-06-01"
, _svcTargetPrefix = Nothing
, _svcJSONVersion = Nothing
}
handle = restError statusSuccess
ns :: Text
ns = "http://importexport.amazonaws.com/doc/2010-06-01/"
data JobType
= Export'
| Import'
deriving (Eq, Ord, Show, Generic, Enum)
instance Hashable JobType
instance FromText JobType where
parser = takeText >>= \case
"Export" -> pure Export'
"Import" -> pure Import'
e -> fail $
"Failure parsing JobType from " ++ show e
instance ToText JobType where
toText = \case
Export' -> "Export"
Import' -> "Import"
instance ToByteString JobType
instance ToHeader JobType
instance ToQuery JobType
instance FromXML JobType where
parseXML = parseXMLText "JobType"
data Job = Job
{ _jobCreationDate :: ISO8601
, _jobIsCanceled :: Bool
, _jobJobId :: Text
, _jobJobType :: JobType
} deriving (Eq, Show)
job :: Text
-> UTCTime
-> Bool
-> JobType
-> Job
job p1 p2 p3 p4 = Job
{ _jobJobId = p1
, _jobCreationDate = withIso _Time (const id) p2
, _jobIsCanceled = p3
, _jobJobType = p4
}
jobCreationDate :: Lens' Job UTCTime
jobCreationDate = lens _jobCreationDate (\s a -> s { _jobCreationDate = a }) . _Time
jobIsCanceled :: Lens' Job Bool
jobIsCanceled = lens _jobIsCanceled (\s a -> s { _jobIsCanceled = a })
jobJobId :: Lens' Job Text
jobJobId = lens _jobJobId (\s a -> s { _jobJobId = a })
jobJobType :: Lens' Job JobType
jobJobType = lens _jobJobType (\s a -> s { _jobJobType = a })
instance FromXML Job where
parseXML x = Job
<$> x .@ "CreationDate"
<*> x .@ "IsCanceled"
<*> x .@ "JobId"
<*> x .@ "JobType"
instance ToQuery Job where
toQuery Job{..} = mconcat
[ "CreationDate" =? _jobCreationDate
, "IsCanceled" =? _jobIsCanceled
, "JobId" =? _jobJobId
, "JobType" =? _jobJobType
]