{-# 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.GetIdentityProvider
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the identity provider.
module Amazonka.WorkSpacesWeb.GetIdentityProvider
  ( -- * Creating a Request
    GetIdentityProvider (..),
    newGetIdentityProvider,

    -- * Request Lenses
    getIdentityProvider_identityProviderArn,

    -- * Destructuring the Response
    GetIdentityProviderResponse (..),
    newGetIdentityProviderResponse,

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

-- |
-- Create a value of 'GetIdentityProvider' 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', 'getIdentityProvider_identityProviderArn' - The ARN of the identity provider.
newGetIdentityProvider ::
  -- | 'identityProviderArn'
  Prelude.Text ->
  GetIdentityProvider
newGetIdentityProvider :: Text -> GetIdentityProvider
newGetIdentityProvider Text
pIdentityProviderArn_ =
  GetIdentityProvider'
    { $sel:identityProviderArn:GetIdentityProvider' :: Text
identityProviderArn =
        Text
pIdentityProviderArn_
    }

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

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

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

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

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

-- | /See:/ 'newGetIdentityProviderResponse' smart constructor.
data GetIdentityProviderResponse = GetIdentityProviderResponse'
  { -- | The identity provider.
    GetIdentityProviderResponse -> Maybe IdentityProvider
identityProvider :: Prelude.Maybe IdentityProvider,
    -- | The response's http status code.
    GetIdentityProviderResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetIdentityProviderResponse -> GetIdentityProviderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetIdentityProviderResponse -> GetIdentityProviderResponse -> Bool
$c/= :: GetIdentityProviderResponse -> GetIdentityProviderResponse -> Bool
== :: GetIdentityProviderResponse -> GetIdentityProviderResponse -> Bool
$c== :: GetIdentityProviderResponse -> GetIdentityProviderResponse -> Bool
Prelude.Eq, Int -> GetIdentityProviderResponse -> ShowS
[GetIdentityProviderResponse] -> ShowS
GetIdentityProviderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetIdentityProviderResponse] -> ShowS
$cshowList :: [GetIdentityProviderResponse] -> ShowS
show :: GetIdentityProviderResponse -> String
$cshow :: GetIdentityProviderResponse -> String
showsPrec :: Int -> GetIdentityProviderResponse -> ShowS
$cshowsPrec :: Int -> GetIdentityProviderResponse -> ShowS
Prelude.Show, forall x.
Rep GetIdentityProviderResponse x -> GetIdentityProviderResponse
forall x.
GetIdentityProviderResponse -> Rep GetIdentityProviderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetIdentityProviderResponse x -> GetIdentityProviderResponse
$cfrom :: forall x.
GetIdentityProviderResponse -> Rep GetIdentityProviderResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetIdentityProviderResponse' 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:
--
-- 'identityProvider', 'getIdentityProviderResponse_identityProvider' - The identity provider.
--
-- 'httpStatus', 'getIdentityProviderResponse_httpStatus' - The response's http status code.
newGetIdentityProviderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetIdentityProviderResponse
newGetIdentityProviderResponse :: Int -> GetIdentityProviderResponse
newGetIdentityProviderResponse Int
pHttpStatus_ =
  GetIdentityProviderResponse'
    { $sel:identityProvider:GetIdentityProviderResponse' :: Maybe IdentityProvider
identityProvider =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetIdentityProviderResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The identity provider.
getIdentityProviderResponse_identityProvider :: Lens.Lens' GetIdentityProviderResponse (Prelude.Maybe IdentityProvider)
getIdentityProviderResponse_identityProvider :: Lens' GetIdentityProviderResponse (Maybe IdentityProvider)
getIdentityProviderResponse_identityProvider = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetIdentityProviderResponse' {Maybe IdentityProvider
identityProvider :: Maybe IdentityProvider
$sel:identityProvider:GetIdentityProviderResponse' :: GetIdentityProviderResponse -> Maybe IdentityProvider
identityProvider} -> Maybe IdentityProvider
identityProvider) (\s :: GetIdentityProviderResponse
s@GetIdentityProviderResponse' {} Maybe IdentityProvider
a -> GetIdentityProviderResponse
s {$sel:identityProvider:GetIdentityProviderResponse' :: Maybe IdentityProvider
identityProvider = Maybe IdentityProvider
a} :: GetIdentityProviderResponse)

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

instance Prelude.NFData GetIdentityProviderResponse where
  rnf :: GetIdentityProviderResponse -> ()
rnf GetIdentityProviderResponse' {Int
Maybe IdentityProvider
httpStatus :: Int
identityProvider :: Maybe IdentityProvider
$sel:httpStatus:GetIdentityProviderResponse' :: GetIdentityProviderResponse -> Int
$sel:identityProvider:GetIdentityProviderResponse' :: GetIdentityProviderResponse -> Maybe IdentityProvider
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe IdentityProvider
identityProvider
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus