{-# 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.SMS.GetAppValidationConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves information about a configuration for validating an
-- application.
module Amazonka.SMS.GetAppValidationConfiguration
  ( -- * Creating a Request
    GetAppValidationConfiguration (..),
    newGetAppValidationConfiguration,

    -- * Request Lenses
    getAppValidationConfiguration_appId,

    -- * Destructuring the Response
    GetAppValidationConfigurationResponse (..),
    newGetAppValidationConfigurationResponse,

    -- * Response Lenses
    getAppValidationConfigurationResponse_appValidationConfigurations,
    getAppValidationConfigurationResponse_serverGroupValidationConfigurations,
    getAppValidationConfigurationResponse_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.SMS.Types

-- | /See:/ 'newGetAppValidationConfiguration' smart constructor.
data GetAppValidationConfiguration = GetAppValidationConfiguration'
  { -- | The ID of the application.
    GetAppValidationConfiguration -> Text
appId :: Prelude.Text
  }
  deriving (GetAppValidationConfiguration
-> GetAppValidationConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAppValidationConfiguration
-> GetAppValidationConfiguration -> Bool
$c/= :: GetAppValidationConfiguration
-> GetAppValidationConfiguration -> Bool
== :: GetAppValidationConfiguration
-> GetAppValidationConfiguration -> Bool
$c== :: GetAppValidationConfiguration
-> GetAppValidationConfiguration -> Bool
Prelude.Eq, ReadPrec [GetAppValidationConfiguration]
ReadPrec GetAppValidationConfiguration
Int -> ReadS GetAppValidationConfiguration
ReadS [GetAppValidationConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetAppValidationConfiguration]
$creadListPrec :: ReadPrec [GetAppValidationConfiguration]
readPrec :: ReadPrec GetAppValidationConfiguration
$creadPrec :: ReadPrec GetAppValidationConfiguration
readList :: ReadS [GetAppValidationConfiguration]
$creadList :: ReadS [GetAppValidationConfiguration]
readsPrec :: Int -> ReadS GetAppValidationConfiguration
$creadsPrec :: Int -> ReadS GetAppValidationConfiguration
Prelude.Read, Int -> GetAppValidationConfiguration -> ShowS
[GetAppValidationConfiguration] -> ShowS
GetAppValidationConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetAppValidationConfiguration] -> ShowS
$cshowList :: [GetAppValidationConfiguration] -> ShowS
show :: GetAppValidationConfiguration -> String
$cshow :: GetAppValidationConfiguration -> String
showsPrec :: Int -> GetAppValidationConfiguration -> ShowS
$cshowsPrec :: Int -> GetAppValidationConfiguration -> ShowS
Prelude.Show, forall x.
Rep GetAppValidationConfiguration x
-> GetAppValidationConfiguration
forall x.
GetAppValidationConfiguration
-> Rep GetAppValidationConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetAppValidationConfiguration x
-> GetAppValidationConfiguration
$cfrom :: forall x.
GetAppValidationConfiguration
-> Rep GetAppValidationConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'GetAppValidationConfiguration' 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', 'getAppValidationConfiguration_appId' - The ID of the application.
newGetAppValidationConfiguration ::
  -- | 'appId'
  Prelude.Text ->
  GetAppValidationConfiguration
newGetAppValidationConfiguration :: Text -> GetAppValidationConfiguration
newGetAppValidationConfiguration Text
pAppId_ =
  GetAppValidationConfiguration' {$sel:appId:GetAppValidationConfiguration' :: Text
appId = Text
pAppId_}

-- | The ID of the application.
getAppValidationConfiguration_appId :: Lens.Lens' GetAppValidationConfiguration Prelude.Text
getAppValidationConfiguration_appId :: Lens' GetAppValidationConfiguration Text
getAppValidationConfiguration_appId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppValidationConfiguration' {Text
appId :: Text
$sel:appId:GetAppValidationConfiguration' :: GetAppValidationConfiguration -> Text
appId} -> Text
appId) (\s :: GetAppValidationConfiguration
s@GetAppValidationConfiguration' {} Text
a -> GetAppValidationConfiguration
s {$sel:appId:GetAppValidationConfiguration' :: Text
appId = Text
a} :: GetAppValidationConfiguration)

instance
  Core.AWSRequest
    GetAppValidationConfiguration
  where
  type
    AWSResponse GetAppValidationConfiguration =
      GetAppValidationConfigurationResponse
  request :: (Service -> Service)
-> GetAppValidationConfiguration
-> Request GetAppValidationConfiguration
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 GetAppValidationConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetAppValidationConfiguration)))
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 [AppValidationConfiguration]
-> Maybe [ServerGroupValidationConfiguration]
-> Int
-> GetAppValidationConfigurationResponse
GetAppValidationConfigurationResponse'
            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
"appValidationConfigurations"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"serverGroupValidationConfigurations"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
    GetAppValidationConfiguration
  where
  hashWithSalt :: Int -> GetAppValidationConfiguration -> Int
hashWithSalt Int
_salt GetAppValidationConfiguration' {Text
appId :: Text
$sel:appId:GetAppValidationConfiguration' :: GetAppValidationConfiguration -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
appId

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

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

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

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

-- | /See:/ 'newGetAppValidationConfigurationResponse' smart constructor.
data GetAppValidationConfigurationResponse = GetAppValidationConfigurationResponse'
  { -- | The configuration for application validation.
    GetAppValidationConfigurationResponse
-> Maybe [AppValidationConfiguration]
appValidationConfigurations :: Prelude.Maybe [AppValidationConfiguration],
    -- | The configuration for instance validation.
    GetAppValidationConfigurationResponse
-> Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations :: Prelude.Maybe [ServerGroupValidationConfiguration],
    -- | The response's http status code.
    GetAppValidationConfigurationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetAppValidationConfigurationResponse
-> GetAppValidationConfigurationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAppValidationConfigurationResponse
-> GetAppValidationConfigurationResponse -> Bool
$c/= :: GetAppValidationConfigurationResponse
-> GetAppValidationConfigurationResponse -> Bool
== :: GetAppValidationConfigurationResponse
-> GetAppValidationConfigurationResponse -> Bool
$c== :: GetAppValidationConfigurationResponse
-> GetAppValidationConfigurationResponse -> Bool
Prelude.Eq, ReadPrec [GetAppValidationConfigurationResponse]
ReadPrec GetAppValidationConfigurationResponse
Int -> ReadS GetAppValidationConfigurationResponse
ReadS [GetAppValidationConfigurationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetAppValidationConfigurationResponse]
$creadListPrec :: ReadPrec [GetAppValidationConfigurationResponse]
readPrec :: ReadPrec GetAppValidationConfigurationResponse
$creadPrec :: ReadPrec GetAppValidationConfigurationResponse
readList :: ReadS [GetAppValidationConfigurationResponse]
$creadList :: ReadS [GetAppValidationConfigurationResponse]
readsPrec :: Int -> ReadS GetAppValidationConfigurationResponse
$creadsPrec :: Int -> ReadS GetAppValidationConfigurationResponse
Prelude.Read, Int -> GetAppValidationConfigurationResponse -> ShowS
[GetAppValidationConfigurationResponse] -> ShowS
GetAppValidationConfigurationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetAppValidationConfigurationResponse] -> ShowS
$cshowList :: [GetAppValidationConfigurationResponse] -> ShowS
show :: GetAppValidationConfigurationResponse -> String
$cshow :: GetAppValidationConfigurationResponse -> String
showsPrec :: Int -> GetAppValidationConfigurationResponse -> ShowS
$cshowsPrec :: Int -> GetAppValidationConfigurationResponse -> ShowS
Prelude.Show, forall x.
Rep GetAppValidationConfigurationResponse x
-> GetAppValidationConfigurationResponse
forall x.
GetAppValidationConfigurationResponse
-> Rep GetAppValidationConfigurationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetAppValidationConfigurationResponse x
-> GetAppValidationConfigurationResponse
$cfrom :: forall x.
GetAppValidationConfigurationResponse
-> Rep GetAppValidationConfigurationResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetAppValidationConfigurationResponse' 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:
--
-- 'appValidationConfigurations', 'getAppValidationConfigurationResponse_appValidationConfigurations' - The configuration for application validation.
--
-- 'serverGroupValidationConfigurations', 'getAppValidationConfigurationResponse_serverGroupValidationConfigurations' - The configuration for instance validation.
--
-- 'httpStatus', 'getAppValidationConfigurationResponse_httpStatus' - The response's http status code.
newGetAppValidationConfigurationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetAppValidationConfigurationResponse
newGetAppValidationConfigurationResponse :: Int -> GetAppValidationConfigurationResponse
newGetAppValidationConfigurationResponse Int
pHttpStatus_ =
  GetAppValidationConfigurationResponse'
    { $sel:appValidationConfigurations:GetAppValidationConfigurationResponse' :: Maybe [AppValidationConfiguration]
appValidationConfigurations =
        forall a. Maybe a
Prelude.Nothing,
      $sel:serverGroupValidationConfigurations:GetAppValidationConfigurationResponse' :: Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetAppValidationConfigurationResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The configuration for application validation.
getAppValidationConfigurationResponse_appValidationConfigurations :: Lens.Lens' GetAppValidationConfigurationResponse (Prelude.Maybe [AppValidationConfiguration])
getAppValidationConfigurationResponse_appValidationConfigurations :: Lens'
  GetAppValidationConfigurationResponse
  (Maybe [AppValidationConfiguration])
getAppValidationConfigurationResponse_appValidationConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppValidationConfigurationResponse' {Maybe [AppValidationConfiguration]
appValidationConfigurations :: Maybe [AppValidationConfiguration]
$sel:appValidationConfigurations:GetAppValidationConfigurationResponse' :: GetAppValidationConfigurationResponse
-> Maybe [AppValidationConfiguration]
appValidationConfigurations} -> Maybe [AppValidationConfiguration]
appValidationConfigurations) (\s :: GetAppValidationConfigurationResponse
s@GetAppValidationConfigurationResponse' {} Maybe [AppValidationConfiguration]
a -> GetAppValidationConfigurationResponse
s {$sel:appValidationConfigurations:GetAppValidationConfigurationResponse' :: Maybe [AppValidationConfiguration]
appValidationConfigurations = Maybe [AppValidationConfiguration]
a} :: GetAppValidationConfigurationResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The configuration for instance validation.
getAppValidationConfigurationResponse_serverGroupValidationConfigurations :: Lens.Lens' GetAppValidationConfigurationResponse (Prelude.Maybe [ServerGroupValidationConfiguration])
getAppValidationConfigurationResponse_serverGroupValidationConfigurations :: Lens'
  GetAppValidationConfigurationResponse
  (Maybe [ServerGroupValidationConfiguration])
getAppValidationConfigurationResponse_serverGroupValidationConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppValidationConfigurationResponse' {Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations :: Maybe [ServerGroupValidationConfiguration]
$sel:serverGroupValidationConfigurations:GetAppValidationConfigurationResponse' :: GetAppValidationConfigurationResponse
-> Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations} -> Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations) (\s :: GetAppValidationConfigurationResponse
s@GetAppValidationConfigurationResponse' {} Maybe [ServerGroupValidationConfiguration]
a -> GetAppValidationConfigurationResponse
s {$sel:serverGroupValidationConfigurations:GetAppValidationConfigurationResponse' :: Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations = Maybe [ServerGroupValidationConfiguration]
a} :: GetAppValidationConfigurationResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    GetAppValidationConfigurationResponse
  where
  rnf :: GetAppValidationConfigurationResponse -> ()
rnf GetAppValidationConfigurationResponse' {Int
Maybe [AppValidationConfiguration]
Maybe [ServerGroupValidationConfiguration]
httpStatus :: Int
serverGroupValidationConfigurations :: Maybe [ServerGroupValidationConfiguration]
appValidationConfigurations :: Maybe [AppValidationConfiguration]
$sel:httpStatus:GetAppValidationConfigurationResponse' :: GetAppValidationConfigurationResponse -> Int
$sel:serverGroupValidationConfigurations:GetAppValidationConfigurationResponse' :: GetAppValidationConfigurationResponse
-> Maybe [ServerGroupValidationConfiguration]
$sel:appValidationConfigurations:GetAppValidationConfigurationResponse' :: GetAppValidationConfigurationResponse
-> Maybe [AppValidationConfiguration]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [AppValidationConfiguration]
appValidationConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ServerGroupValidationConfiguration]
serverGroupValidationConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus