module Network.Datadog
( Keys(..)
, loadKeysFromEnv
, Environment
, createEnvironment
, withDatadog
, writeCredentials
, readWriteCredentials
, module Network.Datadog.Check
, module Network.Datadog.Downtime
, module Network.Datadog.Event
, module Network.Datadog.Host
, module Network.Datadog.Metrics
, module Network.Datadog.Monitor
) where
import qualified Data.Text as T
import Data.Text.Encoding (encodeUtf8)
import Network.HTTP.Client (newManager)
import Network.HTTP.Client.TLS (tlsManagerSettings)
import System.Environment (getEnv)
import Network.Datadog.Check
import Network.Datadog.Downtime
import Network.Datadog.Event
import Network.Datadog.Host
import Network.Datadog.Metrics
import Network.Datadog.Monitor
import Network.Datadog.Internal
loadKeysFromEnv :: IO Keys
loadKeysFromEnv :: IO Keys
loadKeysFromEnv = do
String
api <- String -> IO String
getEnv String
"DATADOG_API_KEY"
String
app <- String -> IO String
getEnv String
"DATADOG_APP_KEY"
Keys -> IO Keys
forall (m :: * -> *) a. Monad m => a -> m a
return (Keys -> IO Keys) -> Keys -> IO Keys
forall a b. (a -> b) -> a -> b
$ String -> String -> Keys
Keys String
api String
app
createEnvironment :: Keys -> IO Environment
createEnvironment :: Keys -> IO Environment
createEnvironment Keys
keys = (Manager -> Environment) -> IO Manager -> IO Environment
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Keys -> String -> Manager -> Environment
Environment Keys
keys String
"https://api.datadoghq.com/api/v1/") IO Manager
managerIO
where managerIO :: IO Manager
managerIO = ManagerSettings -> IO Manager
newManager ManagerSettings
tlsManagerSettings
withDatadog :: DatadogCredentials k => k -> (DatadogClient k -> IO a) -> IO a
withDatadog :: k -> (DatadogClient k -> IO a) -> IO a
withDatadog k
k DatadogClient k -> IO a
f = ManagerSettings -> IO Manager
newManager ManagerSettings
tlsManagerSettings IO Manager -> (Manager -> IO a) -> IO a
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Manager
man -> DatadogClient k -> IO a
f (DatadogClient k -> IO a) -> DatadogClient k -> IO a
forall a b. (a -> b) -> a -> b
$ Manager -> k -> DatadogClient k
forall a. Manager -> a -> DatadogClient a
DatadogClient Manager
man k
k
writeCredentials :: T.Text -> Write
writeCredentials :: Text -> Write
writeCredentials = ByteString -> Write
Write (ByteString -> Write) -> (Text -> ByteString) -> Text -> Write
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
encodeUtf8
readWriteCredentials :: T.Text -> T.Text -> ReadWrite
readWriteCredentials :: Text -> Text -> ReadWrite
readWriteCredentials Text
r Text
w = ByteString -> ByteString -> ReadWrite
ReadWrite (Text -> ByteString
encodeUtf8 Text
w) (Text -> ByteString
encodeUtf8 Text
r)