{-# 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.SageMaker.CreatePresignedDomainUrl
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a URL for a specified UserProfile in a Domain. When accessed in
-- a web browser, the user will be automatically signed in to Amazon
-- SageMaker Studio, and granted access to all of the Apps and files
-- associated with the Domain\'s Amazon Elastic File System (EFS) volume.
-- This operation can only be called when the authentication mode equals
-- IAM.
--
-- The IAM role or user passed to this API defines the permissions to
-- access the app. Once the presigned URL is created, no additional
-- permission is required to access this URL. IAM authorization policies
-- for this API are also enforced for every HTTP request and WebSocket
-- frame that attempts to connect to the app.
--
-- You can restrict access to this API and to the URL that it returns to a
-- list of IP addresses, Amazon VPCs or Amazon VPC Endpoints that you
-- specify. For more information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/studio-interface-endpoint.html Connect to SageMaker Studio Through an Interface VPC Endpoint>
-- .
--
-- The URL that you get from a call to @CreatePresignedDomainUrl@ has a
-- default timeout of 5 minutes. You can configure this value using
-- @ExpiresInSeconds@. If you try to use the URL after the timeout limit
-- expires, you are directed to the Amazon Web Services console sign-in
-- page.
module Amazonka.SageMaker.CreatePresignedDomainUrl
  ( -- * Creating a Request
    CreatePresignedDomainUrl (..),
    newCreatePresignedDomainUrl,

    -- * Request Lenses
    createPresignedDomainUrl_expiresInSeconds,
    createPresignedDomainUrl_sessionExpirationDurationInSeconds,
    createPresignedDomainUrl_spaceName,
    createPresignedDomainUrl_domainId,
    createPresignedDomainUrl_userProfileName,

    -- * Destructuring the Response
    CreatePresignedDomainUrlResponse (..),
    newCreatePresignedDomainUrlResponse,

    -- * Response Lenses
    createPresignedDomainUrlResponse_authorizedUrl,
    createPresignedDomainUrlResponse_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.SageMaker.Types

-- | /See:/ 'newCreatePresignedDomainUrl' smart constructor.
data CreatePresignedDomainUrl = CreatePresignedDomainUrl'
  { -- | The number of seconds until the pre-signed URL expires. This value
    -- defaults to 300.
    CreatePresignedDomainUrl -> Maybe Natural
expiresInSeconds :: Prelude.Maybe Prelude.Natural,
    -- | The session expiration duration in seconds. This value defaults to
    -- 43200.
    CreatePresignedDomainUrl -> Maybe Natural
sessionExpirationDurationInSeconds :: Prelude.Maybe Prelude.Natural,
    -- | The name of the space.
    CreatePresignedDomainUrl -> Maybe Text
spaceName :: Prelude.Maybe Prelude.Text,
    -- | The domain ID.
    CreatePresignedDomainUrl -> Text
domainId :: Prelude.Text,
    -- | The name of the UserProfile to sign-in as.
    CreatePresignedDomainUrl -> Text
userProfileName :: Prelude.Text
  }
  deriving (CreatePresignedDomainUrl -> CreatePresignedDomainUrl -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreatePresignedDomainUrl -> CreatePresignedDomainUrl -> Bool
$c/= :: CreatePresignedDomainUrl -> CreatePresignedDomainUrl -> Bool
== :: CreatePresignedDomainUrl -> CreatePresignedDomainUrl -> Bool
$c== :: CreatePresignedDomainUrl -> CreatePresignedDomainUrl -> Bool
Prelude.Eq, ReadPrec [CreatePresignedDomainUrl]
ReadPrec CreatePresignedDomainUrl
Int -> ReadS CreatePresignedDomainUrl
ReadS [CreatePresignedDomainUrl]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreatePresignedDomainUrl]
$creadListPrec :: ReadPrec [CreatePresignedDomainUrl]
readPrec :: ReadPrec CreatePresignedDomainUrl
$creadPrec :: ReadPrec CreatePresignedDomainUrl
readList :: ReadS [CreatePresignedDomainUrl]
$creadList :: ReadS [CreatePresignedDomainUrl]
readsPrec :: Int -> ReadS CreatePresignedDomainUrl
$creadsPrec :: Int -> ReadS CreatePresignedDomainUrl
Prelude.Read, Int -> CreatePresignedDomainUrl -> ShowS
[CreatePresignedDomainUrl] -> ShowS
CreatePresignedDomainUrl -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreatePresignedDomainUrl] -> ShowS
$cshowList :: [CreatePresignedDomainUrl] -> ShowS
show :: CreatePresignedDomainUrl -> String
$cshow :: CreatePresignedDomainUrl -> String
showsPrec :: Int -> CreatePresignedDomainUrl -> ShowS
$cshowsPrec :: Int -> CreatePresignedDomainUrl -> ShowS
Prelude.Show, forall x.
Rep CreatePresignedDomainUrl x -> CreatePresignedDomainUrl
forall x.
CreatePresignedDomainUrl -> Rep CreatePresignedDomainUrl x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreatePresignedDomainUrl x -> CreatePresignedDomainUrl
$cfrom :: forall x.
CreatePresignedDomainUrl -> Rep CreatePresignedDomainUrl x
Prelude.Generic)

-- |
-- Create a value of 'CreatePresignedDomainUrl' 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:
--
-- 'expiresInSeconds', 'createPresignedDomainUrl_expiresInSeconds' - The number of seconds until the pre-signed URL expires. This value
-- defaults to 300.
--
-- 'sessionExpirationDurationInSeconds', 'createPresignedDomainUrl_sessionExpirationDurationInSeconds' - The session expiration duration in seconds. This value defaults to
-- 43200.
--
-- 'spaceName', 'createPresignedDomainUrl_spaceName' - The name of the space.
--
-- 'domainId', 'createPresignedDomainUrl_domainId' - The domain ID.
--
-- 'userProfileName', 'createPresignedDomainUrl_userProfileName' - The name of the UserProfile to sign-in as.
newCreatePresignedDomainUrl ::
  -- | 'domainId'
  Prelude.Text ->
  -- | 'userProfileName'
  Prelude.Text ->
  CreatePresignedDomainUrl
newCreatePresignedDomainUrl :: Text -> Text -> CreatePresignedDomainUrl
newCreatePresignedDomainUrl
  Text
pDomainId_
  Text
pUserProfileName_ =
    CreatePresignedDomainUrl'
      { $sel:expiresInSeconds:CreatePresignedDomainUrl' :: Maybe Natural
expiresInSeconds =
          forall a. Maybe a
Prelude.Nothing,
        $sel:sessionExpirationDurationInSeconds:CreatePresignedDomainUrl' :: Maybe Natural
sessionExpirationDurationInSeconds =
          forall a. Maybe a
Prelude.Nothing,
        $sel:spaceName:CreatePresignedDomainUrl' :: Maybe Text
spaceName = forall a. Maybe a
Prelude.Nothing,
        $sel:domainId:CreatePresignedDomainUrl' :: Text
domainId = Text
pDomainId_,
        $sel:userProfileName:CreatePresignedDomainUrl' :: Text
userProfileName = Text
pUserProfileName_
      }

-- | The number of seconds until the pre-signed URL expires. This value
-- defaults to 300.
createPresignedDomainUrl_expiresInSeconds :: Lens.Lens' CreatePresignedDomainUrl (Prelude.Maybe Prelude.Natural)
createPresignedDomainUrl_expiresInSeconds :: Lens' CreatePresignedDomainUrl (Maybe Natural)
createPresignedDomainUrl_expiresInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePresignedDomainUrl' {Maybe Natural
expiresInSeconds :: Maybe Natural
$sel:expiresInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
expiresInSeconds} -> Maybe Natural
expiresInSeconds) (\s :: CreatePresignedDomainUrl
s@CreatePresignedDomainUrl' {} Maybe Natural
a -> CreatePresignedDomainUrl
s {$sel:expiresInSeconds:CreatePresignedDomainUrl' :: Maybe Natural
expiresInSeconds = Maybe Natural
a} :: CreatePresignedDomainUrl)

-- | The session expiration duration in seconds. This value defaults to
-- 43200.
createPresignedDomainUrl_sessionExpirationDurationInSeconds :: Lens.Lens' CreatePresignedDomainUrl (Prelude.Maybe Prelude.Natural)
createPresignedDomainUrl_sessionExpirationDurationInSeconds :: Lens' CreatePresignedDomainUrl (Maybe Natural)
createPresignedDomainUrl_sessionExpirationDurationInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePresignedDomainUrl' {Maybe Natural
sessionExpirationDurationInSeconds :: Maybe Natural
$sel:sessionExpirationDurationInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
sessionExpirationDurationInSeconds} -> Maybe Natural
sessionExpirationDurationInSeconds) (\s :: CreatePresignedDomainUrl
s@CreatePresignedDomainUrl' {} Maybe Natural
a -> CreatePresignedDomainUrl
s {$sel:sessionExpirationDurationInSeconds:CreatePresignedDomainUrl' :: Maybe Natural
sessionExpirationDurationInSeconds = Maybe Natural
a} :: CreatePresignedDomainUrl)

-- | The name of the space.
createPresignedDomainUrl_spaceName :: Lens.Lens' CreatePresignedDomainUrl (Prelude.Maybe Prelude.Text)
createPresignedDomainUrl_spaceName :: Lens' CreatePresignedDomainUrl (Maybe Text)
createPresignedDomainUrl_spaceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePresignedDomainUrl' {Maybe Text
spaceName :: Maybe Text
$sel:spaceName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Text
spaceName} -> Maybe Text
spaceName) (\s :: CreatePresignedDomainUrl
s@CreatePresignedDomainUrl' {} Maybe Text
a -> CreatePresignedDomainUrl
s {$sel:spaceName:CreatePresignedDomainUrl' :: Maybe Text
spaceName = Maybe Text
a} :: CreatePresignedDomainUrl)

-- | The domain ID.
createPresignedDomainUrl_domainId :: Lens.Lens' CreatePresignedDomainUrl Prelude.Text
createPresignedDomainUrl_domainId :: Lens' CreatePresignedDomainUrl Text
createPresignedDomainUrl_domainId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePresignedDomainUrl' {Text
domainId :: Text
$sel:domainId:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
domainId} -> Text
domainId) (\s :: CreatePresignedDomainUrl
s@CreatePresignedDomainUrl' {} Text
a -> CreatePresignedDomainUrl
s {$sel:domainId:CreatePresignedDomainUrl' :: Text
domainId = Text
a} :: CreatePresignedDomainUrl)

-- | The name of the UserProfile to sign-in as.
createPresignedDomainUrl_userProfileName :: Lens.Lens' CreatePresignedDomainUrl Prelude.Text
createPresignedDomainUrl_userProfileName :: Lens' CreatePresignedDomainUrl Text
createPresignedDomainUrl_userProfileName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePresignedDomainUrl' {Text
userProfileName :: Text
$sel:userProfileName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
userProfileName} -> Text
userProfileName) (\s :: CreatePresignedDomainUrl
s@CreatePresignedDomainUrl' {} Text
a -> CreatePresignedDomainUrl
s {$sel:userProfileName:CreatePresignedDomainUrl' :: Text
userProfileName = Text
a} :: CreatePresignedDomainUrl)

instance Core.AWSRequest CreatePresignedDomainUrl where
  type
    AWSResponse CreatePresignedDomainUrl =
      CreatePresignedDomainUrlResponse
  request :: (Service -> Service)
-> CreatePresignedDomainUrl -> Request CreatePresignedDomainUrl
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 CreatePresignedDomainUrl
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreatePresignedDomainUrl)))
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 -> CreatePresignedDomainUrlResponse
CreatePresignedDomainUrlResponse'
            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
"AuthorizedUrl")
            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 CreatePresignedDomainUrl where
  hashWithSalt :: Int -> CreatePresignedDomainUrl -> Int
hashWithSalt Int
_salt CreatePresignedDomainUrl' {Maybe Natural
Maybe Text
Text
userProfileName :: Text
domainId :: Text
spaceName :: Maybe Text
sessionExpirationDurationInSeconds :: Maybe Natural
expiresInSeconds :: Maybe Natural
$sel:userProfileName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
$sel:domainId:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
$sel:spaceName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Text
$sel:sessionExpirationDurationInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
$sel:expiresInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
expiresInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
sessionExpirationDurationInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
spaceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
userProfileName

instance Prelude.NFData CreatePresignedDomainUrl where
  rnf :: CreatePresignedDomainUrl -> ()
rnf CreatePresignedDomainUrl' {Maybe Natural
Maybe Text
Text
userProfileName :: Text
domainId :: Text
spaceName :: Maybe Text
sessionExpirationDurationInSeconds :: Maybe Natural
expiresInSeconds :: Maybe Natural
$sel:userProfileName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
$sel:domainId:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
$sel:spaceName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Text
$sel:sessionExpirationDurationInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
$sel:expiresInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
expiresInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
sessionExpirationDurationInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
spaceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domainId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
userProfileName

instance Data.ToHeaders CreatePresignedDomainUrl where
  toHeaders :: CreatePresignedDomainUrl -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"SageMaker.CreatePresignedDomainUrl" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreatePresignedDomainUrl where
  toJSON :: CreatePresignedDomainUrl -> Value
toJSON CreatePresignedDomainUrl' {Maybe Natural
Maybe Text
Text
userProfileName :: Text
domainId :: Text
spaceName :: Maybe Text
sessionExpirationDurationInSeconds :: Maybe Natural
expiresInSeconds :: Maybe Natural
$sel:userProfileName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
$sel:domainId:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Text
$sel:spaceName:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Text
$sel:sessionExpirationDurationInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
$sel:expiresInSeconds:CreatePresignedDomainUrl' :: CreatePresignedDomainUrl -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ExpiresInSeconds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
expiresInSeconds,
            (Key
"SessionExpirationDurationInSeconds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
sessionExpirationDurationInSeconds,
            (Key
"SpaceName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
spaceName,
            forall a. a -> Maybe a
Prelude.Just (Key
"DomainId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
domainId),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"UserProfileName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
userProfileName)
          ]
      )

instance Data.ToPath CreatePresignedDomainUrl where
  toPath :: CreatePresignedDomainUrl -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'CreatePresignedDomainUrlResponse' 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:
--
-- 'authorizedUrl', 'createPresignedDomainUrlResponse_authorizedUrl' - The presigned URL.
--
-- 'httpStatus', 'createPresignedDomainUrlResponse_httpStatus' - The response's http status code.
newCreatePresignedDomainUrlResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreatePresignedDomainUrlResponse
newCreatePresignedDomainUrlResponse :: Int -> CreatePresignedDomainUrlResponse
newCreatePresignedDomainUrlResponse Int
pHttpStatus_ =
  CreatePresignedDomainUrlResponse'
    { $sel:authorizedUrl:CreatePresignedDomainUrlResponse' :: Maybe Text
authorizedUrl =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreatePresignedDomainUrlResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The presigned URL.
createPresignedDomainUrlResponse_authorizedUrl :: Lens.Lens' CreatePresignedDomainUrlResponse (Prelude.Maybe Prelude.Text)
createPresignedDomainUrlResponse_authorizedUrl :: Lens' CreatePresignedDomainUrlResponse (Maybe Text)
createPresignedDomainUrlResponse_authorizedUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePresignedDomainUrlResponse' {Maybe Text
authorizedUrl :: Maybe Text
$sel:authorizedUrl:CreatePresignedDomainUrlResponse' :: CreatePresignedDomainUrlResponse -> Maybe Text
authorizedUrl} -> Maybe Text
authorizedUrl) (\s :: CreatePresignedDomainUrlResponse
s@CreatePresignedDomainUrlResponse' {} Maybe Text
a -> CreatePresignedDomainUrlResponse
s {$sel:authorizedUrl:CreatePresignedDomainUrlResponse' :: Maybe Text
authorizedUrl = Maybe Text
a} :: CreatePresignedDomainUrlResponse)

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

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