@@ -3,39 +3,19 @@
33{-# LANGUAGE TypeFamilies #-}
44module Main where
55
6+import API
7+import Server
8+import TLS
9+
610import Control.Concurrent.ThreadLocal
7−import Control.Monad.IO.Class
8−import Data.Proxy
911import Network.Wai.Handler.Warp
10−import Servant.API
1112import Servant.Server
12−import Web.Tracking
13+import Web.Tracking hiding (addTrackingHeaders)
1314import Web.Tracking.Servant
1415
15−type instance TrackingData RequestTracking = ()
16−
17−type ExampleAPI = RequestTracking :> "echo" :> Get '[JSON] String
18− :<|> RequestTracking_ :> "relay" :> Get '[JSON] String
19−
20−echoHandler :: () -> Handler String
21−echoHandler _ = pure "PONG"
22−
23−relayHandler :: Handler String
24−relayHandler = pure "RELAY"
25−
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)
31− ])
32−rqHandler Nothing = liftIO $ putStrLn "Request tracking headers not found!"
33−
34−server :: Server ExampleAPI
35−server = echoHandler :<|> relayHandler
36−
3716main :: IO ()
38−main = do tls <- newThreadLocalWithGC 60
39− run 1337 $ trackingMiddleware (`insertThreadLocal` tls)
40− $ serveWithContext (Proxy :: Proxy ExampleAPI) ctx server
41− where ctx = mkReqtrackingHandler rqHandler :. mkReqtrackingHandler rqHandler :. EmptyContext
17+main = run 8081 $ trackingMiddleware (`insertThreadLocal` storage)
18+ $ serveWithContext exampleAPI ctx server
19+ where ctx = mkReqtrackingHandler rqHandler
20+ :. mkReqtrackingHandler rqHandler_
21+ :. EmptyContext