packages feed

calamity-0.5.0.0: 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 Data.Text (Text)
import Data.Text.Encoding (encodeUtf8)
import Network.HTTP.Req

data Reason a = Reason a Text
  deriving (Show, Eq)

-- | 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) = \u o ->
    action a u (o <> header "X-Audit-Log-Reason" (encodeUtf8 r))