{-# 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.GetPortalServiceProviderMetadata
-- 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 service provider metadata.
module Amazonka.WorkSpacesWeb.GetPortalServiceProviderMetadata
  ( -- * Creating a Request
    GetPortalServiceProviderMetadata (..),
    newGetPortalServiceProviderMetadata,

    -- * Request Lenses
    getPortalServiceProviderMetadata_portalArn,

    -- * Destructuring the Response
    GetPortalServiceProviderMetadataResponse (..),
    newGetPortalServiceProviderMetadataResponse,

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

-- |
-- Create a value of 'GetPortalServiceProviderMetadata' 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:
--
-- 'portalArn', 'getPortalServiceProviderMetadata_portalArn' - The ARN of the web portal.
newGetPortalServiceProviderMetadata ::
  -- | 'portalArn'
  Prelude.Text ->
  GetPortalServiceProviderMetadata
newGetPortalServiceProviderMetadata :: Text -> GetPortalServiceProviderMetadata
newGetPortalServiceProviderMetadata Text
pPortalArn_ =
  GetPortalServiceProviderMetadata'
    { $sel:portalArn:GetPortalServiceProviderMetadata' :: Text
portalArn =
        Text
pPortalArn_
    }

-- | The ARN of the web portal.
getPortalServiceProviderMetadata_portalArn :: Lens.Lens' GetPortalServiceProviderMetadata Prelude.Text
getPortalServiceProviderMetadata_portalArn :: Lens' GetPortalServiceProviderMetadata Text
getPortalServiceProviderMetadata_portalArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPortalServiceProviderMetadata' {Text
portalArn :: Text
$sel:portalArn:GetPortalServiceProviderMetadata' :: GetPortalServiceProviderMetadata -> Text
portalArn} -> Text
portalArn) (\s :: GetPortalServiceProviderMetadata
s@GetPortalServiceProviderMetadata' {} Text
a -> GetPortalServiceProviderMetadata
s {$sel:portalArn:GetPortalServiceProviderMetadata' :: Text
portalArn = Text
a} :: GetPortalServiceProviderMetadata)

instance
  Core.AWSRequest
    GetPortalServiceProviderMetadata
  where
  type
    AWSResponse GetPortalServiceProviderMetadata =
      GetPortalServiceProviderMetadataResponse
  request :: (Service -> Service)
-> GetPortalServiceProviderMetadata
-> Request GetPortalServiceProviderMetadata
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 GetPortalServiceProviderMetadata
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetPortalServiceProviderMetadata)))
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
-> Int -> Text -> GetPortalServiceProviderMetadataResponse
GetPortalServiceProviderMetadataResponse'
            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
"serviceProviderSamlMetadata")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"portalArn")
      )

instance
  Prelude.Hashable
    GetPortalServiceProviderMetadata
  where
  hashWithSalt :: Int -> GetPortalServiceProviderMetadata -> Int
hashWithSalt
    Int
_salt
    GetPortalServiceProviderMetadata' {Text
portalArn :: Text
$sel:portalArn:GetPortalServiceProviderMetadata' :: GetPortalServiceProviderMetadata -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
portalArn

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

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

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

-- | /See:/ 'newGetPortalServiceProviderMetadataResponse' smart constructor.
data GetPortalServiceProviderMetadataResponse = GetPortalServiceProviderMetadataResponse'
  { -- | The service provider SAML metadata.
    GetPortalServiceProviderMetadataResponse -> Maybe Text
serviceProviderSamlMetadata :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetPortalServiceProviderMetadataResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ARN of the web portal.
    GetPortalServiceProviderMetadataResponse -> Text
portalArn :: Prelude.Text
  }
  deriving (GetPortalServiceProviderMetadataResponse
-> GetPortalServiceProviderMetadataResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPortalServiceProviderMetadataResponse
-> GetPortalServiceProviderMetadataResponse -> Bool
$c/= :: GetPortalServiceProviderMetadataResponse
-> GetPortalServiceProviderMetadataResponse -> Bool
== :: GetPortalServiceProviderMetadataResponse
-> GetPortalServiceProviderMetadataResponse -> Bool
$c== :: GetPortalServiceProviderMetadataResponse
-> GetPortalServiceProviderMetadataResponse -> Bool
Prelude.Eq, ReadPrec [GetPortalServiceProviderMetadataResponse]
ReadPrec GetPortalServiceProviderMetadataResponse
Int -> ReadS GetPortalServiceProviderMetadataResponse
ReadS [GetPortalServiceProviderMetadataResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPortalServiceProviderMetadataResponse]
$creadListPrec :: ReadPrec [GetPortalServiceProviderMetadataResponse]
readPrec :: ReadPrec GetPortalServiceProviderMetadataResponse
$creadPrec :: ReadPrec GetPortalServiceProviderMetadataResponse
readList :: ReadS [GetPortalServiceProviderMetadataResponse]
$creadList :: ReadS [GetPortalServiceProviderMetadataResponse]
readsPrec :: Int -> ReadS GetPortalServiceProviderMetadataResponse
$creadsPrec :: Int -> ReadS GetPortalServiceProviderMetadataResponse
Prelude.Read, Int -> GetPortalServiceProviderMetadataResponse -> ShowS
[GetPortalServiceProviderMetadataResponse] -> ShowS
GetPortalServiceProviderMetadataResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPortalServiceProviderMetadataResponse] -> ShowS
$cshowList :: [GetPortalServiceProviderMetadataResponse] -> ShowS
show :: GetPortalServiceProviderMetadataResponse -> String
$cshow :: GetPortalServiceProviderMetadataResponse -> String
showsPrec :: Int -> GetPortalServiceProviderMetadataResponse -> ShowS
$cshowsPrec :: Int -> GetPortalServiceProviderMetadataResponse -> ShowS
Prelude.Show, forall x.
Rep GetPortalServiceProviderMetadataResponse x
-> GetPortalServiceProviderMetadataResponse
forall x.
GetPortalServiceProviderMetadataResponse
-> Rep GetPortalServiceProviderMetadataResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetPortalServiceProviderMetadataResponse x
-> GetPortalServiceProviderMetadataResponse
$cfrom :: forall x.
GetPortalServiceProviderMetadataResponse
-> Rep GetPortalServiceProviderMetadataResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetPortalServiceProviderMetadataResponse' 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:
--
-- 'serviceProviderSamlMetadata', 'getPortalServiceProviderMetadataResponse_serviceProviderSamlMetadata' - The service provider SAML metadata.
--
-- 'httpStatus', 'getPortalServiceProviderMetadataResponse_httpStatus' - The response's http status code.
--
-- 'portalArn', 'getPortalServiceProviderMetadataResponse_portalArn' - The ARN of the web portal.
newGetPortalServiceProviderMetadataResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'portalArn'
  Prelude.Text ->
  GetPortalServiceProviderMetadataResponse
