packages feed

arbor-datadog 0.0.0.1 → 0.1.0.0

raw patch · 3 files changed

+85/−32 lines, 3 filesdep +optparse-applicativedep ~networkPVP ok

version bump matches the API change (PVP)

Dependencies added: optparse-applicative

Dependency ranges changed: network

API changes (from Hackage documentation)

+ Arbor.Network.StatsD.Options: SampleRate :: Double -> SampleRate
+ Arbor.Network.StatsD.Options: StatsConfig :: HostName -> Int -> [StatsTag] -> SampleRate -> StatsConfig
+ Arbor.Network.StatsD.Options: StatsTag :: (Text, Text) -> StatsTag
+ Arbor.Network.StatsD.Options: [host] :: StatsConfig -> HostName
+ Arbor.Network.StatsD.Options: [port] :: StatsConfig -> Int
+ Arbor.Network.StatsD.Options: [sampleRate] :: StatsConfig -> SampleRate
+ Arbor.Network.StatsD.Options: [tags] :: StatsConfig -> [StatsTag]
+ Arbor.Network.StatsD.Options: data StatsConfig
+ Arbor.Network.StatsD.Options: instance GHC.Classes.Eq Arbor.Network.StatsD.Options.StatsTag
+ Arbor.Network.StatsD.Options: instance GHC.Generics.Generic Arbor.Network.StatsD.Options.StatsConfig
+ Arbor.Network.StatsD.Options: instance GHC.Generics.Generic Arbor.Network.StatsD.Options.StatsTag
+ Arbor.Network.StatsD.Options: instance GHC.Show.Show Arbor.Network.StatsD.Options.StatsConfig
+ Arbor.Network.StatsD.Options: instance GHC.Show.Show Arbor.Network.StatsD.Options.StatsTag
+ Arbor.Network.StatsD.Options: newtype SampleRate
+ Arbor.Network.StatsD.Options: newtype StatsTag
+ Arbor.Network.StatsD.Options: statsConfigParser :: Parser StatsConfig
- Arbor.Network.StatsD.Datadog: metric :: (ToMetricValue a) => MetricName -> MetricType -> a -> Metric
+ Arbor.Network.StatsD.Datadog: metric :: ToMetricValue a => MetricName -> MetricType -> a -> Metric
- Arbor.Network.StatsD.Datadog: sampled :: (HasType SampleRate v) => (a -> v) -> SampleRate -> a -> v
+ Arbor.Network.StatsD.Datadog: sampled :: HasType SampleRate v => (a -> v) -> SampleRate -> a -> v
- Arbor.Network.StatsD.Datadog: sampled' :: (HasType SampleRate v) => (a -> v) -> (a -> SampleRate) -> a -> v
+ Arbor.Network.StatsD.Datadog: sampled' :: HasType SampleRate v => (a -> v) -> (a -> SampleRate) -> a -> v
- Arbor.Network.StatsD.Datadog: sendEvt :: (MonadIO m) => StatsClient -> Event -> m ()
+ Arbor.Network.StatsD.Datadog: sendEvt :: MonadIO m => StatsClient -> Event -> m ()
- Arbor.Network.StatsD.Datadog: tagged :: (HasType [Tag] v) => (a -> v) -> (a -> [Tag]) -> a -> v
+ Arbor.Network.StatsD.Datadog: tagged :: HasType [Tag] v => (a -> v) -> (a -> [Tag]) -> a -> v
- Arbor.Network.StatsD.Type: Event :: {-# UNPACK #-} !Text -> {-# UNPACK #-} !Text -> !(Maybe UTCTime) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Priority) -> !(Maybe Text) -> !(Maybe AlertType) -> ![Tag] -> Event
+ Arbor.Network.StatsD.Type: Event :: {-# UNPACK #-} !Text -> {-# UNPACK #-} !Text -> !Maybe UTCTime -> !Maybe Text -> !Maybe Text -> !Maybe Priority -> !Maybe Text -> !Maybe AlertType -> ![Tag] -> Event
- Arbor.Network.StatsD.Type: Metric :: !MetricName -> {-# UNPACK #-} !SampleRate -> !MetricType -> !(Utf8Builder ()) -> ![Tag] -> Metric
+ Arbor.Network.StatsD.Type: Metric :: !MetricName -> {-# UNPACK #-} !SampleRate -> !MetricType -> !Utf8Builder () -> ![Tag] -> Metric
- Arbor.Network.StatsD.Type: ServiceCheck :: {-# UNPACK #-} !Text -> !ServiceCheckStatus -> !(Maybe Text) -> !(Maybe UTCTime) -> !(Maybe Text) -> ![Tag] -> ServiceCheck
+ Arbor.Network.StatsD.Type: ServiceCheck :: {-# UNPACK #-} !Text -> !ServiceCheckStatus -> !Maybe Text -> !Maybe UTCTime -> !Maybe Text -> ![Tag] -> ServiceCheck
- Arbor.Network.StatsD.Type: [$sel:aggregationKey:Event] :: Event -> !(Maybe Text)
+ Arbor.Network.StatsD.Type: [$sel:aggregationKey:Event] :: Event -> !Maybe Text
- Arbor.Network.StatsD.Type: [$sel:alertType:Event] :: Event -> !(Maybe AlertType)
+ Arbor.Network.StatsD.Type: [$sel:alertType:Event] :: Event -> !Maybe AlertType
- Arbor.Network.StatsD.Type: [$sel:dateHappened:Event] :: Event -> !(Maybe UTCTime)
+ Arbor.Network.StatsD.Type: [$sel:dateHappened:Event] :: Event -> !Maybe UTCTime
- Arbor.Network.StatsD.Type: [$sel:dateHappened:ServiceCheck] :: ServiceCheck -> !(Maybe UTCTime)
+ Arbor.Network.StatsD.Type: [$sel:dateHappened:ServiceCheck] :: ServiceCheck -> !Maybe UTCTime
- Arbor.Network.StatsD.Type: [$sel:hostname:Event] :: Event -> !(Maybe Text)
+ Arbor.Network.StatsD.Type: [$sel:hostname:Event] :: Event -> !Maybe Text
- Arbor.Network.StatsD.Type: [$sel:hostname:ServiceCheck] :: ServiceCheck -> !(Maybe Text)
+ Arbor.Network.StatsD.Type: [$sel:hostname:ServiceCheck] :: ServiceCheck -> !Maybe Text
- Arbor.Network.StatsD.Type: [$sel:message:ServiceCheck] :: ServiceCheck -> !(Maybe Text)
+ Arbor.Network.StatsD.Type: [$sel:message:ServiceCheck] :: ServiceCheck -> !Maybe Text
- Arbor.Network.StatsD.Type: [$sel:priority:Event] :: Event -> !(Maybe Priority)
+ Arbor.Network.StatsD.Type: [$sel:priority:Event] :: Event -> !Maybe Priority
- Arbor.Network.StatsD.Type: [$sel:sourceTypeName:Event] :: Event -> !(Maybe Text)
+ Arbor.Network.StatsD.Type: [$sel:sourceTypeName:Event] :: Event -> !Maybe Text
- Arbor.Network.StatsD.Type: [$sel:value:Metric] :: Metric -> !(Utf8Builder ())
+ Arbor.Network.StatsD.Type: [$sel:value:Metric] :: Metric -> !Utf8Builder ()

Files

arbor-datadog.cabal view
@@ -1,9 +1,6 @@--- This file has been generated from package.yaml by hpack version 0.18.1.------ see: https://github.com/sol/hpack-+cabal-version:  2.2 name:           arbor-datadog-version:        0.0.0.1+version:        0.1.0.0 synopsis:       Datadog client for Haskell. description:    Datadog client for Haskell. Supports both the HTTP API and StatsD. category:       Network@@ -13,60 +10,59 @@ license:        MIT license-file:   LICENSE build-type:     Simple-cabal-version:  >= 1.10  source-repository head   type: git   location: git://github.com/arbor/arbor-datadog.git  library-  hs-source-dirs:-      src+  exposed-modules:+      Arbor.Network.StatsD+      Arbor.Network.StatsD.Datadog+      Arbor.Network.StatsD.Internal.Lens+      Arbor.Network.StatsD.Monad+      Arbor.Network.StatsD.Type+      Arbor.Network.StatsD.Options+  other-modules:+  hs-source-dirs: src   other-extensions: OverloadedStrings GeneralizedNewtypeDeriving TemplateHaskell FunctionalDependencies MultiParamTypeClasses FlexibleInstances   ghc-options: -Wall   build-depends:-      generic-lens-    , lens-    , network-    , resourcet-    , time-    , transformers-    , base >=4.7 && <5-    , aeson+      aeson     , auto-update+    , base >=4.7 && <5     , buffer-builder     , bytestring     , dlist+    , generic-lens+    , lens     , mtl+    , network <3+    , optparse-applicative     , random+    , resourcet     , text+    , time+    , transformers     , unordered-containers     , vector-  exposed-modules:-      Arbor.Network.StatsD-      Arbor.Network.StatsD.Datadog-      Arbor.Network.StatsD.Internal.Lens-      Arbor.Network.StatsD.Monad-      Arbor.Network.StatsD.Type-  other-modules:-      Paths_arbor_datadog   default-language: Haskell2010  test-suite datadog-api-test   type: exitcode-stdio-1.0   main-is: Spec.hs-  hs-source-dirs:-      test+  other-modules:+  hs-source-dirs: test   ghc-options: -Wall -O3 -threaded -rtsopts -with-rtsopts=-N   build-depends:-      generic-lens+      Cabal+    , arbor-datadog+    , base+    , generic-lens+    , hspec     , lens     , network     , resourcet     , time     , transformers-    , base-    , Cabal-    , arbor-datadog-    , hspec   default-language: Haskell2010
+ src/Arbor/Network/StatsD/Options.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DeriveGeneric #-}+module Arbor.Network.StatsD.Options+( StatsTag(..)+, StatsConfig(..)+, SampleRate(..)+, statsConfigParser+)+where++import Arbor.Network.StatsD.Type (SampleRate (..))+import Data.Monoid               ((<>))+import Data.Text                 (Text)+import GHC.Generics              (Generic)+import Network.Socket            (HostName)+import Options.Applicative++import qualified Data.Text as Text++newtype StatsTag = StatsTag (Text, Text) deriving (Show, Eq, Generic)++data StatsConfig = StatsConfig+  { host       :: HostName+  , port       :: Int+  , tags       :: [StatsTag]+  , sampleRate :: SampleRate+  } deriving (Show, Generic)++statsConfigParser :: Parser StatsConfig+statsConfigParser = StatsConfig+  <$> strOption+    (  long "statsd-host"+    <> metavar "HOST_NAME"+    <> showDefault <> value "localhost"+    <> help "StatsD host name or IP address"+    <> hidden)+  <*> option auto+    (  long "statsd-port"+    <> metavar "PORT"+    <> showDefault <> value 8125+    <> help "StatsD port"+    <> hidden)+  <*> ( string2Tags <$> strOption+    (  long "statsd-tags"+    <> metavar "TAGS"+    <> showDefault <> value []+    <> help "StatsD tags"))+  <*> ( SampleRate <$> option auto+    (  long "statsd-sample-rate"+    <> metavar "SAMPLE_RATE"+    <> showDefault <> value 0.01+    <> help "StatsD sample rate"+    <> hidden))++string2Tags :: String -> [StatsTag]+string2Tags s = StatsTag . splitTag <$> splitTags+  where splitTags = Text.split (==',') (Text.pack s)+        splitTag t = Text.drop 1 <$> Text.break (==':') t
src/Arbor/Network/StatsD/Type.hs view
@@ -8,7 +8,7 @@ import Data.Text               (Text) import Data.Time.Clock         (UTCTime) import GHC.Generics-import Network                 (HostName)+import Network.Socket          (HostName) import System.IO               (Handle)  -- | Tags are a Datadog specific extension to StatsD. They allow you to tag a metric with a