module Calamity.HTTP.Reason
( Reason(..)
, reason ) where
import Calamity.HTTP.Internal.Request
import Control.Lens hiding ( (.=) )
import Data.Text ( Text )
import Data.Text.Encoding ( encodeUtf8 )
import GHC.Generics
import Network.Wreq.Lens
data Reason a = Reason a Text
deriving ( Int -> Reason a -> ShowS
[Reason a] -> ShowS
Reason a -> String
(Int -> Reason a -> ShowS)
-> (Reason a -> String) -> ([Reason a] -> ShowS) -> Show (Reason a)
forall a. Show a => Int -> Reason a -> ShowS
forall a. Show a => [Reason a] -> ShowS
forall a. Show a => Reason a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Reason a] -> ShowS
$cshowList :: forall a. Show a => [Reason a] -> ShowS
show :: Reason a -> String
$cshow :: forall a. Show a => Reason a -> String
showsPrec :: Int -> Reason a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Reason a -> ShowS
Show, Reason a -> Reason a -> Bool
(Reason a -> Reason a -> Bool)
-> (Reason a -> Reason a -> Bool) -> Eq (Reason a)
forall a. Eq a => Reason a -> Reason a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Reason a -> Reason a -> Bool
$c/= :: forall a. Eq a => Reason a -> Reason a -> Bool
== :: Reason a -> Reason a -> Bool
$c== :: forall a. Eq a => Reason a -> Reason a -> Bool
Eq, (forall x. Reason a -> Rep (Reason a) x)
-> (forall x. Rep (Reason a) x -> Reason a) -> Generic (Reason a)
forall x. Rep (Reason a) x -> Reason a
forall x. Reason a -> Rep (Reason a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Reason a) x -> Reason a
forall a x. Reason a -> Rep (Reason a) x
$cto :: forall a x. Rep (Reason a) x -> Reason a
$cfrom :: forall a x. Reason a -> Rep (Reason a) x
Generic )
reason :: Request a => Text -> a -> Reason a
reason :: Text -> a -> Reason a
reason = (a -> Text -> Reason a) -> Text -> a -> Reason a
forall a b c. (a -> b -> c) -> b -> a -> c
flip a -> Text -> Reason a
forall a. a -> Text -> Reason a
Reason
instance Request a => Request (Reason a) where
type Result (Reason a) = Result a
route :: Reason a -> Route
route (Reason a :: a
a _) = a -> Route
forall a. Request a => a -> Route
route a
a
action :: Reason a
-> Options -> Session -> String -> IO (Response ByteString)
action (Reason a :: a
a r :: Text
r) = a -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Request a =>
a -> Options -> Session -> String -> IO (Response ByteString)
action a
a (Options -> Session -> String -> IO (Response ByteString))
-> (Options -> Options)
-> Options
-> Session
-> String
-> IO (Response ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (HeaderName -> Lens' Options [ByteString]
header "X-Audit-Log-Reason" (([ByteString] -> Identity [ByteString])
-> Options -> Identity Options)
-> [ByteString] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Text -> ByteString
encodeUtf8 Text
r])