{-# 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.ManagedBlockChain.CreateAccessor
  ( 
    CreateAccessor (..),
    newCreateAccessor,
    
    createAccessor_clientRequestToken,
    createAccessor_accessorType,
    
    CreateAccessorResponse (..),
    newCreateAccessorResponse,
    
    createAccessorResponse_accessorId,
    createAccessorResponse_billingToken,
    createAccessorResponse_httpStatus,
  )
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ManagedBlockChain.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
data CreateAccessor = CreateAccessor'
  { 
    
    
    
    
    CreateAccessor -> Text
clientRequestToken :: Prelude.Text,
    
    
    
    CreateAccessor -> AccessorType
accessorType :: AccessorType
  }
  deriving (CreateAccessor -> CreateAccessor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateAccessor -> CreateAccessor -> Bool
$c/= :: CreateAccessor -> CreateAccessor -> Bool
== :: CreateAccessor -> CreateAccessor -> Bool
$c== :: CreateAccessor -> CreateAccessor -> Bool
Prelude.Eq, ReadPrec [CreateAccessor]
ReadPrec CreateAccessor
Int -> ReadS CreateAccessor
ReadS [CreateAccessor]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateAccessor]
$creadListPrec :: ReadPrec [CreateAccessor]
readPrec :: ReadPrec CreateAccessor
$creadPrec :: ReadPrec CreateAccessor
readList :: ReadS [CreateAccessor]
$creadList :: ReadS [CreateAccessor]
readsPrec :: Int -> ReadS CreateAccessor
$creadsPrec :: Int -> ReadS CreateAccessor
Prelude.Read, Int -> CreateAccessor -> ShowS
[CreateAccessor] -> ShowS
CreateAccessor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateAccessor] -> ShowS
$cshowList :: [CreateAccessor] -> ShowS
show :: CreateAccessor -> String
$cshow :: CreateAccessor -> String
showsPrec :: Int -> CreateAccessor -> ShowS
$cshowsPrec :: Int -> CreateAccessor -> ShowS
Prelude.Show, forall x. Rep CreateAccessor x -> CreateAccessor
forall x. CreateAccessor -> Rep CreateAccessor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateAccessor x -> CreateAccessor
$cfrom :: forall x. CreateAccessor -> Rep CreateAccessor x
Prelude.Generic)
newCreateAccessor ::
  
  Prelude.Text ->
  
  AccessorType ->
  CreateAccessor
newCreateAccessor :: Text -> AccessorType -> CreateAccessor
newCreateAccessor Text
pClientRequestToken_ AccessorType
pAccessorType_ =
  CreateAccessor'
    { $sel:clientRequestToken:CreateAccessor' :: Text
clientRequestToken =
        Text
pClientRequestToken_,
      $sel:accessorType:CreateAccessor' :: AccessorType
accessorType = AccessorType
pAccessorType_
    }
createAccessor_clientRequestToken :: Lens.Lens' CreateAccessor Prelude.Text
createAccessor_clientRequestToken :: Lens' CreateAccessor Text
createAccessor_clientRequestToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessor' {Text
clientRequestToken :: Text
$sel:clientRequestToken:CreateAccessor' :: CreateAccessor -> Text
clientRequestToken} -> Text
clientRequestToken) (\s :: CreateAccessor
s@CreateAccessor' {} Text
a -> CreateAccessor
s {$sel:clientRequestToken:CreateAccessor' :: Text
clientRequestToken = Text
a} :: CreateAccessor)
createAccessor_accessorType :: Lens.Lens' CreateAccessor AccessorType
createAccessor_accessorType :: Lens' CreateAccessor AccessorType
createAccessor_accessorType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessor' {AccessorType
accessorType :: AccessorType
$sel:accessorType:CreateAccessor' :: CreateAccessor -> AccessorType
accessorType} -> AccessorType
accessorType) (\s :: CreateAccessor
s@CreateAccessor' {} AccessorType
a -> CreateAccessor
s {$sel:accessorType:CreateAccessor' :: AccessorType
accessorType = AccessorType
a} :: CreateAccessor)
instance Core.AWSRequest CreateAccessor where
  type
    AWSResponse CreateAccessor =
      CreateAccessorResponse
  request :: (Service -> Service) -> CreateAccessor -> Request CreateAccessor
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateAccessor
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateAccessor)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Maybe Text -> Int -> CreateAccessorResponse
CreateAccessorResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"AccessorId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"BillingToken")
            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 CreateAccessor where
  hashWithSalt :: Int -> CreateAccessor -> Int
hashWithSalt Int
_salt CreateAccessor' {Text
AccessorType
accessorType :: AccessorType
clientRequestToken :: Text
$sel:accessorType:CreateAccessor' :: CreateAccessor -> AccessorType
$sel:clientRequestToken:CreateAccessor' :: CreateAccessor -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientRequestToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` AccessorType
accessorType
instance Prelude.NFData CreateAccessor where
  rnf :: CreateAccessor -> ()
rnf CreateAccessor' {Text
AccessorType
accessorType :: AccessorType
clientRequestToken :: Text
$sel:accessorType:CreateAccessor' :: CreateAccessor -> AccessorType
$sel:clientRequestToken:CreateAccessor' :: CreateAccessor -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
clientRequestToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf AccessorType
accessorType
instance Data.ToHeaders CreateAccessor where
  toHeaders :: CreateAccessor -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )
instance Data.ToJSON CreateAccessor where
  toJSON :: CreateAccessor -> Value
toJSON CreateAccessor' {Text
AccessorType
accessorType :: AccessorType
clientRequestToken :: Text
$sel:accessorType:CreateAccessor' :: CreateAccessor -> AccessorType
$sel:clientRequestToken:CreateAccessor' :: CreateAccessor -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"ClientRequestToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientRequestToken),
            forall a. a -> Maybe a
Prelude.Just (Key
"AccessorType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= AccessorType
accessorType)
          ]
      )
instance Data.ToPath CreateAccessor where
  toPath :: CreateAccessor -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/accessors"
instance Data.ToQuery CreateAccessor where
  toQuery :: CreateAccessor -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
data CreateAccessorResponse = CreateAccessorResponse'
  { 
    CreateAccessorResponse -> Maybe Text
accessorId :: Prelude.Maybe Prelude.Text,
    
    
    
    
    CreateAccessorResponse -> Maybe Text
billingToken :: Prelude.Maybe Prelude.Text,
    
    CreateAccessorResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateAccessorResponse -> CreateAccessorResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateAccessorResponse -> CreateAccessorResponse -> Bool
$c/= :: CreateAccessorResponse -> CreateAccessorResponse -> Bool
== :: CreateAccessorResponse -> CreateAccessorResponse -> Bool
$c== :: CreateAccessorResponse -> CreateAccessorResponse -> Bool
Prelude.Eq, ReadPrec [CreateAccessorResponse]
ReadPrec CreateAccessorResponse
Int -> ReadS CreateAccessorResponse
ReadS [CreateAccessorResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateAccessorResponse]
$creadListPrec :: ReadPrec [CreateAccessorResponse]
readPrec :: ReadPrec CreateAccessorResponse
$creadPrec :: ReadPrec CreateAccessorResponse
readList :: ReadS [CreateAccessorResponse]
$creadList :: ReadS [CreateAccessorResponse]
readsPrec :: Int -> ReadS CreateAccessorResponse
$creadsPrec :: Int -> ReadS CreateAccessorResponse
Prelude.Read, Int -> CreateAccessorResponse -> ShowS
[CreateAccessorResponse] -> ShowS
CreateAccessorResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateAccessorResponse] -> ShowS
$cshowList :: [CreateAccessorResponse] -> ShowS
show :: CreateAccessorResponse -> String
$cshow :: CreateAccessorResponse -> String
showsPrec :: Int -> CreateAccessorResponse -> ShowS
$cshowsPrec :: Int -> CreateAccessorResponse -> ShowS
Prelude.Show, forall x. Rep CreateAccessorResponse x -> CreateAccessorResponse
forall x. CreateAccessorResponse -> Rep CreateAccessorResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateAccessorResponse x -> CreateAccessorResponse
$cfrom :: forall x. CreateAccessorResponse -> Rep CreateAccessorResponse x
Prelude.Generic)
newCreateAccessorResponse ::
  
  Prelude.Int ->
  CreateAccessorResponse
newCreateAccessorResponse :: Int -> CreateAccessorResponse
newCreateAccessorResponse Int
pHttpStatus_ =
  CreateAccessorResponse'
    { $sel:accessorId:CreateAccessorResponse' :: Maybe Text
accessorId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:billingToken:CreateAccessorResponse' :: Maybe Text
billingToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateAccessorResponse' :: Int
httpStatus = Int
pHttpStatus_
    }
createAccessorResponse_accessorId :: Lens.Lens' CreateAccessorResponse (Prelude.Maybe Prelude.Text)
createAccessorResponse_accessorId :: Lens' CreateAccessorResponse (Maybe Text)
createAccessorResponse_accessorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessorResponse' {Maybe Text
accessorId :: Maybe Text
$sel:accessorId:CreateAccessorResponse' :: CreateAccessorResponse -> Maybe Text
accessorId} -> Maybe Text
accessorId) (\s :: CreateAccessorResponse
s@CreateAccessorResponse' {} Maybe Text
a -> CreateAccessorResponse
s {$sel:accessorId:CreateAccessorResponse' :: Maybe Text
accessorId = Maybe Text
a} :: CreateAccessorResponse)
createAccessorResponse_billingToken :: Lens.Lens' CreateAccessorResponse (Prelude.Maybe Prelude.Text)
createAccessorResponse_billingToken :: Lens' CreateAccessorResponse (Maybe Text)
createAccessorResponse_billingToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessorResponse' {Maybe Text
billingToken :: Maybe Text
$sel:billingToken:CreateAccessorResponse' :: CreateAccessorResponse -> Maybe Text
billingToken} -> Maybe Text
billingToken) (\s :: CreateAccessorResponse
s@CreateAccessorResponse' {} Maybe Text
a -> CreateAccessorResponse
s {$sel:billingToken:CreateAccessorResponse' :: Maybe Text
billingToken = Maybe Text
a} :: CreateAccessorResponse)
createAccessorResponse_httpStatus :: Lens.Lens' CreateAccessorResponse Prelude.Int
createAccessorResponse_httpStatus :: Lens' CreateAccessorResponse Int
createAccessorResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessorResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateAccessorResponse' :: CreateAccessorResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateAccessorResponse
s@CreateAccessorResponse' {} Int
a -> CreateAccessorResponse
s {$sel:httpStatus:CreateAccessorResponse' :: Int
httpStatus = Int
a} :: CreateAccessorResponse)
instance Prelude.NFData CreateAccessorResponse where
  rnf :: CreateAccessorResponse -> ()
rnf CreateAccessorResponse' {Int
Maybe Text
httpStatus :: Int
billingToken :: Maybe Text
accessorId :: Maybe Text
$sel:httpStatus:CreateAccessorResponse' :: CreateAccessorResponse -> Int
$sel:billingToken:CreateAccessorResponse' :: CreateAccessorResponse -> Maybe Text
$sel:accessorId:CreateAccessorResponse' :: CreateAccessorResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accessorId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
billingToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus