calamity-0.1.17.0: src/Calamity/HTTP/Reason.hs
-- | A wrapper request that adds a reson to a request
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 ( Show, Eq, Generic )
-- | Attach a reason to a request
reason :: Request a => Text -> a -> Reason a
reason = flip Reason
instance Request a => Request (Reason a) where
type Result (Reason a) = Result a
route (Reason a _) = route a
action (Reason a r) = action a . (header "X-Audit-Log-Reason" .~ [encodeUtf8 r])