{-# 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 #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.WorkSpacesWeb.DeleteIdentityProvider
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes the identity provider.
module Amazonka.WorkSpacesWeb.DeleteIdentityProvider
  ( -- * Creating a Request
    DeleteIdentityProvider (..),
    newDeleteIdentityProvider,

    -- * Request Lenses
    deleteIdentityProvider_identityProviderArn,

    -- * Destructuring the Response
    DeleteIdentityProviderResponse (..),
    newDeleteIdentityProviderResponse,

    -- * Response Lenses
    deleteIdentityProviderResponse_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.WorkSpacesWeb.Types

-- | /See:/ 'newDeleteIdentityProvider' smart constructor.
data DeleteIdentityProvider = DeleteIdentityProvider'
  { -- | The ARN of the identity provider.
    DeleteIdentityProvider -> Text
identityProviderArn :: Prelude.Text
  }
  deriving (DeleteIdentityProvider -> DeleteIdentityProvider -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteIdentityProvider -> DeleteIdentityProvider -> Bool
$c/= :: DeleteIdentityProvider -> DeleteIdentityProvider -> Bool
== :: DeleteIdentityProvider -> DeleteIdentityProvider -> Bool
$c== :: DeleteIdentityProvider -> DeleteIdentityProvider -> Bool
Prelude.Eq, ReadPrec [DeleteIdentityProvider]
ReadPrec DeleteIdentityProvider
Int -> ReadS DeleteIdentityProvider
ReadS [DeleteIdentityProvider]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteIdentityProvider]
$creadListPrec :: ReadPrec [DeleteIdentityProvider]
readPrec :: ReadPrec DeleteIdentityProvider
$creadPrec :: ReadPrec DeleteIdentityProvider
readList :: ReadS [DeleteIdentityProvider]
$creadList :: ReadS [DeleteIdentityProvider]
readsPrec :: Int -> ReadS DeleteIdentityProvider
$creadsPrec :: Int -> ReadS DeleteIdentityProvider
Prelude.Read, Int -> DeleteIdentityProvider -> ShowS
[DeleteIdentityProvider] -> ShowS
DeleteIdentityProvider -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteIdentityProvider] -> ShowS
$cshowList :: [DeleteIdentityProvider] -> ShowS
show :: DeleteIdentityProvider -> String
$cshow :: DeleteIdentityProvider -> String
showsPrec :: Int -> DeleteIdentityProvider -> ShowS
$cshowsPrec :: Int -> DeleteIdentityProvider -> ShowS
Prelude.Show, forall x. Rep DeleteIdentityProvider x -> DeleteIdentityProvider
forall x. DeleteIdentityProvider -> Rep DeleteIdentityProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteIdentityProvider x -> DeleteIdentityProvider
$cfrom :: forall x. DeleteIdentityProvider -> Rep DeleteIdentityProvider x
Prelude.Generic)

-- |
-- Create a value of 'DeleteIdentityProvider' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'identityProviderArn', 'deleteIdentityProvider_identityProviderArn' - The ARN of the identity provider.
newDeleteIdentityProvider ::
  -- | 'identityProviderArn'
  Prelude.Text ->
  DeleteIdentityProvider
newDeleteIdentityProvider :: Text -> DeleteIdentityProvider
newDeleteIdentityProvider Text
pIdentityProviderArn_ =
  DeleteIdentityProvider'
    { $sel:identityProviderArn:DeleteIdentityProvider' :: Text
identityProviderArn =
        Text
pIdentityProviderArn_
    }

-- | The ARN of the identity provider.
deleteIdentityProvider_identityProviderArn :: Lens.Lens' DeleteIdentityProvider Prelude.Text
deleteIdentityProvider_identityProviderArn :: Lens' DeleteIdentityProvider Text
deleteIdentityProvider_identityProviderArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteIdentityProvider' {Text
identityProviderArn :: Text
$sel:identityProviderArn:DeleteIdentityProvider' :: DeleteIdentityProvider -> Text
identityProviderArn} -> Text
identityProviderArn) (\s :: DeleteIdentityProvider
s@DeleteIdentityProvider' {} Text
a -> DeleteIdentityProvider
s {$sel:identityProviderArn:DeleteIdentityProvider' :: Text
identityProviderArn = Text
a} :: DeleteIdentityProvider)

instance Core.AWSRequest DeleteIdentityProvider where
  type
    AWSResponse DeleteIdentityProvider =
      DeleteIdentityProviderResponse
  request :: (Service -> Service)
-> DeleteIdentityProvider -> Request DeleteIdentityProvider
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteIdentityProvider
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteIdentityProvider)))
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 -> DeleteIdentityProviderResponse
DeleteIdentityProviderResponse'
            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 DeleteIdentityProvider where
  hashWithSalt :: Int -> DeleteIdentityProvider -> Int
