git.iko.soy/typeable/request-track
on master help sign in
more docs
commit7a6c4333ca1b7a6f17cbc828c17ee17c7c0452c3 authorNick <nick@typeable.io> dateWed 26 Jul 2023, 14:09 (3 years ago) parent7c874fe
1 file changed+9
request-track-servant/src/Web/Tracking/Servant/Types.hs+9
request-track-servant/src/Web/Tracking/Servant/Types.hs+9
@@ -37,15 +37,22 @@ import Servant.Server.Internal
3737-- type instance TrackingData RequestTracking = TrackingArg
3838--
3939-- trackingHandler :: ReqtrackingHandler (Maybe ReqtrackInfo) TrackingArg
40+-- trackingHandler = mkReqtrackingHandler $ \mrti ->
41+-- case mrti of
42+-- Just rti -> ... -- Do something with ReqtrackInfo, return TrackingArg
43+-- Nothing -> ...
4044--
4145-- @
4246data RequestTracking
4347
48+-- | See 'RequestTracking'
4449type family TrackingData a
4550
4651-- | Same as above, except no argument is passed to a handler.
4752data RequestTracking_
4853
54+-- | Servant context handler used for processing 'ReqtrackInfo' before passing the result to endpoint handlers.
55+-- Use 'mkReqtrackingHandler' in your code instead of the constructor.
4956newtype ReqtrackingHandler r o = ReqtrackingHandler { runReqtrackingHandler :: r -> Handler o
5057 } deriving (Functor)
5158
@@ -58,6 +65,7 @@ instance Monad (ReqtrackingHandler r) where
5865 f >>= g = ReqtrackingHandler $ \r -> do a <- runReqtrackingHandler f r
5966 runReqtrackingHandler (g a) r
6067
68+-- | Smart constructor to create 'ReqtrackingHandler'.
6169mkReqtrackingHandler :: (Maybe ReqtrackInfo -> Handler o) -> ReqtrackingHandler (Maybe ReqtrackInfo) o
6270mkReqtrackingHandler = ReqtrackingHandler
6371
@@ -108,6 +116,7 @@ instance HasClient m api => HasClient m (RequestTracking_ :> api) where
108116 hoistClientMonad pm Proxy f cl = hoistClientMonad pm (Proxy :: Proxy api) f cl
109117
110118
119+-- | Headers list to use with 'Headers'. Currently unused.
111120type ReqtrackHeaders = '[ Header RequestIdHdr ByteString
112121 , Header RequestLevelHdr Word
113122 , Header RequestSourceHdr ByteString