{-# 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.SMS.CreateReplicationJob
(
createReplicationJob
, CreateReplicationJob
, crjLicenseType
, crjRoleName
, crjDescription
, crjServerId
, crjSeedReplicationTime
, crjFrequency
, createReplicationJobResponse
, CreateReplicationJobResponse
, crjrsReplicationJobId
, crjrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.SMS.Types
import Network.AWS.SMS.Types.Product
data CreateReplicationJob = CreateReplicationJob'
{ _crjLicenseType :: !(Maybe LicenseType)
, _crjRoleName :: !(Maybe Text)
, _crjDescription :: !(Maybe Text)
, _crjServerId :: !Text
, _crjSeedReplicationTime :: !POSIX
, _crjFrequency :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createReplicationJob
:: Text
-> UTCTime
-> Int
-> CreateReplicationJob
createReplicationJob pServerId_ pSeedReplicationTime_ pFrequency_ =
CreateReplicationJob'
{ _crjLicenseType = Nothing
, _crjRoleName = Nothing
, _crjDescription = Nothing
, _crjServerId = pServerId_
, _crjSeedReplicationTime = _Time # pSeedReplicationTime_
, _crjFrequency = pFrequency_
}
crjLicenseType :: Lens' CreateReplicationJob (Maybe LicenseType)
crjLicenseType = lens _crjLicenseType (\ s a -> s{_crjLicenseType = a});
crjRoleName :: Lens' CreateReplicationJob (Maybe Text)
crjRoleName = lens _crjRoleName (\ s a -> s{_crjRoleName = a});
crjDescription :: Lens' CreateReplicationJob (Maybe Text)
crjDescription = lens _crjDescription (\ s a -> s{_crjDescription = a});
crjServerId :: Lens' CreateReplicationJob Text
crjServerId = lens _crjServerId (\ s a -> s{_crjServerId = a});
crjSeedReplicationTime :: Lens' CreateReplicationJob UTCTime
crjSeedReplicationTime = lens _crjSeedReplicationTime (\ s a -> s{_crjSeedReplicationTime = a}) . _Time;
crjFrequency :: Lens' CreateReplicationJob Int
crjFrequency = lens _crjFrequency (\ s a -> s{_crjFrequency = a});
instance AWSRequest CreateReplicationJob where
type Rs CreateReplicationJob =
CreateReplicationJobResponse
request = postJSON sms
response
= receiveJSON
(\ s h x ->
CreateReplicationJobResponse' <$>
(x .?> "replicationJobId") <*> (pure (fromEnum s)))
instance Hashable CreateReplicationJob
instance NFData CreateReplicationJob
instance ToHeaders CreateReplicationJob where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSServerMigrationService_V2016_10_24.CreateReplicationJob"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateReplicationJob where
toJSON CreateReplicationJob'{..}
= object
(catMaybes
[("licenseType" .=) <$> _crjLicenseType,
("roleName" .=) <$> _crjRoleName,
("description" .=) <$> _crjDescription,
Just ("serverId" .= _crjServerId),
Just
("seedReplicationTime" .= _crjSeedReplicationTime),
Just ("frequency" .= _crjFrequency)])
instance ToPath CreateReplicationJob where
toPath = const "/"
instance ToQuery CreateReplicationJob where
toQuery = const mempty
data CreateReplicationJobResponse = CreateReplicationJobResponse'
{ _crjrsReplicationJobId :: !(Maybe Text)
, _crjrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createReplicationJobResponse
:: Int
-> CreateReplicationJobResponse
createReplicationJobResponse pResponseStatus_ =
CreateReplicationJobResponse'
{ _crjrsReplicationJobId = Nothing
, _crjrsResponseStatus = pResponseStatus_
}
crjrsReplicationJobId :: Lens' CreateReplicationJobResponse (Maybe Text)
crjrsReplicationJobId = lens _crjrsReplicationJobId (\ s a -> s{_crjrsReplicationJobId = a});
crjrsResponseStatus :: Lens' CreateReplicationJobResponse Int
crjrsResponseStatus = lens _crjrsResponseStatus (\ s a -> s{_crjrsResponseStatus = a});
instance NFData CreateReplicationJobResponse