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 +27/−31
- src/Arbor/Network/StatsD/Options.hs +57/−0
- src/Arbor/Network/StatsD/Type.hs +1/−1
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