{-# 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.AmplifyBackend.GetToken
-- 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 challenge token based on the given appId and sessionId.
module Amazonka.AmplifyBackend.GetToken
( -- * Creating a Request
GetToken (..),
newGetToken,
-- * Request Lenses
getToken_sessionId,
getToken_appId,
-- * Destructuring the Response
GetTokenResponse (..),
newGetTokenResponse,
-- * Response Lenses
getTokenResponse_appId,
getTokenResponse_challengeCode,
getTokenResponse_sessionId,
getTokenResponse_ttl,
getTokenResponse_httpStatus,
)
where
import Amazonka.AmplifyBackend.Types
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
-- | /See:/ 'newGetToken' smart constructor.
data GetToken = GetToken'
{ -- | The session ID.
sessionId :: Prelude.Text,
-- | The app ID.
appId :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'GetToken' 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:
--
-- 'sessionId', 'getToken_sessionId' - The session ID.
--
-- 'appId', 'getToken_appId' - The app ID.
newGetToken ::
-- | 'sessionId'
Prelude.Text ->
-- | 'appId'
Prelude.Text ->
GetToken
newGetToken pSessionId_ pAppId_ =
GetToken' {sessionId = pSessionId_, appId = pAppId_}
-- | The session ID.
getToken_sessionId :: Lens.Lens' GetToken Prelude.Text
getToken_sessionId = Lens.lens (\GetToken' {sessionId} -> sessionId) (\s@GetToken' {} a -> s {sessionId = a} :: GetToken)
-- | The app ID.
getToken_appId :: Lens.Lens' GetToken Prelude.Text
getToken_appId = Lens.lens (\GetToken' {appId} -> appId) (\s@GetToken' {} a -> s {appId = a} :: GetToken)
instance Core.AWSRequest GetToken where
type AWSResponse GetToken = GetTokenResponse
request overrides =
Request.get (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
GetTokenResponse'
Prelude.<$> (x Data..?> "appId")
Prelude.<*> (x Data..?> "challengeCode")
Prelude.<*> (x Data..?> "sessionId")
Prelude.<*> (x Data..?> "ttl")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable GetToken where
hashWithSalt _salt GetToken' {..} =
_salt
`Prelude.hashWithSalt` sessionId
`Prelude.hashWithSalt` appId
instance Prelude.NFData GetToken where
rnf GetToken' {..} =
Prelude.rnf sessionId
`Prelude.seq` Prelude.rnf appId
instance Data.ToHeaders GetToken where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToPath GetToken where
toPath GetToken' {..} =
Prelude.mconcat
[ "/backend/",
Data.toBS appId,
"/challenge/",
Data.toBS sessionId
]
instance Data.ToQuery GetToken where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newGetTokenResponse' smart constructor.
data GetTokenResponse = GetTokenResponse'
{ -- | The app ID.
appId :: Prelude.Maybe Prelude.Text,
-- | The one-time challenge code for authenticating into the Amplify Admin
-- UI.
challengeCode :: Prelude.Maybe Prelude.Text,
-- | A unique ID provided when creating a new challenge token.
sessionId :: Prelude.Maybe Prelude.Text,
-- | The expiry time for the one-time generated token code.
ttl :: Prelude.Maybe Prelude.Text,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'GetTokenResponse' 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:
--
-- 'appId', 'getTokenResponse_appId' - The app ID.
--
-- 'challengeCode', 'getTokenResponse_challengeCode' - The one-time challenge code for authenticating into the Amplify Admin
-- UI.
--
-- 'sessionId', 'getTokenResponse_sessionId' - A unique ID provided when creating a new challenge token.
--
-- 'ttl', 'getTokenResponse_ttl' - The expiry time for the one-time generated token code.
--
-- 'httpStatus', 'getTokenResponse_httpStatus' - The response's http status code.
newGetTokenResponse ::
-- | 'httpStatus'
Prelude.Int ->
GetTokenResponse
newGetTokenResponse pHttpStatus_ =
GetTokenResponse'
{ appId = Prelude.Nothing,
challengeCode = Prelude.Nothing,
sessionId = Prelude.Nothing,
ttl = Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | The app ID.
getTokenResponse_appId :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
getTokenResponse_appId = Lens.lens (\GetTokenResponse' {appId} -> appId) (\s@GetTokenResponse' {} a -> s {appId = a} :: GetTokenResponse)
-- | The one-time challenge code for authenticating into the Amplify Admin
-- UI.
getTokenResponse_challengeCode :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
getTokenResponse_challengeCode = Lens.lens (\GetTokenResponse' {challengeCode} -> challengeCode) (\s@GetTokenResponse' {} a -> s {challengeCode = a} :: GetTokenResponse)
-- | A unique ID provided when creating a new challenge token.
getTokenResponse_sessionId :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
getTokenResponse_sessionId = Lens.lens (\GetTokenResponse' {sessionId} -> sessionId) (\s@GetTokenResponse' {} a -> s {sessionId = a} :: GetTokenResponse)
-- | The expiry time for the one-time generated token code.
getTokenResponse_ttl :: Lens.Lens' GetTokenResponse (Prelude.Maybe Prelude.Text)
getTokenResponse_ttl = Lens.lens (\GetTokenResponse' {ttl} -> ttl) (\s@GetTokenResponse' {} a -> s {ttl = a} :: GetTokenResponse)
-- | The response's http status code.
getTokenResponse_httpStatus :: Lens.Lens' GetTokenResponse Prelude.Int
getTokenResponse_httpStatus = Lens.lens (\GetTokenResponse' {httpStatus} -> httpStatus) (\s@GetTokenResponse' {} a -> s {httpStatus = a} :: GetTokenResponse)
instance Prelude.NFData GetTokenResponse where
rnf GetTokenResponse' {..} =
Prelude.rnf appId
`Prelude.seq` Prelude.rnf challengeCode
`Prelude.seq` Prelude.rnf sessionId
`Prelude.seq` Prelude.rnf ttl
`Prelude.seq` Prelude.rnf httpStatus