hashWithSalt Int
_salt DeleteIdentityProvider' {Text
identityProviderArn :: Text
$sel:identityProviderArn:DeleteIdentityProvider' :: DeleteIdentityProvider -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
identityProviderArn

instance Prelude.NFData DeleteIdentityProvider where
  rnf :: DeleteIdentityProvider -> ()
rnf DeleteIdentityProvider' {Text
identityProviderArn :: Text
$sel:identityProviderArn:DeleteIdentityProvider' :: DeleteIdentityProvider -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
identityProviderArn

instance Data.ToHeaders DeleteIdentityProvider where
  toHeaders :: DeleteIdentityProvider -> 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.ToPath DeleteIdentityProvider where
  toPath :: DeleteIdentityProvider -> ByteString
toPath DeleteIdentityProvider' {Text
identityProviderArn :: Text
$sel:identityProviderArn:DeleteIdentityProvider' :: DeleteIdentityProvider -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/identityProviders/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
identityProviderArn
      ]

instance Data.ToQuery DeleteIdentityProvider where
  toQuery :: DeleteIdentityProvider -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDeleteIdentityProviderResponse' smart constructor.
data DeleteIdentityProviderResponse = DeleteIdentityProviderResponse'
  { -- | The response's http status code.
    DeleteIdentityProviderResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteIdentityProviderResponse
-> DeleteIdentityProviderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteIdentityProviderResponse
-> DeleteIdentityProviderResponse -> Bool
$c/= :: DeleteIdentityProviderResponse
-> DeleteIdentityProviderResponse -> Bool
== :: DeleteIdentityProviderResponse
-> DeleteIdentityProviderResponse -> Bool
$c== :: DeleteIdentityProviderResponse
-> DeleteIdentityProviderResponse -> Bool
Prelude.Eq, ReadPrec [DeleteIdentityProviderResponse]
ReadPrec DeleteIdentityProviderResponse
Int -> ReadS DeleteIdentityProviderResponse
ReadS [DeleteIdentityProviderResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteIdentityProviderResponse]
$creadListPrec :: ReadPrec [DeleteIdentityProviderResponse]
readPrec :: ReadPrec DeleteIdentityProviderResponse
$creadPrec :: ReadPrec DeleteIdentityProviderResponse
readList :: ReadS [DeleteIdentityProviderResponse]
$creadList :: ReadS [DeleteIdentityProviderResponse]
readsPrec :: Int -> ReadS DeleteIdentityProviderResponse
$creadsPrec :: Int -> ReadS DeleteIdentityProviderResponse
Prelude.Read, Int -> DeleteIdentityProviderResponse -> ShowS
[DeleteIdentityProviderResponse] -> ShowS
DeleteIdentityProviderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteIdentityProviderResponse] -> ShowS
$cshowList :: [DeleteIdentityProviderResponse] -> ShowS
show :: DeleteIdentityProviderResponse -> String
$cshow :: DeleteIdentityProviderResponse -> String
showsPrec :: Int -> DeleteIdentityProviderResponse -> ShowS
$cshowsPrec :: Int -> DeleteIdentityProviderResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteIdentityProviderResponse x
-> DeleteIdentityProviderResponse
forall x.
DeleteIdentityProviderResponse
-> Rep DeleteIdentityProviderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteIdentityProviderResponse x
-> DeleteIdentityProviderResponse
$cfrom :: forall x.
DeleteIdentityProviderResponse
-> Rep DeleteIdentityProviderResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteIdentityProviderResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'httpStatus', 'deleteIdentityProviderResponse_httpStatus' - The response's http status code.
newDeleteIdentityProviderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteIdentityProviderResponse
newDeleteIdentityProviderResponse :: Int -> DeleteIdentityProviderResponse
newDeleteIdentityProviderResponse Int
pHttpStatus_ =
  DeleteIdentityProviderResponse'
    { $sel:httpStatus:DeleteIdentityProviderResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

-- | The response's http status code.
deleteIdentityProviderResponse_httpStatus :: Lens.Lens' DeleteIdentityProviderResponse Prelude.Int
deleteIdentityProviderResponse_httpStatus :: Lens' DeleteIdentityProviderResponse Int
deleteIdentityProviderResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteIdentityProviderResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteIdentityProviderResponse' :: DeleteIdentityProviderResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DeleteIdentityProviderResponse
s@DeleteIdentityProviderResponse' {} Int
a -> DeleteIdentityProviderResponse
s {$sel:httpStatus:DeleteIdentityProviderResponse' :: Int
httpStatus = Int
a} :: DeleteIdentityProviderResponse)

instance
  Prelude.NFData
    DeleteIdentityProviderResponse
  where
  rnf :: DeleteIdentityProviderResponse -> ()
rnf DeleteIdentityProviderResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteIdentityProviderResponse' :: DeleteIdentityProviderResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus