{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.Glacier.InitiateJob
(
initiateJob
, InitiateJob
, ijJobParameters
, ijAccountId
, ijVaultName
, initiateJobResponse
, InitiateJobResponse
, ijrsJobId
, ijrsJobOutputPath
, ijrsLocation
, ijrsResponseStatus
) where
import Network.AWS.Glacier.Types
import Network.AWS.Glacier.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data InitiateJob = InitiateJob'
{ _ijJobParameters :: !(Maybe JobParameters)
, _ijAccountId :: !Text
, _ijVaultName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
initiateJob
:: Text
-> Text
-> InitiateJob
initiateJob pAccountId_ pVaultName_ =
InitiateJob'
{ _ijJobParameters = Nothing
, _ijAccountId = pAccountId_
, _ijVaultName = pVaultName_
}
ijJobParameters :: Lens' InitiateJob (Maybe JobParameters)
ijJobParameters = lens _ijJobParameters (\ s a -> s{_ijJobParameters = a})
ijAccountId :: Lens' InitiateJob Text
ijAccountId = lens _ijAccountId (\ s a -> s{_ijAccountId = a})
ijVaultName :: Lens' InitiateJob Text
ijVaultName = lens _ijVaultName (\ s a -> s{_ijVaultName = a})
instance AWSRequest InitiateJob where
type Rs InitiateJob = InitiateJobResponse
request = postJSON glacier
response
= receiveEmpty
(\ s h x ->
InitiateJobResponse' <$>
(h .#? "x-amz-job-id") <*>
(h .#? "x-amz-job-output-path")
<*> (h .#? "Location")
<*> (pure (fromEnum s)))
instance Hashable InitiateJob where
instance NFData InitiateJob where
instance ToHeaders InitiateJob where
toHeaders = const mempty
instance ToJSON InitiateJob where
toJSON InitiateJob'{..}
= object
(catMaybes
[("jobParameters" .=) <$> _ijJobParameters])
instance ToPath InitiateJob where
toPath InitiateJob'{..}
= mconcat
["/", toBS _ijAccountId, "/vaults/",
toBS _ijVaultName, "/jobs"]
instance ToQuery InitiateJob where
toQuery = const mempty
data InitiateJobResponse = InitiateJobResponse'
{ _ijrsJobId :: !(Maybe Text)
, _ijrsJobOutputPath :: !(Maybe Text)
, _ijrsLocation :: !(Maybe Text)
, _ijrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
initiateJobResponse
:: Int
-> InitiateJobResponse
initiateJobResponse pResponseStatus_ =
InitiateJobResponse'
{ _ijrsJobId = Nothing
, _ijrsJobOutputPath = Nothing
, _ijrsLocation = Nothing
, _ijrsResponseStatus = pResponseStatus_
}
ijrsJobId :: Lens' InitiateJobResponse (Maybe Text)
ijrsJobId = lens _ijrsJobId (\ s a -> s{_ijrsJobId = a})
ijrsJobOutputPath :: Lens' InitiateJobResponse (Maybe Text)
ijrsJobOutputPath = lens _ijrsJobOutputPath (\ s a -> s{_ijrsJobOutputPath = a})
ijrsLocation :: Lens' InitiateJobResponse (Maybe Text)
ijrsLocation = lens _ijrsLocation (\ s a -> s{_ijrsLocation = a})
ijrsResponseStatus :: Lens' InitiateJobResponse Int
ijrsResponseStatus = lens _ijrsResponseStatus (\ s a -> s{_ijrsResponseStatus = a})
instance NFData InitiateJobResponse where