{-# 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.Transcribe.DescribeLanguageModel
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Provides information about the specified custom language model.
--
-- This operation also shows if the base language model that you used to
-- create your custom language model has been updated. If Amazon Transcribe
-- has updated the base model, you can create a new custom language model
-- using the updated base model.
--
-- If you tried to create a new custom language model and the request
-- wasn\'t successful, you can use @DescribeLanguageModel@ to help identify
-- the reason for this failure.
module Amazonka.Transcribe.DescribeLanguageModel
  ( -- * Creating a Request
    DescribeLanguageModel (..),
    newDescribeLanguageModel,

    -- * Request Lenses
    describeLanguageModel_modelName,

    -- * Destructuring the Response
    DescribeLanguageModelResponse (..),
    newDescribeLanguageModelResponse,

    -- * Response Lenses
    describeLanguageModelResponse_languageModel,
    describeLanguageModelResponse_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.Transcribe.Types

-- | /See:/ 'newDescribeLanguageModel' smart constructor.
data DescribeLanguageModel = DescribeLanguageModel'
  { -- | The name of the custom language model you want information about. Model
    -- names are case sensitive.
    DescribeLanguageModel -> Text
modelName :: Prelude.Text
  }
  deriving (DescribeLanguageModel -> DescribeLanguageModel -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeLanguageModel -> DescribeLanguageModel -> Bool
$c/= :: DescribeLanguageModel -> DescribeLanguageModel -> Bool
== :: DescribeLanguageModel -> DescribeLanguageModel -> Bool
$c== :: DescribeLanguageModel -> DescribeLanguageModel -> Bool
Prelude.Eq, ReadPrec [DescribeLanguageModel]
ReadPrec DescribeLanguageModel
Int -> ReadS DescribeLanguageModel
ReadS [DescribeLanguageModel]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeLanguageModel]
$creadListPrec :: ReadPrec [DescribeLanguageModel]
readPrec :: ReadPrec DescribeLanguageModel
$creadPrec :: ReadPrec DescribeLanguageModel
readList :: ReadS [DescribeLanguageModel]
$creadList :: ReadS [DescribeLanguageModel]
readsPrec :: Int -> ReadS DescribeLanguageModel
$creadsPrec :: Int -> ReadS DescribeLanguageModel
Prelude.Read, Int -> DescribeLanguageModel -> ShowS
[DescribeLanguageModel] -> ShowS
DescribeLanguageModel -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeLanguageModel] -> ShowS
$cshowList :: [DescribeLanguageModel] -> ShowS
show :: DescribeLanguageModel -> String
$cshow :: DescribeLanguageModel -> String
showsPrec :: Int -> DescribeLanguageModel -> ShowS
$cshowsPrec :: Int -> DescribeLanguageModel -> ShowS
Prelude.Show, forall x. Rep DescribeLanguageModel x -> DescribeLanguageModel
forall x. DescribeLanguageModel -> Rep DescribeLanguageModel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeLanguageModel x -> DescribeLanguageModel
$cfrom :: forall x. DescribeLanguageModel -> Rep DescribeLanguageModel x
Prelude.Generic)

-- |
-- Create a value of 'DescribeLanguageModel' 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:
--
-- 'modelName', 'describeLanguageModel_modelName' - The name of the custom language model you want information about. Model
-- names are case sensitive.
newDescribeLanguageModel ::
  -- | 'modelName'
  Prelude.Text ->
  DescribeLanguageModel
newDescribeLanguageModel :: Text -> DescribeLanguageModel
newDescribeLanguageModel Text
pModelName_ =
  DescribeLanguageModel' {$sel:modelName:DescribeLanguageModel' :: Text
modelName = Text
pModelName_}

-- | The name of the custom language model you want information about. Model
-- names are case sensitive.
describeLanguageModel_modelName :: Lens.Lens' DescribeLanguageModel Prelude.Text
describeLanguageModel_modelName :: Lens' DescribeLanguageModel Text
describeLanguageModel_modelName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeLanguageModel' {Text
modelName :: Text
$sel:modelName:DescribeLanguageModel' :: DescribeLanguageModel -> Text
modelName} -> Text
modelName) (\s :: DescribeLanguageModel
s@DescribeLanguageModel' {} Text
a -> DescribeLanguageModel
s {$sel:modelName:DescribeLanguageModel' :: Text
modelName = Text
a} :: DescribeLanguageModel)

instance Core.AWSRequest DescribeLanguageModel where
  type
    AWSResponse DescribeLanguageModel =
      DescribeLanguageModelResponse
  request :: (Service -> Service)
-> DescribeLanguageModel -> Request DescribeLanguageModel
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 DescribeLanguageModel
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeLanguageModel)))
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 LanguageModel -> Int -> DescribeLanguageModelResponse
DescribeLanguageModelResponse'
            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
"LanguageModel")
            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 DescribeLanguageModel where
  hashWithSalt :: Int -> DescribeLanguageModel -> Int
hashWithSalt Int
_salt DescribeLanguageModel' {Text
modelName :: Text
$sel:modelName:DescribeLanguageModel' :: DescribeLanguageModel -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
modelName

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

instance Data.ToHeaders DescribeLanguageModel where
  toHeaders :: DescribeLanguageModel -> 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
"Transcribe.DescribeLanguageModel" ::
                          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 DescribeLanguageModel where
  toJSON :: DescribeLanguageModel -> Value
toJSON DescribeLanguageModel' {Text
modelName :: Text
$sel:modelName:DescribeLanguageModel' :: DescribeLanguageModel -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"ModelName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
modelName)]
      )

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

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

-- | /See:/ 'newDescribeLanguageModelResponse' smart constructor.
data DescribeLanguageModelResponse = DescribeLanguageModelResponse'
  { -- | Provides information about the specified custom language model.
    --
    -- This parameter also shows if the base language model you used to create
    -- your custom language model has been updated. If Amazon Transcribe has
    -- updated the base model, you can create a new custom language model using
    -- the updated base model.
    --
    -- If you tried to create a new custom language model and the request
    -- wasn\'t successful, you can use this @DescribeLanguageModel@ to help
    -- identify the reason for this failure.
    DescribeLanguageModelResponse -> Maybe LanguageModel
languageModel :: Prelude.Maybe LanguageModel,
    -- | The response's http status code.
    DescribeLanguageModelResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeLanguageModelResponse
-> DescribeLanguageModelResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeLanguageModelResponse
-> DescribeLanguageModelResponse -> Bool
$c/= :: DescribeLanguageModelResponse
-> DescribeLanguageModelResponse -> Bool
== :: DescribeLanguageModelResponse
-> DescribeLanguageModelResponse -> Bool
$c== :: DescribeLanguageModelResponse
-> DescribeLanguageModelResponse -> Bool
Prelude.Eq, ReadPrec [DescribeLanguageModelResponse]
ReadPrec DescribeLanguageModelResponse
Int -> ReadS DescribeLanguageModelResponse
ReadS [DescribeLanguageModelResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeLanguageModelResponse]
$creadListPrec :: ReadPrec [DescribeLanguageModelResponse]
readPrec :: ReadPrec DescribeLanguageModelResponse
$creadPrec :: ReadPrec DescribeLanguageModelResponse
readList :: ReadS [DescribeLanguageModelResponse]
$creadList :: ReadS [DescribeLanguageModelResponse]
readsPrec :: Int -> ReadS DescribeLanguageModelResponse
$creadsPrec :: Int -> ReadS DescribeLanguageModelResponse
Prelude.Read, Int -> DescribeLanguageModelResponse -> ShowS
[DescribeLanguageModelResponse] -> ShowS
DescribeLanguageModelResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeLanguageModelResponse] -> ShowS
$cshowList :: [DescribeLanguageModelResponse] -> ShowS
show :: DescribeLanguageModelResponse -> String
$cshow :: DescribeLanguageModelResponse -> String
showsPrec :: Int -> DescribeLanguageModelResponse -> ShowS
$cshowsPrec :: Int -> DescribeLanguageModelResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeLanguageModelResponse x
-> DescribeLanguageModelResponse
forall x.
DescribeLanguageModelResponse
-> Rep DescribeLanguageModelResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeLanguageModelResponse x
-> DescribeLanguageModelResponse
$cfrom :: forall x.
DescribeLanguageModelResponse
-> Rep DescribeLanguageModelResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeLanguageModelResponse' 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:
--
-- 'languageModel', 'describeLanguageModelResponse_languageModel' - Provides information about the specified custom language model.
--
-- This parameter also shows if the base language model you used to create
-- your custom language model has been updated. If Amazon Transcribe has
-- updated the base model, you can create a new custom language model using
-- the updated base model.
--
-- If you tried to create a new custom language model and the request
-- wasn\'t successful, you can use this @DescribeLanguageModel@ to help
-- identify the reason for this failure.
--
-- 'httpStatus', 'describeLanguageModelResponse_httpStatus' - The response's http status code.
newDescribeLanguageModelResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeLanguageModelResponse
newDescribeLanguageModelResponse :: Int -> DescribeLanguageModelResponse
newDescribeLanguageModelResponse Int
pHttpStatus_ =
  DescribeLanguageModelResponse'
    { $sel:languageModel:DescribeLanguageModelResponse' :: Maybe LanguageModel
languageModel =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeLanguageModelResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Provides information about the specified custom language model.
--
-- This parameter also shows if the base language model you used to create
-- your custom language model has been updated. If Amazon Transcribe has
-- updated the base model, you can create a new custom language model using
-- the updated base model.
--
-- If you tried to create a new custom language model and the request
-- wasn\'t successful, you can use this @DescribeLanguageModel@ to help
-- identify the reason for this failure.
describeLanguageModelResponse_languageModel :: Lens.Lens' DescribeLanguageModelResponse (Prelude.Maybe LanguageModel)
describeLanguageModelResponse_languageModel :: Lens' DescribeLanguageModelResponse (Maybe LanguageModel)
describeLanguageModelResponse_languageModel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeLanguageModelResponse' {Maybe LanguageModel
languageModel :: Maybe LanguageModel
$sel:languageModel:DescribeLanguageModelResponse' :: DescribeLanguageModelResponse -> Maybe LanguageModel
languageModel} -> Maybe LanguageModel
languageModel) (\s :: DescribeLanguageModelResponse
s@DescribeLanguageModelResponse' {} Maybe LanguageModel
a -> DescribeLanguageModelResponse
s {$sel:languageModel:DescribeLanguageModelResponse' :: Maybe LanguageModel
languageModel = Maybe LanguageModel
a} :: DescribeLanguageModelResponse)

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

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