{-# 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 :: Environment -> CheckResult -> IO ()
recordCheck Environment
env CheckResult
checkResult =
  let path :: p
path = p
"check_run"
  in IO ByteString -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO ByteString -> IO ()) -> IO ByteString -> IO ()
forall a b. (a -> b) -> a -> b
$ Environment
-> String
-> [(String, String)]
-> StdMethod
-> Maybe ByteString
-> IO ByteString
datadogHttp Environment
env String
forall p. IsString p => p
path [] StdMethod
POST (Maybe ByteString -> IO ByteString)
-> Maybe ByteString -> IO ByteString
forall a b. (a -> b) -> a -> b
$ ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
forall a b. (a -> b) -> a -> b
$ CheckResult -> ByteString
forall a. ToJSON a => a -> ByteString
encode CheckResult
checkResult