{-# 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.SNS.CreateTopic
(
CreateTopic (..),
newCreateTopic,
createTopic_attributes,
createTopic_dataProtectionPolicy,
createTopic_tags,
createTopic_name,
CreateTopicResponse (..),
newCreateTopicResponse,
createTopicResponse_topicArn,
createTopicResponse_httpStatus,
)
where
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
import Amazonka.SNS.Types
data CreateTopic = CreateTopic'
{
CreateTopic -> Maybe (HashMap Text Text)
attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
CreateTopic -> Maybe Text
dataProtectionPolicy :: Prelude.Maybe Prelude.Text,
CreateTopic -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
CreateTopic -> Text
name :: Prelude.Text
}
deriving (CreateTopic -> CreateTopic -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTopic -> CreateTopic -> Bool
$c/= :: CreateTopic -> CreateTopic -> Bool
== :: CreateTopic -> CreateTopic -> Bool
$c== :: CreateTopic -> CreateTopic -> Bool
Prelude.Eq, ReadPrec [CreateTopic]
ReadPrec CreateTopic
Int -> ReadS CreateTopic
ReadS [CreateTopic]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTopic]
$creadListPrec :: ReadPrec [CreateTopic]
readPrec :: ReadPrec CreateTopic
$creadPrec :: ReadPrec CreateTopic
readList :: ReadS [CreateTopic]
$creadList :: ReadS [CreateTopic]
readsPrec :: Int -> ReadS CreateTopic
$creadsPrec :: Int -> ReadS CreateTopic
Prelude.Read, Int -> CreateTopic -> ShowS
[CreateTopic] -> ShowS
CreateTopic -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTopic] -> ShowS
$cshowList :: [CreateTopic] -> ShowS
show :: CreateTopic -> String
$cshow :: CreateTopic -> String
showsPrec :: Int -> CreateTopic -> ShowS
$cshowsPrec :: Int -> CreateTopic -> ShowS
Prelude.Show, forall x. Rep CreateTopic x -> CreateTopic
forall x. CreateTopic -> Rep CreateTopic x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTopic x -> CreateTopic
$cfrom :: forall x. CreateTopic -> Rep CreateTopic x
Prelude.Generic)
newCreateTopic ::
Prelude.Text ->
CreateTopic
newCreateTopic :: Text -> CreateTopic
newCreateTopic Text
pName_ =
CreateTopic'
{ $sel:attributes:CreateTopic' :: Maybe (HashMap Text Text)
attributes = forall a. Maybe a
Prelude.Nothing,
$sel:dataProtectionPolicy:CreateTopic' :: Maybe Text
dataProtectionPolicy = forall a. Maybe a
Prelude.Nothing,
$sel:tags:CreateTopic' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
$sel:name:CreateTopic' :: Text
name = Text
pName_
}
createTopic_attributes :: Lens.Lens' CreateTopic (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createTopic_attributes :: Lens' CreateTopic (Maybe (HashMap Text Text))
createTopic_attributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTopic' {Maybe (HashMap Text Text)
attributes :: Maybe (HashMap Text Text)
$sel:attributes:CreateTopic' :: CreateTopic -> Maybe (HashMap Text Text)
attributes} -> Maybe (HashMap Text Text)
attributes) (\s :: CreateTopic
s@CreateTopic' {} Maybe (HashMap Text Text)
a -> CreateTopic
s {$sel:attributes:CreateTopic' :: Maybe (HashMap Text Text)
attributes = Maybe (HashMap Text Text)
a} :: CreateTopic) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
createTopic_dataProtectionPolicy :: Lens.Lens' CreateTopic (Prelude.Maybe Prelude.Text)
createTopic_dataProtectionPolicy :: Lens' CreateTopic (Maybe Text)
createTopic_dataProtectionPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTopic' {Maybe Text
dataProtectionPolicy :: Maybe Text
$sel:dataProtectionPolicy:CreateTopic' :: CreateTopic -> Maybe Text
dataProtectionPolicy} -> Maybe Text
dataProtectionPolicy) (\s :: CreateTopic
s@CreateTopic' {} Maybe Text
a -> CreateTopic
s {$sel:dataProtectionPolicy:CreateTopic' :: Maybe Text
dataProtectionPolicy = Maybe Text
a} :: CreateTopic)
createTopic_tags :: Lens.Lens' CreateTopic (Prelude.Maybe [Tag])
createTopic_tags :: Lens' CreateTopic (Maybe [Tag])
createTopic_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTopic' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateTopic' :: CreateTopic -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateTopic
s@CreateTopic' {} Maybe [Tag]
a -> CreateTopic
s {$sel:tags:CreateTopic' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateTopic) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
createTopic_name :: Lens.Lens' CreateTopic Prelude.Text
createTopic_name :: Lens' CreateTopic Text
createTopic_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTopic' {Text
name :: Text
$sel:name:CreateTopic' :: CreateTopic -> Text
name} -> Text
name) (\s :: CreateTopic
s@CreateTopic' {} Text
a -> CreateTopic
s {$sel:name:CreateTopic' :: Text
name = Text
a} :: CreateTopic)
instance Core.AWSRequest CreateTopic where
type AWSResponse CreateTopic = CreateTopicResponse
request :: (Service -> Service) -> CreateTopic -> Request CreateTopic
request Service -> Service
overrides =
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateTopic
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateTopic)))
response =
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
-> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
Text
"CreateTopicResult"
( \Int
s ResponseHeaders
h [Node]
x ->
Maybe Text -> Int -> CreateTopicResponse
CreateTopicResponse'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TopicArn")
forall (f :: * -> *) a b. Applicative f => 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 CreateTopic where
hashWithSalt :: Int -> CreateTopic -> Int
hashWithSalt Int
_salt CreateTopic' {Maybe [Tag]
Maybe Text
Maybe (HashMap Text Text)
Text
name :: Text
tags :: Maybe [Tag]
dataProtectionPolicy :: Maybe Text
attributes :: Maybe (HashMap Text Text)
$sel:name:CreateTopic' :: CreateTopic -> Text
$sel:tags:CreateTopic' :: CreateTopic -> Maybe [Tag]
$sel:dataProtectionPolicy:CreateTopic' :: CreateTopic -> Maybe Text
$sel:attributes:CreateTopic' :: CreateTopic -> Maybe (HashMap Text Text)
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
attributes
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dataProtectionPolicy
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
instance Prelude.NFData CreateTopic where
rnf :: CreateTopic -> ()
rnf CreateTopic' {Maybe [Tag]
Maybe Text
Maybe (HashMap Text Text)
Text
name :: Text
tags :: Maybe [Tag]
dataProtectionPolicy :: Maybe Text
attributes :: Maybe (HashMap Text Text)
$sel:name:CreateTopic' :: CreateTopic -> Text
$sel:tags:CreateTopic' :: CreateTopic -> Maybe [Tag]
$sel:dataProtectionPolicy:CreateTopic' :: CreateTopic -> Maybe Text
$sel:attributes:CreateTopic' :: CreateTopic -> Maybe (HashMap Text Text)
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
attributes
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dataProtectionPolicy
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
instance Data.ToHeaders CreateTopic where
toHeaders :: CreateTopic -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
instance Data.ToPath CreateTopic where
toPath :: CreateTopic -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"
instance Data.ToQuery CreateTopic where
toQuery :: CreateTopic -> QueryString
toQuery CreateTopic' {Maybe [Tag]
Maybe Text
Maybe (HashMap Text Text)
Text
name :: Text
tags :: Maybe [Tag]
dataProtectionPolicy :: Maybe Text
attributes :: Maybe (HashMap Text Text)
$sel:name:CreateTopic' :: CreateTopic -> Text
$sel:tags:CreateTopic' :: CreateTopic -> Maybe [Tag]
$sel:dataProtectionPolicy:CreateTopic' :: CreateTopic -> Maybe Text
$sel:attributes:CreateTopic' :: CreateTopic -> Maybe (HashMap Text Text)
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ ByteString
"Action"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"CreateTopic" :: Prelude.ByteString),
ByteString
"Version"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-03-31" :: Prelude.ByteString),
ByteString
"Attributes"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
( forall k v.
(ToQuery k, ToQuery v) =>
ByteString
-> ByteString -> ByteString -> HashMap k v -> QueryString
Data.toQueryMap ByteString
"entry" ByteString
"key" ByteString
"value"
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
attributes
),
ByteString
"DataProtectionPolicy" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dataProtectionPolicy,
ByteString
"Tags"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
(forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags),
ByteString
"Name" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
name
]
data CreateTopicResponse = CreateTopicResponse'
{
CreateTopicResponse -> Maybe Text
topicArn :: Prelude.Maybe Prelude.Text,
CreateTopicResponse -> Int
httpStatus :: Prelude.Int
}
deriving (CreateTopicResponse -> CreateTopicResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTopicResponse -> CreateTopicResponse -> Bool
$c/= :: CreateTopicResponse -> CreateTopicResponse -> Bool
== :: CreateTopicResponse -> CreateTopicResponse -> Bool
$c== :: CreateTopicResponse -> CreateTopicResponse -> Bool
Prelude.Eq, ReadPrec [CreateTopicResponse]
ReadPrec CreateTopicResponse
Int -> ReadS CreateTopicResponse
ReadS [CreateTopicResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTopicResponse]
$creadListPrec :: ReadPrec [CreateTopicResponse]
readPrec :: ReadPrec CreateTopicResponse
$creadPrec :: ReadPrec CreateTopicResponse
readList :: ReadS [CreateTopicResponse]
$creadList :: ReadS [CreateTopicResponse]
readsPrec :: Int -> ReadS CreateTopicResponse
$creadsPrec :: Int -> ReadS CreateTopicResponse
Prelude.Read, Int -> CreateTopicResponse -> ShowS
[CreateTopicResponse] -> ShowS
CreateTopicResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTopicResponse] -> ShowS
$cshowList :: [CreateTopicResponse] -> ShowS
show :: CreateTopicResponse -> String
$cshow :: CreateTopicResponse -> String
showsPrec :: Int -> CreateTopicResponse -> ShowS
$cshowsPrec :: Int -> CreateTopicResponse -> ShowS
Prelude.Show, forall x. Rep CreateTopicResponse x -> CreateTopicResponse
forall x. CreateTopicResponse -> Rep CreateTopicResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTopicResponse x -> CreateTopicResponse
$cfrom :: forall x. CreateTopicResponse -> Rep CreateTopicResponse x
Prelude.Generic)
newCreateTopicResponse ::
Prelude.Int ->
CreateTopicResponse
newCreateTopicResponse :: Int -> CreateTopicResponse
newCreateTopicResponse Int
pHttpStatus_ =
CreateTopicResponse'
{ $sel:topicArn:CreateTopicResponse' :: Maybe Text
topicArn = forall a. Maybe a
Prelude.Nothing,
$sel:httpStatus:CreateTopicResponse' :: Int
httpStatus = Int
pHttpStatus_
}
createTopicResponse_topicArn :: Lens.Lens' CreateTopicResponse (Prelude.Maybe Prelude.Text)
createTopicResponse_topicArn :: Lens' CreateTopicResponse (Maybe Text)
createTopicResponse_topicArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTopicResponse' {Maybe Text
topicArn :: Maybe Text
$sel:topicArn:CreateTopicResponse' :: CreateTopicResponse -> Maybe Text
topicArn} -> Maybe Text
topicArn) (\s :: CreateTopicResponse
s@CreateTopicResponse' {} Maybe Text
a -> CreateTopicResponse
s {$sel:topicArn:CreateTopicResponse' :: Maybe Text
topicArn = Maybe Text
a} :: CreateTopicResponse)
createTopicResponse_httpStatus :: Lens.Lens' CreateTopicResponse Prelude.Int
createTopicResponse_httpStatus :: Lens' CreateTopicResponse Int
createTopicResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTopicResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateTopicResponse' :: CreateTopicResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateTopicResponse
s@CreateTopicResponse' {} Int
a -> CreateTopicResponse
s {$sel:httpStatus:CreateTopicResponse' :: Int
httpStatus = Int
a} :: CreateTopicResponse)
instance Prelude.NFData CreateTopicResponse where
rnf :: CreateTopicResponse -> ()
rnf CreateTopicResponse' {Int
Maybe Text
httpStatus :: Int
topicArn :: Maybe Text
$sel:httpStatus:CreateTopicResponse' :: CreateTopicResponse -> Int
$sel:topicArn:CreateTopicResponse' :: CreateTopicResponse -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
topicArn
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus