@@ -3,39 +3,19 @@
3{-# LANGUAGE TypeFamilies #-}
3{-# LANGUAGE TypeFamilies #-}
4module Main where
4module Main where
6import Control.Concurrent.ThreadLocal
10import Control.Concurrent.ThreadLocal
7−import Control.Monad.IO.Class
9import Network.Wai.Handler.Warp
11import Network.Wai.Handler.Warp
11import Servant.Server
12import Servant.Server
12−import Web.Tracking
13+import Web.Tracking hiding (addTrackingHeaders)
13import Web.Tracking.Servant
14import Web.Tracking.Servant
15−type instance TrackingData RequestTracking = ()
17−type ExampleAPI = RequestTracking :> "echo" :> Get '[JSON] String
18− :<|> RequestTracking_ :> "relay" :> Get '[JSON] String
20−echoHandler :: () -> Handler String
21−echoHandler _ = pure "PONG"
23−relayHandler :: Handler String
24−relayHandler = pure "RELAY"
26−rqHandler :: Maybe ReqtrackInfo -> Handler ()
27−rqHandler (Just info) = liftIO $ putStrLn (unlines [ "Request tracking headers found!"
28− , "Request Id: " <> show (requestId info)
29− , "Request Source: " <> show (requestSource info)
30− , "Request Level: " <> show (requestLevel info)
32−rqHandler Nothing = liftIO $ putStrLn "Request tracking headers not found!"
34−server :: Server ExampleAPI
35−server = echoHandler :<|> relayHandler
37main :: IO ()
16main :: IO ()
38−main = do tls <- newThreadLocalWithGC 60
39− run 1337 $ trackingMiddleware (`insertThreadLocal` tls)
17+main = run 8081 $ trackingMiddleware (`insertThreadLocal` storage)
40− $ serveWithContext (Proxy :: Proxy ExampleAPI) ctx server
18+ $ serveWithContext exampleAPI ctx server
41− where ctx = mkReqtrackingHandler rqHandler :. mkReqtrackingHandler rqHandler :. EmptyContext
19+ where ctx = mkReqtrackingHandler rqHandler
20+ :. mkReqtrackingHandler rqHandler_