pusher-http-haskell-0.2.0.0: src/Control/Monad/Pusher/Time.hs
{-|
Module : Control.Monad.Pusher.Time
Description : Typclass for IO monads that can get the current time
Copyright : (c) Will Sewell, 2015
Licence : MIT
Maintainer : me@willsewell.com
Stability : experimental
-}
module Control.Monad.Pusher.Time (MonadTime(..)) where
import Control.Applicative ((<$>))
import Control.Monad.Except (ExceptT)
import Control.Monad.Reader (ReaderT)
import Control.Monad.Trans.Class (lift)
import Network.HTTP.Client (Manager, Request, Response)
import qualified Data.ByteString.Lazy as BL
import qualified Data.Time.Clock.POSIX as Clock
import qualified Network.HTTP.Client as HTTP.Client
class Monad m => MonadTime m where
getPOSIXTime :: m Int
instance MonadTime IO where
getPOSIXTime = round <$> Clock.getPOSIXTime
instance MonadTime m => MonadTime (ReaderT r m) where
getPOSIXTime = lift getPOSIXTime
instance MonadTime m => MonadTime (ExceptT e m) where
getPOSIXTime = lift getPOSIXTime