{-# 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.MechanicalTurk.RejectQualificationRequest
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- The @RejectQualificationRequest@ operation rejects a user\'s request for
-- a Qualification.
--
-- You can provide a text message explaining why the request was rejected.
-- The Worker who made the request can see this message.
module Amazonka.MechanicalTurk.RejectQualificationRequest
  ( -- * Creating a Request
    RejectQualificationRequest (..),
    newRejectQualificationRequest,

    -- * Request Lenses
    rejectQualificationRequest_reason,
    rejectQualificationRequest_qualificationRequestId,

    -- * Destructuring the Response
    RejectQualificationRequestResponse (..),
    newRejectQualificationRequestResponse,

    -- * Response Lenses
    rejectQualificationRequestResponse_httpStatus,
  )
where

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

-- | /See:/ 'newRejectQualificationRequest' smart constructor.
data RejectQualificationRequest = RejectQualificationRequest'
  { -- | A text message explaining why the request was rejected, to be shown to
    -- the Worker who made the request.
    RejectQualificationRequest -> Maybe Text
reason :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Qualification request, as returned by the
    -- @ListQualificationRequests@ operation.
    RejectQualificationRequest -> Text
qualificationRequestId :: Prelude.Text
  }
  deriving (RejectQualificationRequest -> RejectQualificationRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RejectQualificationRequest -> RejectQualificationRequest -> Bool
$c/= :: RejectQualificationRequest -> RejectQualificationRequest -> Bool
== :: RejectQualificationRequest -> RejectQualificationRequest -> Bool
$c== :: RejectQualificationRequest -> RejectQualificationRequest -> Bool
Prelude.Eq, ReadPrec [RejectQualificationRequest]
ReadPrec RejectQualificationRequest
Int -> ReadS RejectQualificationRequest
ReadS [RejectQualificationRequest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RejectQualificationRequest]
$creadListPrec :: ReadPrec [RejectQualificationRequest]
readPrec :: ReadPrec RejectQualificationRequest
$creadPrec :: ReadPrec RejectQualificationRequest
readList :: ReadS [RejectQualificationRequest]
$creadList :: ReadS [RejectQualificationRequest]
readsPrec :: Int -> ReadS RejectQualificationRequest
$creadsPrec :: Int -> ReadS RejectQualificationRequest
Prelude.Read, Int -> RejectQualificationRequest -> ShowS
[RejectQualificationRequest] -> ShowS
RejectQualificationRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RejectQualificationRequest] -> ShowS
$cshowList :: [RejectQualificationRequest] -> ShowS
show :: RejectQualificationRequest -> String
$cshow :: RejectQualificationRequest -> String
showsPrec :: Int -> RejectQualificationRequest -> ShowS
$cshowsPrec :: Int -> RejectQualificationRequest -> ShowS
Prelude.Show, forall x.
Rep RejectQualificationRequest x -> RejectQualificationRequest
forall x.
RejectQualificationRequest -> Rep RejectQualificationRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RejectQualificationRequest x -> RejectQualificationRequest
$cfrom :: forall x.
RejectQualificationRequest -> Rep RejectQualificationRequest x
Prelude.Generic)

-- |
-- Create a value of 'RejectQualificationRequest' 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:
--
-- 'reason', 'rejectQualificationRequest_reason' - A text message explaining why the request was rejected, to be shown to
-- the Worker who made the request.
--
-- 'qualificationRequestId', 'rejectQualificationRequest_qualificationRequestId' - The ID of the Qualification request, as returned by the
-- @ListQualificationRequests@ operation.
newRejectQualificationRequest ::
  -- | 'qualificationRequestId'
  Prelude.Text ->
  RejectQualificationRequest
newRejectQualificationRequest :: Text -> RejectQualificationRequest
newRejectQualificationRequest
  Text
pQualificationRequestId_ =
    RejectQualificationRequest'
      { $sel:reason:RejectQualificationRequest' :: Maybe Text
reason =
          forall a. Maybe a
Prelude.Nothing,
        $sel:qualificationRequestId:RejectQualificationRequest' :: Text
qualificationRequestId =
          Text
pQualificationRequestId_
      }

-- | A text message explaining why the request was rejected, to be shown to
-- the Worker who made the request.
rejectQualificationRequest_reason :: Lens.Lens' RejectQualificationRequest (Prelude.Maybe Prelude.Text)
rejectQualificationRequest_reason :: Lens' RejectQualificationRequest (Maybe Text)
rejectQualificationRequest_reason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RejectQualificationRequest' {Maybe Text
reason :: Maybe Text
$sel:reason:RejectQualificationRequest' :: RejectQualificationRequest -> Maybe Text
reason} -> Maybe Text
reason) (\s :: RejectQualificationRequest
s@RejectQualificationRequest' {} Maybe Text
a -> RejectQualificationRequest
s {$sel:reason:RejectQualificationRequest' :: Maybe Text
reason = Maybe Text
a} :: RejectQualificationRequest)

-- | The ID of the Qualification request, as returned by the
-- @ListQualificationRequests@ operation.
rejectQualificationRequest_qualificationRequestId :: Lens.Lens' RejectQualificationRequest Prelude.Text
rejectQualificationRequest_qualificationRequestId :: Lens' RejectQualificationRequest Text
rejectQualificationRequest_qualificationRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RejectQualificationRequest' {Text
qualificationRequestId :: Text
$sel:qualificationRequestId:RejectQualificationRequest' :: RejectQualificationRequest -> Text
qualificationRequestId} -> Text
qualificationRequestId) (\s :: RejectQualificationRequest
s@RejectQualificationRequest' {} Text
a -> RejectQualificationRequest
s {$sel:qualificationRequestId:RejectQualificationRequest' :: Text
qualificationRequestId = Text
a} :: RejectQualificationRequest)

instance Core.AWSRequest RejectQualificationRequest where
  type
    AWSResponse RejectQualificationRequest =
      RejectQualificationRequestResponse
  request :: (Service -> Service)
-> RejectQualificationRequest -> Request RejectQualificationRequest
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 RejectQualificationRequest
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse RejectQualificationRequest)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> RejectQualificationRequestResponse
RejectQualificationRequestResponse'
            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))
      )

instance Prelude.Hashable RejectQualificationRequest where
  hashWithSalt :: Int -> RejectQualificationRequest -> Int
hashWithSalt Int
_salt RejectQualificationRequest' {Maybe Text
Text
qualificationRequestId :: Text
reason :: Maybe Text
$sel:qualificationRequestId:RejectQualificationRequest' :: RejectQualificationRequest -> Text
$sel:reason:RejectQualificationRequest' :: RejectQualificationRequest -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
qualificationRequestId

instance Prelude.NFData RejectQualificationRequest where
  rnf :: RejectQualificationRequest -> ()
rnf RejectQualificationRequest' {Maybe Text
Text
qualificationRequestId :: Text
reason :: Maybe Text
$sel:qualificationRequestId:RejectQualificationRequest' :: RejectQualificationRequest -> Text
$sel:reason:RejectQualificationRequest' :: RejectQualificationRequest -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
qualificationRequestId

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

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

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

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

-- |
-- Create a value of 'RejectQualificationRequestResponse' 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', 'rejectQualificationRequestResponse_httpStatus' - The response's http status code.
newRejectQualificationRequestResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  RejectQualificationRequestResponse
newRejectQualificationRequestResponse :: Int -> RejectQualificationRequestResponse
newRejectQualificationRequestResponse Int
pHttpStatus_ =
  RejectQualificationRequestResponse'
    { $sel:httpStatus:RejectQualificationRequestResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    RejectQualificationRequestResponse
  where
  rnf :: RejectQualificationRequestResponse -> ()
rnf RejectQualificationRequestResponse' {Int
httpStatus :: Int
$sel:httpStatus:RejectQualificationRequestResponse' :: RejectQualificationRequestResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus