{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Network.Datadog.Metrics
( Series (..)
, Metric (..)
, MetricPoints (..)
, sendMetrics
, series
, HasName(..)
, HasPoints(..)
, HasTags(..)
, HasHost(..)
, AsMetricPoints(..)
) where
import Control.Monad (void)
import Data.Aeson hiding (Series)
import Data.DList
import qualified Network.HTTP.Types as HTTP
import qualified Network.HTTP.Client as C
import Network.Datadog.Internal
series :: [Metric] -> Series
series = Series . fromList
metricRequest :: C.Request
metricRequest = baseRequest { C.method = HTTP.methodPost
, C.path = "/api/v1/series"
, C.requestHeaders = [("Content-Type", "application/json")]
}
sendMetrics :: DatadogCredentials k => DatadogClient k -> Series -> IO ()
sendMetrics m s = void $ C.httpNoBody req $ datadogClientManager m
where
req = (signRequest (datadogClientKeys m) metricRequest) { C.requestBody = C.RequestBodyLBS $ encode s }