{-# 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.Pinpoint.DeleteApnsSandboxChannel
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Disables the APNs sandbox channel for an application and deletes any
-- existing settings for the channel.
module Amazonka.Pinpoint.DeleteApnsSandboxChannel
  ( -- * Creating a Request
    DeleteApnsSandboxChannel (..),
    newDeleteApnsSandboxChannel,

    -- * Request Lenses
    deleteApnsSandboxChannel_applicationId,

    -- * Destructuring the Response
    DeleteApnsSandboxChannelResponse (..),
    newDeleteApnsSandboxChannelResponse,

    -- * Response Lenses
    deleteApnsSandboxChannelResponse_httpStatus,
    deleteApnsSandboxChannelResponse_aPNSSandboxChannelResponse,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Pinpoint.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeleteApnsSandboxChannel' smart constructor.
data DeleteApnsSandboxChannel = DeleteApnsSandboxChannel'
  { -- | The unique identifier for the application. This identifier is displayed
    -- as the __Project ID__ on the Amazon Pinpoint console.
    DeleteApnsSandboxChannel -> Text
applicationId :: Prelude.Text
  }
  deriving (DeleteApnsSandboxChannel -> DeleteApnsSandboxChannel -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteApnsSandboxChannel -> DeleteApnsSandboxChannel -> Bool
$c/= :: DeleteApnsSandboxChannel -> DeleteApnsSandboxChannel -> Bool
== :: DeleteApnsSandboxChannel -> DeleteApnsSandboxChannel -> Bool
$c== :: DeleteApnsSandboxChannel -> DeleteApnsSandboxChannel -> Bool
Prelude.Eq, ReadPrec [DeleteApnsSandboxChannel]
ReadPrec DeleteApnsSandboxChannel
Int -> ReadS DeleteApnsSandboxChannel
ReadS [DeleteApnsSandboxChannel]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteApnsSandboxChannel]
$creadListPrec :: ReadPrec [DeleteApnsSandboxChannel]
readPrec :: ReadPrec DeleteApnsSandboxChannel
$creadPrec :: ReadPrec DeleteApnsSandboxChannel
readList :: ReadS [DeleteApnsSandboxChannel]
$creadList :: ReadS [DeleteApnsSandboxChannel]
readsPrec :: Int -> ReadS DeleteApnsSandboxChannel
$creadsPrec :: Int -> ReadS DeleteApnsSandboxChannel
Prelude.Read, Int -> DeleteApnsSandboxChannel -> ShowS
[DeleteApnsSandboxChannel] -> ShowS
DeleteApnsSandboxChannel -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteApnsSandboxChannel] -> ShowS
$cshowList :: [DeleteApnsSandboxChannel] -> ShowS
show :: DeleteApnsSandboxChannel -> String
$cshow :: DeleteApnsSandboxChannel -> String
showsPrec :: Int -> DeleteApnsSandboxChannel -> ShowS
$cshowsPrec :: Int -> DeleteApnsSandboxChannel -> ShowS
Prelude.Show, forall x.
Rep DeleteApnsSandboxChannel x -> DeleteApnsSandboxChannel
forall x.
DeleteApnsSandboxChannel -> Rep DeleteApnsSandboxChannel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteApnsSandboxChannel x -> DeleteApnsSandboxChannel
$cfrom :: forall x.
DeleteApnsSandboxChannel -> Rep DeleteApnsSandboxChannel x
Prelude.Generic)

-- |
-- Create a value of 'DeleteApnsSandboxChannel' 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:
--
-- 'applicationId', 'deleteApnsSandboxChannel_applicationId' - The unique identifier for the application. This identifier is displayed
-- as the __Project ID__ on the Amazon Pinpoint console.
newDeleteApnsSandboxChannel ::
  -- | 'applicationId'
  Prelude.Text ->
  DeleteApnsSandboxChannel
newDeleteApnsSandboxChannel :: Text -> DeleteApnsSandboxChannel
newDeleteApnsSandboxChannel Text
pApplicationId_ =
  DeleteApnsSandboxChannel'
    { $sel:applicationId:DeleteApnsSandboxChannel' :: Text
applicationId =
        Text
pApplicationId_
    }

-- | The unique identifier for the application. This identifier is displayed
-- as the __Project ID__ on the Amazon Pinpoint console.
deleteApnsSandboxChannel_applicationId :: Lens.Lens' DeleteApnsSandboxChannel Prelude.Text
deleteApnsSandboxChannel_applicationId :: Lens' DeleteApnsSandboxChannel Text
deleteApnsSandboxChannel_applicationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteApnsSandboxChannel' {Text
applicationId :: Text
$sel:applicationId:DeleteApnsSandboxChannel' :: DeleteApnsSandboxChannel -> Text
applicationId} -> Text
applicationId) (\s :: DeleteApnsSandboxChannel
s@DeleteApnsSandboxChannel' {} Text
a -> DeleteApnsSandboxChannel
s {$sel:applicationId:DeleteApnsSandboxChannel' :: Text
applicationId = Text
a} :: DeleteApnsSandboxChannel)

instance Core.AWSRequest DeleteApnsSandboxChannel where
  type
    AWSResponse DeleteApnsSandboxChannel =
      DeleteApnsSandboxChannelResponse
  request :: (Service -> Service)
-> DeleteApnsSandboxChannel -> Request DeleteApnsSandboxChannel
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteApnsSandboxChannel
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteApnsSandboxChannel)))
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 ->
          Int
-> APNSSandboxChannelResponse -> DeleteApnsSandboxChannelResponse
DeleteApnsSandboxChannelResponse'
            forall (f :: * -> *) a b. Functor 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.<*> (forall a. FromJSON a => Object -> Either String a
Data.eitherParseJSON Object
x)
      )

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

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

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

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

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

-- |
-- Create a value of 'DeleteApnsSandboxChannelResponse' 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:
--
-- 'httpStatus', 'deleteApnsSandboxChannelResponse_httpStatus' - The response's http status code.
--
-- 'aPNSSandboxChannelResponse', 'deleteApnsSandboxChannelResponse_aPNSSandboxChannelResponse' - Undocumented member.
newDeleteApnsSandboxChannelResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'aPNSSandboxChannelResponse'
  APNSSandboxChannelResponse ->
  DeleteApnsSandboxChannelResponse
newDeleteApnsSandboxChannelResponse :: Int
-> APNSSandboxChannelResponse -> DeleteApnsSandboxChannelResponse
newDeleteApnsSandboxChannelResponse
  Int
pHttpStatus_
  APNSSandboxChannelResponse
pAPNSSandboxChannelResponse_ =
    DeleteApnsSandboxChannelResponse'
      { $sel:httpStatus:DeleteApnsSandboxChannelResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:aPNSSandboxChannelResponse:DeleteApnsSandboxChannelResponse' :: APNSSandboxChannelResponse
aPNSSandboxChannelResponse =
          APNSSandboxChannelResponse
pAPNSSandboxChannelResponse_
      }

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

-- | Undocumented member.
deleteApnsSandboxChannelResponse_aPNSSandboxChannelResponse :: Lens.Lens' DeleteApnsSandboxChannelResponse APNSSandboxChannelResponse
deleteApnsSandboxChannelResponse_aPNSSandboxChannelResponse :: Lens' DeleteApnsSandboxChannelResponse APNSSandboxChannelResponse
deleteApnsSandboxChannelResponse_aPNSSandboxChannelResponse = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteApnsSandboxChannelResponse' {APNSSandboxChannelResponse
aPNSSandboxChannelResponse :: APNSSandboxChannelResponse
$sel:aPNSSandboxChannelResponse:DeleteApnsSandboxChannelResponse' :: DeleteApnsSandboxChannelResponse -> APNSSandboxChannelResponse
aPNSSandboxChannelResponse} -> APNSSandboxChannelResponse
aPNSSandboxChannelResponse) (\s :: DeleteApnsSandboxChannelResponse
s@DeleteApnsSandboxChannelResponse' {} APNSSandboxChannelResponse
a -> DeleteApnsSandboxChannelResponse
s {$sel:aPNSSandboxChannelResponse:DeleteApnsSandboxChannelResponse' :: APNSSandboxChannelResponse
aPNSSandboxChannelResponse = APNSSandboxChannelResponse
a} :: DeleteApnsSandboxChannelResponse)

instance
  Prelude.NFData
    DeleteApnsSandboxChannelResponse
  where
  rnf :: DeleteApnsSandboxChannelResponse -> ()
rnf DeleteApnsSandboxChannelResponse' {Int
APNSSandboxChannelResponse
aPNSSandboxChannelResponse :: APNSSandboxChannelResponse
httpStatus :: Int
$sel:aPNSSandboxChannelResponse:DeleteApnsSandboxChannelResponse' :: DeleteApnsSandboxChannelResponse -> APNSSandboxChannelResponse
$sel:httpStatus:DeleteApnsSandboxChannelResponse' :: DeleteApnsSandboxChannelResponse -> Int
..} =
    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 APNSSandboxChannelResponse
aPNSSandboxChannelResponse