{-# LANGUAGE OverloadedStrings #-}

{-|
Checks allow users to post check statuses, for use with monitors.
-}
module Network.Datadog.Check
( CheckStatus(..)
, CheckResult(..)
, recordCheck
, HasStatus(..)
, HasHostName(..)
, HasCheck(..)
, HasTimestamp(..)
, HasTags(..)
, HasMessage(..)
, AsCheckStatus(..)
,
) where

import Control.Monad (void)
import Data.Aeson (encode)
import Network.HTTP.Types
import Network.Datadog.Internal

-- | Record the result of a check in Datadog.
recordCheck :: Environment -> CheckResult -> IO ()
recordCheck env checkResult =
  let path = "check_run"
  in void $ datadogHttp env path [] POST $ Just $ encode checkResult