{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.S3.Types.RequestPayer
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.S3.Types.RequestPayer
  ( RequestPayer
      ( ..,
        RequestPayer_Requester
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude
import Amazonka.S3.Internal

-- | Confirms that the requester knows that they will be charged for the
-- request. Bucket owners need not specify this parameter in their
-- requests. For information about downloading objects from requester pays
-- buckets, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html Downloading Objects in Requestor Pays Buckets>
-- in the /Amazon S3 User Guide/.
newtype RequestPayer = RequestPayer'
  { RequestPayer -> Text
fromRequestPayer ::
      Core.Text
  }
  deriving stock
    ( Int -> RequestPayer -> ShowS
[RequestPayer] -> ShowS
RequestPayer -> String
(Int -> RequestPayer -> ShowS)
-> (RequestPayer -> String)
-> ([RequestPayer] -> ShowS)
-> Show RequestPayer
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RequestPayer] -> ShowS
$cshowList :: [RequestPayer] -> ShowS
show :: RequestPayer -> String
$cshow :: RequestPayer -> String
showsPrec :: Int -> RequestPayer -> ShowS
$cshowsPrec :: Int -> RequestPayer -> ShowS
Prelude.Show,
      ReadPrec [RequestPayer]
ReadPrec RequestPayer
Int -> ReadS RequestPayer
ReadS [RequestPayer]
(Int -> ReadS RequestPayer)
-> ReadS [RequestPayer]
-> ReadPrec RequestPayer
-> ReadPrec [RequestPayer]
-> Read RequestPayer
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RequestPayer]
$creadListPrec :: ReadPrec [RequestPayer]
readPrec :: ReadPrec RequestPayer
$creadPrec :: ReadPrec RequestPayer
readList :: ReadS [RequestPayer]
$creadList :: ReadS [RequestPayer]
readsPrec :: Int -> ReadS RequestPayer
$creadsPrec :: Int -> ReadS RequestPayer
Prelude.Read,
      RequestPayer -> RequestPayer -> Bool
(RequestPayer -> RequestPayer -> Bool)
-> (RequestPayer -> RequestPayer -> Bool) -> Eq RequestPayer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RequestPayer -> RequestPayer -> Bool
$c/= :: RequestPayer -> RequestPayer -> Bool
== :: RequestPayer -> RequestPayer -> Bool
$c== :: RequestPayer -> RequestPayer -> Bool
Prelude.Eq,
      Eq RequestPayer
Eq RequestPayer
-> (RequestPayer -> RequestPayer -> Ordering)
-> (RequestPayer -> RequestPayer -> Bool)
-> (RequestPayer -> RequestPayer -> Bool)
-> (RequestPayer -> RequestPayer -> Bool)
-> (RequestPayer -> RequestPayer -> Bool)
-> (RequestPayer -> RequestPayer -> RequestPayer)
-> (RequestPayer -> RequestPayer -> RequestPayer)
-> Ord RequestPayer
RequestPayer -> RequestPayer -> Bool
RequestPayer -> RequestPayer -> Ordering
RequestPayer -> RequestPayer -> RequestPayer
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: RequestPayer -> RequestPayer -> RequestPayer
$cmin :: RequestPayer -> RequestPayer -> RequestPayer
max :: RequestPayer -> RequestPayer -> RequestPayer
$cmax :: RequestPayer -> RequestPayer -> RequestPayer
>= :: RequestPayer -> RequestPayer -> Bool
$c>= :: RequestPayer -> RequestPayer -> Bool
> :: RequestPayer -> RequestPayer -> Bool
$c> :: RequestPayer -> RequestPayer -> Bool
<= :: RequestPayer -> RequestPayer -> Bool
$c<= :: RequestPayer -> RequestPayer -> Bool
< :: RequestPayer -> RequestPayer -> Bool
$c< :: RequestPayer -> RequestPayer -> Bool
compare :: RequestPayer -> RequestPayer -> Ordering
$ccompare :: RequestPayer -> RequestPayer -> Ordering
$cp1Ord :: Eq RequestPayer
Prelude.Ord,
      (forall x. RequestPayer -> Rep RequestPayer x)
-> (forall x. Rep RequestPayer x -> RequestPayer)
-> Generic RequestPayer
forall x. Rep RequestPayer x -> RequestPayer
forall x. RequestPayer -> Rep RequestPayer x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RequestPayer x -> RequestPayer
$cfrom :: forall x. RequestPayer -> Rep RequestPayer x
Prelude.Generic
    )
  deriving newtype
    ( Int -> RequestPayer -> Int
RequestPayer -> Int
(Int -> RequestPayer -> Int)
-> (RequestPayer -> Int) -> Hashable RequestPayer
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: RequestPayer -> Int
$chash :: RequestPayer -> Int
hashWithSalt :: Int -> RequestPayer -> Int
$chashWithSalt :: Int -> RequestPayer -> Int
Prelude.Hashable,
      RequestPayer -> ()
(RequestPayer -> ()) -> NFData RequestPayer
forall a. (a -> ()) -> NFData a
rnf :: RequestPayer -> ()
$crnf :: RequestPayer -> ()
Prelude.NFData,
      Text -> Either String RequestPayer
(Text -> Either String RequestPayer) -> FromText RequestPayer
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String RequestPayer
$cfromText :: Text -> Either String RequestPayer
Core.FromText,
      RequestPayer -> Text
(RequestPayer -> Text) -> ToText RequestPayer
forall a. (a -> Text) -> ToText a
toText :: RequestPayer -> Text
$ctoText :: RequestPayer -> Text
Core.ToText,
      RequestPayer -> ByteString
(RequestPayer -> ByteString) -> ToByteString RequestPayer
forall a. (a -> ByteString) -> ToByteString a
toBS :: RequestPayer -> ByteString
$ctoBS :: RequestPayer -> ByteString
Core.ToByteString,
      RequestPayer -> ByteStringBuilder
(RequestPayer -> ByteStringBuilder) -> ToLog RequestPayer
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: RequestPayer -> ByteStringBuilder
$cbuild :: RequestPayer -> ByteStringBuilder
Core.ToLog,
      HeaderName -> RequestPayer -> [Header]
(HeaderName -> RequestPayer -> [Header]) -> ToHeader RequestPayer
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> RequestPayer -> [Header]
$ctoHeader :: HeaderName -> RequestPayer -> [Header]
Core.ToHeader,
      RequestPayer -> QueryString
(RequestPayer -> QueryString) -> ToQuery RequestPayer
forall a. (a -> QueryString) -> ToQuery a
toQuery :: RequestPayer -> QueryString
$ctoQuery :: RequestPayer -> QueryString
Core.ToQuery,
      Value -> Parser [RequestPayer]
Value -> Parser RequestPayer
(Value -> Parser RequestPayer)
-> (Value -> Parser [RequestPayer]) -> FromJSON RequestPayer
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [RequestPayer]
$cparseJSONList :: Value -> Parser [RequestPayer]
parseJSON :: Value -> Parser RequestPayer
$cparseJSON :: Value -> Parser RequestPayer
Core.FromJSON,
      FromJSONKeyFunction [RequestPayer]
FromJSONKeyFunction RequestPayer
FromJSONKeyFunction RequestPayer
-> FromJSONKeyFunction [RequestPayer] -> FromJSONKey RequestPayer
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [RequestPayer]
$cfromJSONKeyList :: FromJSONKeyFunction [RequestPayer]
fromJSONKey :: FromJSONKeyFunction RequestPayer
$cfromJSONKey :: FromJSONKeyFunction RequestPayer
Core.FromJSONKey,
      [RequestPayer] -> Encoding
[RequestPayer] -> Value
RequestPayer -> Encoding
RequestPayer -> Value
(RequestPayer -> Value)
-> (RequestPayer -> Encoding)
-> ([RequestPayer] -> Value)
-> ([RequestPayer] -> Encoding)
-> ToJSON RequestPayer
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [RequestPayer] -> Encoding
$ctoEncodingList :: [RequestPayer] -> Encoding
toJSONList :: [RequestPayer] -> Value
$ctoJSONList :: [RequestPayer] -> Value
toEncoding :: RequestPayer -> Encoding
$ctoEncoding :: RequestPayer -> Encoding
toJSON :: RequestPayer -> Value
$ctoJSON :: RequestPayer -> Value
Core.ToJSON,
      ToJSONKeyFunction [RequestPayer]
ToJSONKeyFunction RequestPayer
ToJSONKeyFunction RequestPayer
-> ToJSONKeyFunction [RequestPayer] -> ToJSONKey RequestPayer
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [RequestPayer]
$ctoJSONKeyList :: ToJSONKeyFunction [RequestPayer]
toJSONKey :: ToJSONKeyFunction RequestPayer
$ctoJSONKey :: ToJSONKeyFunction RequestPayer
Core.ToJSONKey,
      [Node] -> Either String RequestPayer
([Node] -> Either String RequestPayer) -> FromXML RequestPayer
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String RequestPayer
$cparseXML :: [Node] -> Either String RequestPayer
Core.FromXML,
      RequestPayer -> XML
(RequestPayer -> XML) -> ToXML RequestPayer
forall a. (a -> XML) -> ToXML a
toXML :: RequestPayer -> XML
$ctoXML :: RequestPayer -> XML
Core.ToXML
    )

pattern RequestPayer_Requester :: RequestPayer
pattern $bRequestPayer_Requester :: RequestPayer
$mRequestPayer_Requester :: forall r. RequestPayer -> (Void# -> r) -> (Void# -> r) -> r
RequestPayer_Requester = RequestPayer' "requester"

{-# COMPLETE
  RequestPayer_Requester,
  RequestPayer'
  #-}