packages feed

hslogstash 0.3.5 → 0.3.6

raw patch · 4 files changed

+48/−7 lines, 4 filesdep +blaze-builderdep +data-defaultdep +stm-firehosedep ~http-conduit

Dependencies added: blaze-builder, data-default, stm-firehose, wai

Dependency ranges changed: http-conduit

Files

Changelog view
@@ -1,3 +1,10 @@+hslogstash (0.3.6) precise; urgency=low++  * Bumped http-conduit version.+  * Added logstash firehose++ -- Bartavelle <bartavelle@gmail.com>  Mon, 27 Dec 2013 08:18:07 +0100+ hslogstash (0.3.5) precise; urgency=low    * Bumped text version bound.
Data/Conduit/ElasticSearch.hs view
@@ -25,6 +25,7 @@ import Network.HTTP.Types import Control.Lens hiding ((.=)) import Control.Lens.Aeson+import Data.Default  import qualified Data.HashMap.Strict as HM import qualified Data.Vector as V@@ -72,7 +73,7 @@     parseJSON _          = mzero  -- | A source of Logstash messages generated from an ElasticSearch query.-esSearchSource :: (MonadResource m) => Maybe (Request m) -- ^ Defaults parameters for the http request to ElasticSearch. Use "Nothing" for defaults.+esSearchSource :: (MonadResource m) => Maybe Request -- ^ Defaults parameters for the http request to ElasticSearch. Use "Nothing" for defaults.                -> BS.ByteString -- ^ Hostname of the ElasticSearch server                -> Int -- ^ Port of the HTTP interface (usually 9200)                -> BS.ByteString -- ^ Prefix of the index (usually logstash)@@ -107,7 +108,7 @@                     when (nexti < total) (self nexti)                 _ -> yield (Left errbody) -esScan :: Maybe (Request (ResourceT IO)) -- ^ Defaults parameters for the http request to ElasticSearch. Use "Nothing" for defaults.+esScan :: Maybe Request -- ^ Defaults parameters for the http request to ElasticSearch. Use "Nothing" for defaults.                -> BS.ByteString -- ^ Hostname of the ElasticSearch server                -> Int -- ^ Port of the HTTP interface (usually 9200)                -> BS.ByteString -- ^ Name of the index (Something like logstash-2013.12.06)@@ -144,7 +145,7 @@                 (Just (String nscr), hts) -> yield (Right hts) >> self nscr                 _ -> yield (Left (fromMaybe "could not parse json" respbody)) -safeQuery :: Request (ResourceT IO) -> IO (Response BSL.ByteString)+safeQuery :: Request -> IO (Response BSL.ByteString) safeQuery req = catch (withManager $ httpLbs ureq ) (\e -> print (e :: SomeException) >> threadDelay 500000 >> safeQuery req)     where         ureq = req { responseTimeout = Nothing }@@ -152,7 +153,7 @@ -- | Takes a "LogstashMessage", and returns the result of the ElasticSearch request -- along with the value in case of errors, or ElasticSearch's values in case of -- success.-esConduit :: (MonadResource m) => Maybe (Request m) -- ^ Defaults parameters for the http request to ElasticSearch. Use "Nothing" for defaults.+esConduit :: (MonadResource m) => Maybe Request -- ^ Defaults parameters for the http request to ElasticSearch. Use "Nothing" for defaults.             -> BS.ByteString -- ^ Hostname of the ElasticSearch server             -> Int -- ^ Port of the HTTP interface (usually 9200)             -> T.Text -- ^ Prefix of the index (usually logstash)
+ Data/Conduit/FireHose.hs view
@@ -0,0 +1,33 @@+-- | A firehose sink, letting client get through a port and read the sink+-- output.+module Data.Conduit.FireHose (fireHose) where++import Control.Monad.IO.Class++import Logstash.Message++import Data.Conduit+import Data.Conduit.Network.Firehose+import Network.Wai (Request,pathInfo)++import qualified Data.HashSet as HS+import qualified Data.Text as T++import Data.Aeson+import Blaze.ByteString.Builder.ByteString+import Data.Monoid++-- | A web server will be launched on the specified port. The request URL+-- must be of the form /type1,type2,type3. The client will be fed all+-- messages matching those types.+fireHose :: MonadIO m => Int -- ^ Port+                      -> Int -- ^ Buffer size for the fire hose threads+                      -> IO (Conduit LogstashMessage m LogstashMessage)+fireHose port buffersize = firehoseConduit port buffersize getFilter serialize+    where+        serialize = (<> fromByteString "\n") . fromLazyByteString . encode+        getFilter r = case pathInfo r of+                          [p] -> let set = HS.fromList $ T.splitOn "," p+                                 in  flip HS.member set . logstashType+                          _ -> error "invalid url"+
hslogstash.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                hslogstash-version:             0.3.5+version:             0.3.6 synopsis:            A library to work with, or as, a logstash server description:         This library contains a few modules that let you work with Logstash messages, read them from a Redis list, store them in or get them from Elasticsearch, and more. homepage:            https://github.com/bartavelle/hslogstash@@ -21,9 +21,9 @@   library-  exposed-modules:     Logstash.Message, Logstash.IO, Data.Conduit.Redis, Data.Conduit.ElasticSearch, Data.Conduit.Logstash, Data.Conduit.Network.Retry, Data.Conduit.Branching, Data.Conduit.Misc, Logstash.Counter+  exposed-modules:     Logstash.Message, Logstash.IO, Data.Conduit.Redis, Data.Conduit.ElasticSearch, Data.Conduit.Logstash, Data.Conduit.Network.Retry, Data.Conduit.Branching, Data.Conduit.Misc, Logstash.Counter, Data.Conduit.FireHose   default-extensions:  OverloadedStrings, BangPatterns-  build-depends:       base >=4.6 && <4.7, conduit >=1.0.9 && <1.1, bytestring >=0.10 && <0.11, transformers >=0.3 && <0.4, aeson >=0.6 && <0.7, parallel-io >=0.3 && <0.4, text >=0.11 && <1.1, network >=2.4 && <2.5, network-conduit >=1.0 && <1.1, iconv >=0.4 && <0.5, http-conduit >=1.9 && <1.10, time >=1.4 && <1.5, text-format >=0.3 && <0.4, http-types >=0.8 && <0.9, unordered-containers >=0.2 && <0.3, vector >=0.10 && <0.11, containers >=0.5 && <0.6, stm-chans >=3.0 && <3.1, stm-conduit >=2.1 && <2.2, hedis >=0.6 && <0.7, stm >=2.4 && <2.5, attoparsec >=0.10 && <0.11, lens >= 3.9 && < 4, lens-aeson >= 0.1 && < 0.2+  build-depends:       base >=4.6 && <4.7, conduit >=1.0.9 && <1.1, bytestring >=0.10 && <0.11, transformers >=0.3 && <0.4, aeson >=0.6 && <0.7, parallel-io >=0.3 && <0.4, text >=0.11 && <1.1, network >=2.4 && <2.5, network-conduit >=1.0 && <1.1, iconv >=0.4 && <0.5, http-conduit >= 2.0 && < 2.1, time >=1.4 && <1.5, text-format >=0.3 && <0.4, http-types >=0.8 && <0.9, unordered-containers >=0.2 && <0.3, vector >=0.10 && <0.11, containers >=0.5 && <0.6, stm-chans >=3.0 && <3.1, stm-conduit >=2.1 && <2.2, hedis >=0.6 && <0.7, stm >=2.4 && <2.5, attoparsec >=0.10 && <0.11, lens >= 3.9 && < 4, lens-aeson >= 0.1 && < 0.2, data-default, stm-firehose >= 0.1.1 && < 0.2, wai >= 2.0 && < 2.1, blaze-builder == 0.3.*   default-language:    Haskell2010   ghc-options:         -Wall