-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains all supported security schemes defined in the specification
module StripeAPI.SecuritySchemes where

import qualified Data.Text.Internal
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Show
import qualified Network.HTTP.Client as Network.HTTP.Client.Request
import qualified Network.HTTP.Simple
import qualified StripeAPI.Common

-- | Used to pass the authentication information for BasicAuthentication to 'basicAuthenticationSecurityScheme'.
data BasicAuthenticationData = BasicAuthenticationData
  { BasicAuthenticationData -> Text
basicAuthenticationDataUsername :: Data.Text.Internal.Text,
    BasicAuthenticationData -> Text
basicAuthenticationDataPassword :: Data.Text.Internal.Text
  }
  deriving (Int -> BasicAuthenticationData -> ShowS
[BasicAuthenticationData] -> ShowS
BasicAuthenticationData -> String
(Int -> BasicAuthenticationData -> ShowS)
-> (BasicAuthenticationData -> String)
-> ([BasicAuthenticationData] -> ShowS)
-> Show BasicAuthenticationData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BasicAuthenticationData] -> ShowS
$cshowList :: [BasicAuthenticationData] -> ShowS
show :: BasicAuthenticationData -> String
$cshow :: BasicAuthenticationData -> String
showsPrec :: Int -> BasicAuthenticationData -> ShowS
$cshowsPrec :: Int -> BasicAuthenticationData -> ShowS
GHC.Show.Show, Eq BasicAuthenticationData
Eq BasicAuthenticationData
-> (BasicAuthenticationData -> BasicAuthenticationData -> Ordering)
-> (BasicAuthenticationData -> BasicAuthenticationData -> Bool)
-> (BasicAuthenticationData -> BasicAuthenticationData -> Bool)
-> (BasicAuthenticationData -> BasicAuthenticationData -> Bool)
-> (BasicAuthenticationData -> BasicAuthenticationData -> Bool)
-> (BasicAuthenticationData
    -> BasicAuthenticationData -> BasicAuthenticationData)
-> (BasicAuthenticationData
    -> BasicAuthenticationData -> BasicAuthenticationData)
-> Ord BasicAuthenticationData
BasicAuthenticationData -> BasicAuthenticationData -> Bool
BasicAuthenticationData -> BasicAuthenticationData -> Ordering
BasicAuthenticationData
-> BasicAuthenticationData -> BasicAuthenticationData
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 :: BasicAuthenticationData
-> BasicAuthenticationData -> BasicAuthenticationData
$cmin :: BasicAuthenticationData
-> BasicAuthenticationData -> BasicAuthenticationData
max :: BasicAuthenticationData
-> BasicAuthenticationData -> BasicAuthenticationData
$cmax :: BasicAuthenticationData
-> BasicAuthenticationData -> BasicAuthenticationData
>= :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
$c>= :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
> :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
$c> :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
<= :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
$c<= :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
< :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
$c< :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
compare :: BasicAuthenticationData -> BasicAuthenticationData -> Ordering
$ccompare :: BasicAuthenticationData -> BasicAuthenticationData -> Ordering
$cp1Ord :: Eq BasicAuthenticationData
GHC.Classes.Ord, BasicAuthenticationData -> BasicAuthenticationData -> Bool
(BasicAuthenticationData -> BasicAuthenticationData -> Bool)
-> (BasicAuthenticationData -> BasicAuthenticationData -> Bool)
-> Eq BasicAuthenticationData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
$c/= :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
== :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
$c== :: BasicAuthenticationData -> BasicAuthenticationData -> Bool
GHC.Classes.Eq)

-- | Use this security scheme to use basic authentication for a request. Should be used in a 'StripeAPI.Common.Configuration'.
--
-- Basic HTTP authentication. Allowed headers-- Authorization: Basic \<api_key> | Authorization: Basic \<base64 hash of \`api_key:\`>
--
-- @
-- 'StripeAPI.Configuration.defaultConfiguration'
--   { configSecurityScheme =
--       'basicAuthenticationSecurityScheme' 'BasicAuthenticationData'
--         { 'basicAuthenticationDataUsername' = "user",
--           'basicAuthenticationDataPassword' = "pw"
--         }
--   }
-- @
basicAuthenticationSecurityScheme ::
  BasicAuthenticationData ->
  StripeAPI.Common.SecurityScheme
basicAuthenticationSecurityScheme :: BasicAuthenticationData -> SecurityScheme
basicAuthenticationSecurityScheme = \BasicAuthenticationData
basicAuth_0 -> ByteString -> ByteString -> SecurityScheme
Network.HTTP.Client.Request.applyBasicAuth (Text -> ByteString
StripeAPI.Common.textToByte (Text -> ByteString) -> Text -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ BasicAuthenticationData -> Text
basicAuthenticationDataUsername BasicAuthenticationData
basicAuth_0) (Text -> ByteString
StripeAPI.Common.textToByte (Text -> ByteString) -> Text -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ BasicAuthenticationData -> Text
basicAuthenticationDataPassword BasicAuthenticationData
basicAuth_0)

-- | Use this security scheme to use bearer authentication for a request. Should be used in a 'StripeAPI.Common.Configuration'.
--
-- Bearer HTTP authentication. Allowed headers-- Authorization: Bearer \<api_key>
--
-- @
-- 'StripeAPI.Configuration.defaultConfiguration'
--   { configSecurityScheme = 'bearerAuthenticationSecurityScheme' "token"
--   }
-- @
bearerAuthenticationSecurityScheme ::
  Data.Text.Internal.Text ->
  StripeAPI.Common.SecurityScheme
bearerAuthenticationSecurityScheme :: Text -> SecurityScheme
bearerAuthenticationSecurityScheme = \Text
token_1 -> HeaderName -> ByteString -> SecurityScheme
Network.HTTP.Simple.addRequestHeader HeaderName
"Authorization" (ByteString -> SecurityScheme) -> ByteString -> SecurityScheme
forall a b. (a -> b) -> a -> b
GHC.Base.$ (Text -> ByteString
StripeAPI.Common.textToByte (Text -> ByteString) -> Text -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ (Text
"Bearer " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
GHC.Base.<> Text
token_1))