newGetPortalServiceProviderMetadataResponse :: Int -> Text -> GetPortalServiceProviderMetadataResponse
newGetPortalServiceProviderMetadataResponse
  Int
pHttpStatus_
  Text
pPortalArn_ =
    GetPortalServiceProviderMetadataResponse'
      { $sel:serviceProviderSamlMetadata:GetPortalServiceProviderMetadataResponse' :: Maybe Text
serviceProviderSamlMetadata =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetPortalServiceProviderMetadataResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:portalArn:GetPortalServiceProviderMetadataResponse' :: Text
portalArn = Text
pPortalArn_
      }

-- | The service provider SAML metadata.
getPortalServiceProviderMetadataResponse_serviceProviderSamlMetadata :: Lens.Lens' GetPortalServiceProviderMetadataResponse (Prelude.Maybe Prelude.Text)
getPortalServiceProviderMetadataResponse_serviceProviderSamlMetadata :: Lens' GetPortalServiceProviderMetadataResponse (Maybe Text)
getPortalServiceProviderMetadataResponse_serviceProviderSamlMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPortalServiceProviderMetadataResponse' {Maybe Text
serviceProviderSamlMetadata :: Maybe Text
$sel:serviceProviderSamlMetadata:GetPortalServiceProviderMetadataResponse' :: GetPortalServiceProviderMetadataResponse -> Maybe Text
serviceProviderSamlMetadata} -> Maybe Text
serviceProviderSamlMetadata) (\s :: GetPortalServiceProviderMetadataResponse
s@GetPortalServiceProviderMetadataResponse' {} Maybe Text
a -> GetPortalServiceProviderMetadataResponse
s {$sel:serviceProviderSamlMetadata:GetPortalServiceProviderMetadataResponse' :: Maybe Text
serviceProviderSamlMetadata = Maybe Text
a} :: GetPortalServiceProviderMetadataResponse)

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

-- | The ARN of the web portal.
getPortalServiceProviderMetadataResponse_portalArn :: Lens.Lens' GetPortalServiceProviderMetadataResponse Prelude.Text
getPortalServiceProviderMetadataResponse_portalArn :: Lens' GetPortalServiceProviderMetadataResponse Text
getPortalServiceProviderMetadataResponse_portalArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPortalServiceProviderMetadataResponse' {Text
portalArn :: Text
$sel:portalArn:GetPortalServiceProviderMetadataResponse' :: GetPortalServiceProviderMetadataResponse -> Text
portalArn} -> Text
portalArn) (\s :: GetPortalServiceProviderMetadataResponse
s@GetPortalServiceProviderMetadataResponse' {} Text
a -> GetPortalServiceProviderMetadataResponse
s {$sel:portalArn:GetPortalServiceProviderMetadataResponse' :: Text
portalArn = Text
a} :: GetPortalServiceProviderMetadataResponse)

instance
  Prelude.NFData
    GetPortalServiceProviderMetadataResponse
  where
  rnf :: GetPortalServiceProviderMetadataResponse -> ()
rnf GetPortalServiceProviderMetadataResponse' {Int
Maybe Text
Text
portalArn :: Text
httpStatus :: Int
serviceProviderSamlMetadata :: Maybe Text
$sel:portalArn:GetPortalServiceProviderMetadataResponse' :: GetPortalServiceProviderMetadataResponse -> Text
$sel:httpStatus:GetPortalServiceProviderMetadataResponse' :: GetPortalServiceProviderMetadataResponse -> Int
$sel:serviceProviderSamlMetadata:GetPortalServiceProviderMetadataResponse' :: GetPortalServiceProviderMetadataResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
serviceProviderSamlMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
portalArn