module Freckle.App.OpenTelemetry
  ( MonadTracer(..)
  ) where

import Freckle.App.Prelude

import Network.AWS.XRayClient.WAI (XRayVaultData, vaultDataFromRequest)
import Yesod.Core (HandlerFor, waiRequest)

-- | Class for reading 'XRayVaultData'
--
-- This is named the same as the OpenTelemetry class we'll use once we move to
-- that tracing system
--
class MonadTracer m where
  getVaultData :: m (Maybe XRayVaultData)

instance MonadTracer (HandlerFor app) where
  getVaultData :: HandlerFor app (Maybe XRayVaultData)
getVaultData = Request -> Maybe XRayVaultData
vaultDataFromRequest forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: * -> *). MonadHandler m => m Request
waiRequest