amazonka-clouddirectory-1.5.0: gen/Network/AWS/CloudDirectory/AttachToIndex.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.CloudDirectory.AttachToIndex
-- Copyright : (c) 2013-2017 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Attaches the specified object to the specified index.
--
--
module Network.AWS.CloudDirectory.AttachToIndex
(
-- * Creating a Request
attachToIndex
, AttachToIndex
-- * Request Lenses
, atiDirectoryARN
, atiIndexReference
, atiTargetReference
-- * Destructuring the Response
, attachToIndexResponse
, AttachToIndexResponse
-- * Response Lenses
, atirsAttachedObjectIdentifier
, atirsResponseStatus
) where
import Network.AWS.CloudDirectory.Types
import Network.AWS.CloudDirectory.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'attachToIndex' smart constructor.
data AttachToIndex = AttachToIndex'
{ _atiDirectoryARN :: !Text
, _atiIndexReference :: !ObjectReference
, _atiTargetReference :: !ObjectReference
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'AttachToIndex' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'atiDirectoryARN' - The Amazon Resource Name (ARN) of the directory where the object and index exist.
--
-- * 'atiIndexReference' - A reference to the index that you are attaching the object to.
--
-- * 'atiTargetReference' - A reference to the object that you are attaching to the index.
attachToIndex
:: Text -- ^ 'atiDirectoryARN'
-> ObjectReference -- ^ 'atiIndexReference'
-> ObjectReference -- ^ 'atiTargetReference'
-> AttachToIndex
attachToIndex pDirectoryARN_ pIndexReference_ pTargetReference_ =
AttachToIndex'
{ _atiDirectoryARN = pDirectoryARN_
, _atiIndexReference = pIndexReference_
, _atiTargetReference = pTargetReference_
}
-- | The Amazon Resource Name (ARN) of the directory where the object and index exist.
atiDirectoryARN :: Lens' AttachToIndex Text
atiDirectoryARN = lens _atiDirectoryARN (\ s a -> s{_atiDirectoryARN = a});
-- | A reference to the index that you are attaching the object to.
atiIndexReference :: Lens' AttachToIndex ObjectReference
atiIndexReference = lens _atiIndexReference (\ s a -> s{_atiIndexReference = a});
-- | A reference to the object that you are attaching to the index.
atiTargetReference :: Lens' AttachToIndex ObjectReference
atiTargetReference = lens _atiTargetReference (\ s a -> s{_atiTargetReference = a});
instance AWSRequest AttachToIndex where
type Rs AttachToIndex = AttachToIndexResponse
request = putJSON cloudDirectory
response
= receiveJSON
(\ s h x ->
AttachToIndexResponse' <$>
(x .?> "AttachedObjectIdentifier") <*>
(pure (fromEnum s)))
instance Hashable AttachToIndex where
instance NFData AttachToIndex where
instance ToHeaders AttachToIndex where
toHeaders AttachToIndex'{..}
= mconcat
["x-amz-data-partition" =# _atiDirectoryARN]
instance ToJSON AttachToIndex where
toJSON AttachToIndex'{..}
= object
(catMaybes
[Just ("IndexReference" .= _atiIndexReference),
Just ("TargetReference" .= _atiTargetReference)])
instance ToPath AttachToIndex where
toPath
= const
"/amazonclouddirectory/2017-01-11/index/attach"
instance ToQuery AttachToIndex where
toQuery = const mempty
-- | /See:/ 'attachToIndexResponse' smart constructor.
data AttachToIndexResponse = AttachToIndexResponse'
{ _atirsAttachedObjectIdentifier :: !(Maybe Text)
, _atirsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'AttachToIndexResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'atirsAttachedObjectIdentifier' - The @ObjectIdentifier@ of the object that was attached to the index.
--
-- * 'atirsResponseStatus' - -- | The response status code.
attachToIndexResponse
:: Int -- ^ 'atirsResponseStatus'
-> AttachToIndexResponse
attachToIndexResponse pResponseStatus_ =
AttachToIndexResponse'
{ _atirsAttachedObjectIdentifier = Nothing
, _atirsResponseStatus = pResponseStatus_
}
-- | The @ObjectIdentifier@ of the object that was attached to the index.
atirsAttachedObjectIdentifier :: Lens' AttachToIndexResponse (Maybe Text)
atirsAttachedObjectIdentifier = lens _atirsAttachedObjectIdentifier (\ s a -> s{_atirsAttachedObjectIdentifier = a});
-- | -- | The response status code.
atirsResponseStatus :: Lens' AttachToIndexResponse Int
atirsResponseStatus = lens _atirsResponseStatus (\ s a -> s{_atirsResponseStatus = a});
instance NFData AttachToIndexResponse where