{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.CloudDirectory.AttachPolicy
(
AttachPolicy (..),
newAttachPolicy,
attachPolicy_directoryArn,
attachPolicy_policyReference,
attachPolicy_objectReference,
AttachPolicyResponse (..),
newAttachPolicyResponse,
attachPolicyResponse_httpStatus,
)
where
import Amazonka.CloudDirectory.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
data AttachPolicy = AttachPolicy'
{
AttachPolicy -> Text
directoryArn :: Prelude.Text,
AttachPolicy -> ObjectReference
policyReference :: ObjectReference,
AttachPolicy -> ObjectReference
objectReference :: ObjectReference
}
deriving (AttachPolicy -> AttachPolicy -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AttachPolicy -> AttachPolicy -> Bool
$c/= :: AttachPolicy -> AttachPolicy -> Bool
== :: AttachPolicy -> AttachPolicy -> Bool
$c== :: AttachPolicy -> AttachPolicy -> Bool
Prelude.Eq, ReadPrec [AttachPolicy]
ReadPrec AttachPolicy
Int -> ReadS AttachPolicy
ReadS [AttachPolicy]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AttachPolicy]
$creadListPrec :: ReadPrec [AttachPolicy]
readPrec :: ReadPrec AttachPolicy
$creadPrec :: ReadPrec AttachPolicy
readList :: ReadS [AttachPolicy]
$creadList :: ReadS [AttachPolicy]
readsPrec :: Int -> ReadS AttachPolicy
$creadsPrec :: Int -> ReadS AttachPolicy
Prelude.Read, Int -> AttachPolicy -> ShowS
[AttachPolicy] -> ShowS
AttachPolicy -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AttachPolicy] -> ShowS
$cshowList :: [AttachPolicy] -> ShowS
show :: AttachPolicy -> String
$cshow :: AttachPolicy -> String
showsPrec :: Int -> AttachPolicy -> ShowS
$cshowsPrec :: Int -> AttachPolicy -> ShowS
Prelude.Show, forall x. Rep AttachPolicy x -> AttachPolicy
forall x. AttachPolicy -> Rep AttachPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AttachPolicy x -> AttachPolicy
$cfrom :: forall x. AttachPolicy -> Rep AttachPolicy x
Prelude.Generic)
newAttachPolicy ::
Prelude.Text ->
ObjectReference ->
ObjectReference ->
AttachPolicy
newAttachPolicy :: Text -> ObjectReference -> ObjectReference -> AttachPolicy
newAttachPolicy
Text
pDirectoryArn_
ObjectReference
pPolicyReference_
ObjectReference
pObjectReference_ =
AttachPolicy'
{ $sel:directoryArn:AttachPolicy' :: Text
directoryArn = Text
pDirectoryArn_,
$sel:policyReference:AttachPolicy' :: ObjectReference
policyReference = ObjectReference
pPolicyReference_,
$sel:objectReference:AttachPolicy' :: ObjectReference
objectReference = ObjectReference
pObjectReference_
}
attachPolicy_directoryArn :: Lens.Lens' AttachPolicy Prelude.Text
attachPolicy_directoryArn :: Lens' AttachPolicy Text
attachPolicy_directoryArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AttachPolicy' {Text
directoryArn :: Text
$sel:directoryArn:AttachPolicy' :: AttachPolicy -> Text
directoryArn} -> Text
directoryArn) (\s :: AttachPolicy
s@AttachPolicy' {} Text
a -> AttachPolicy
s {$sel:directoryArn:AttachPolicy' :: Text
directoryArn = Text
a} :: AttachPolicy)
attachPolicy_policyReference :: Lens.Lens' AttachPolicy ObjectReference
attachPolicy_policyReference :: Lens' AttachPolicy ObjectReference
attachPolicy_policyReference = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AttachPolicy' {ObjectReference
policyReference :: ObjectReference
$sel:policyReference:AttachPolicy' :: AttachPolicy -> ObjectReference
policyReference} -> ObjectReference
policyReference) (\s :: AttachPolicy
s@AttachPolicy' {} ObjectReference
a -> AttachPolicy
s {$sel:policyReference:AttachPolicy' :: ObjectReference
policyReference = ObjectReference
a} :: AttachPolicy)
attachPolicy_objectReference :: Lens.Lens' AttachPolicy ObjectReference
attachPolicy_objectReference :: Lens' AttachPolicy ObjectReference
attachPolicy_objectReference = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AttachPolicy' {ObjectReference
objectReference :: ObjectReference
$sel:objectReference:AttachPolicy' :: AttachPolicy -> ObjectReference
objectReference} -> ObjectReference
objectReference) (\s :: AttachPolicy
s@AttachPolicy' {} ObjectReference
a -> AttachPolicy
s {$sel:objectReference:AttachPolicy' :: ObjectReference
objectReference = ObjectReference
a} :: AttachPolicy)
instance Core.AWSRequest AttachPolicy where
type AWSResponse AttachPolicy = AttachPolicyResponse
request :: (Service -> Service) -> AttachPolicy -> Request AttachPolicy
request Service -> Service
overrides =
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy AttachPolicy
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse AttachPolicy)))
response =
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
( \Int
s ResponseHeaders
h ()
x ->
Int -> AttachPolicyResponse
AttachPolicyResponse'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
)
instance Prelude.Hashable AttachPolicy where
hashWithSalt :: Int -> AttachPolicy -> Int
hashWithSalt Int
_salt AttachPolicy' {Text
ObjectReference
objectReference :: ObjectReference
policyReference :: ObjectReference
directoryArn :: Text
$sel:objectReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:policyReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:directoryArn:AttachPolicy' :: AttachPolicy -> Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
directoryArn
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ObjectReference
policyReference
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ObjectReference
objectReference
instance Prelude.NFData AttachPolicy where
rnf :: AttachPolicy -> ()
rnf AttachPolicy' {Text
ObjectReference
objectReference :: ObjectReference
policyReference :: ObjectReference
directoryArn :: Text
$sel:objectReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:policyReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:directoryArn:AttachPolicy' :: AttachPolicy -> Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Text
directoryArn
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ObjectReference
policyReference
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ObjectReference
objectReference
instance Data.ToHeaders AttachPolicy where
toHeaders :: AttachPolicy -> ResponseHeaders
toHeaders AttachPolicy' {Text
ObjectReference
objectReference :: ObjectReference
policyReference :: ObjectReference
directoryArn :: Text
$sel:objectReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:policyReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:directoryArn:AttachPolicy' :: AttachPolicy -> Text
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[HeaderName
"x-amz-data-partition" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Text
directoryArn]
instance Data.ToJSON AttachPolicy where
toJSON :: AttachPolicy -> Value
toJSON AttachPolicy' {Text
ObjectReference
objectReference :: ObjectReference
policyReference :: ObjectReference
directoryArn :: Text
$sel:objectReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:policyReference:AttachPolicy' :: AttachPolicy -> ObjectReference
$sel:directoryArn:AttachPolicy' :: AttachPolicy -> Text
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ forall a. a -> Maybe a
Prelude.Just
(Key
"PolicyReference" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ObjectReference
policyReference),
forall a. a -> Maybe a
Prelude.Just
(Key
"ObjectReference" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ObjectReference
objectReference)
]
)
instance Data.ToPath AttachPolicy where
toPath :: AttachPolicy -> ByteString
toPath =
forall a b. a -> b -> a
Prelude.const
ByteString
"/amazonclouddirectory/2017-01-11/policy/attach"
instance Data.ToQuery AttachPolicy where
toQuery :: AttachPolicy -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
data AttachPolicyResponse = AttachPolicyResponse'
{
AttachPolicyResponse -> Int
httpStatus :: Prelude.Int
}
deriving (AttachPolicyResponse -> AttachPolicyResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AttachPolicyResponse -> AttachPolicyResponse -> Bool
$c/= :: AttachPolicyResponse -> AttachPolicyResponse -> Bool
== :: AttachPolicyResponse -> AttachPolicyResponse -> Bool
$c== :: AttachPolicyResponse -> AttachPolicyResponse -> Bool
Prelude.Eq, ReadPrec [AttachPolicyResponse]
ReadPrec AttachPolicyResponse
Int -> ReadS AttachPolicyResponse
ReadS [AttachPolicyResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AttachPolicyResponse]
$creadListPrec :: ReadPrec [AttachPolicyResponse]
readPrec :: ReadPrec AttachPolicyResponse
$creadPrec :: ReadPrec AttachPolicyResponse
readList :: ReadS [AttachPolicyResponse]
$creadList :: ReadS [AttachPolicyResponse]
readsPrec :: Int -> ReadS AttachPolicyResponse
$creadsPrec :: Int -> ReadS AttachPolicyResponse
Prelude.Read, Int -> AttachPolicyResponse -> ShowS
[AttachPolicyResponse] -> ShowS
AttachPolicyResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AttachPolicyResponse] -> ShowS
$cshowList :: [AttachPolicyResponse] -> ShowS
show :: AttachPolicyResponse -> String
$cshow :: AttachPolicyResponse -> String
showsPrec :: Int -> AttachPolicyResponse -> ShowS
$cshowsPrec :: Int -> AttachPolicyResponse -> ShowS
Prelude.Show, forall x. Rep AttachPolicyResponse x -> AttachPolicyResponse
forall x. AttachPolicyResponse -> Rep AttachPolicyResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AttachPolicyResponse x -> AttachPolicyResponse
$cfrom :: forall x. AttachPolicyResponse -> Rep AttachPolicyResponse x
Prelude.Generic)
newAttachPolicyResponse ::
Prelude.Int ->
AttachPolicyResponse
newAttachPolicyResponse :: Int -> AttachPolicyResponse
newAttachPolicyResponse Int
pHttpStatus_ =
AttachPolicyResponse' {$sel:httpStatus:AttachPolicyResponse' :: Int
httpStatus = Int
pHttpStatus_}
attachPolicyResponse_httpStatus :: Lens.Lens' AttachPolicyResponse Prelude.Int
attachPolicyResponse_httpStatus :: Lens' AttachPolicyResponse Int
attachPolicyResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AttachPolicyResponse' {Int
httpStatus :: Int
$sel:httpStatus:AttachPolicyResponse' :: AttachPolicyResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: AttachPolicyResponse
s@AttachPolicyResponse' {} Int
a -> AttachPolicyResponse
s {$sel:httpStatus:AttachPolicyResponse' :: Int
httpStatus = Int
a} :: AttachPolicyResponse)
instance Prelude.NFData AttachPolicyResponse where
rnf :: AttachPolicyResponse -> ()
rnf AttachPolicyResponse' {Int
httpStatus :: Int
$sel:httpStatus:AttachPolicyResponse' :: AttachPolicyResponse -> Int
..} =
forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus