packages feed

asif 5.0.2 → 6.0.0

raw patch · 5 files changed

+76/−77 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Arbor.File.Format.Asif.Format.Decoder: getBool :: Get Bool
- Arbor.File.Format.Asif.Format.Decoder: getIpv4 :: Get IpAddress
- Arbor.File.Format.Asif.Format.Decoder: getIpv4Block :: Get (IpBlock Canonical)
- Arbor.File.Format.Asif.Format.Decoder: getIpv6 :: Get IpAddress
- Arbor.File.Format.Asif.Format.Decoder: getIpv6Block :: Get (IpBlock Canonical)
- Arbor.File.Format.Asif.Format.Decoder: getTimeMicros :: Get UTCTime
- Arbor.File.Format.Asif.Format.Decoder: getTimeMillis :: Get UTCTime
- Arbor.File.Format.Asif.Format.Decoder: getWord32x4 :: Get (Word32, Word32, Word32, Word32)
+ Arbor.File.Format.Asif.Get: getBool :: Get Bool
+ Arbor.File.Format.Asif.Get: getIpv4 :: Get IpAddress
+ Arbor.File.Format.Asif.Get: getIpv4Block :: Get (IpBlock Canonical)
+ Arbor.File.Format.Asif.Get: getIpv6 :: Get IpAddress
+ Arbor.File.Format.Asif.Get: getIpv6Block :: Get (IpBlock Canonical)
+ Arbor.File.Format.Asif.Get: getNullTerminatedString :: Get ByteString
+ Arbor.File.Format.Asif.Get: getTimeMicros :: Get UTCTime
+ Arbor.File.Format.Asif.Get: getTimeMillis :: Get UTCTime
+ Arbor.File.Format.Asif.Get: getWord32x4 :: Get (Word32, Word32, Word32, Word32)

Files

app/App/Dump.hs view
@@ -9,29 +9,29 @@   ) where  import Arbor.File.Format.Asif.Data.Ip-import Arbor.File.Format.Asif.Format.Decoder as D import Arbor.File.Format.Asif.Segment import Arbor.File.Format.Asif.Whatever import Control.Lens import Control.Monad-import Control.Monad.IO.Class                (liftIO)-import Control.Monad.Trans.Resource          (MonadResource)-import Data.Char                             (isPrint)+import Control.Monad.IO.Class          (liftIO)+import Control.Monad.Trans.Resource    (MonadResource)+import Data.Char                       (isPrint) import Data.Generics.Product.Any import Data.List-import Data.Monoid                           ((<>))-import Data.Text                             (Text)-import Data.Thyme.Format                     (formatTime)+import Data.Monoid                     ((<>))+import Data.Text                       (Text)+import Data.Thyme.Format               (formatTime) import Data.Thyme.Time.Core import Data.Word import HaskellWorks.Data.Bits.BitShow import HaskellWorks.Data.Bits.BitWise-import Numeric                               (showHex)-import System.IO                             (Handle)-import System.Locale                         (defaultTimeLocale, iso8601DateFormat)+import Numeric                         (showHex)+import System.IO                       (Handle)+import System.Locale                   (defaultTimeLocale, iso8601DateFormat)  import qualified Arbor.File.Format.Asif.ByteString.Lazy as LBS import qualified Arbor.File.Format.Asif.Format          as F+import qualified Arbor.File.Format.Asif.Get             as D import qualified Data.Binary                            as G import qualified Data.Binary.Get                        as G import qualified Data.Bits                              as B
asif.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.2 name:           asif-version:        5.0.2+version:        6.0.0 description:    Library for creating and querying segmented feeds. Please see <https://github.com/arbor/asif#readme> synopsis:       Library for creating and querying segmented feeds category:       Services@@ -71,7 +71,6 @@     Arbor.File.Format.Asif.Type     Arbor.File.Format.Asif.Whatever     Arbor.File.Format.Asif.Write-    Arbor.File.Format.Asif.Format.Decoder   other-modules:     Arbor.File.Format.Asif.Format.SegmentValue     Arbor.File.Format.Asif.Format.Type
− src/Arbor/File/Format/Asif/Format/Decoder.hs
@@ -1,48 +0,0 @@-module Arbor.File.Format.Asif.Format.Decoder where--import Arbor.File.Format.Asif.Data.Ip-import Control.Lens-import Data.Thyme.Time.Core-import Data.Word                             (Word32)-import HaskellWorks.Data.Network.Ip.Validity (Canonical)--import qualified Data.Binary.Get                   as G-import qualified HaskellWorks.Data.Network.Ip.Ipv4 as IP4-import qualified HaskellWorks.Data.Network.Ip.Ipv6 as IP6--getWord32x4 :: G.Get (Word32, Word32, Word32, Word32)-getWord32x4 = do-  a <- G.getWord32be-  b <- G.getWord32be-  c <- G.getWord32be-  d <- G.getWord32be-  return (a, b, c, d)--getBool :: G.Get Bool-getBool = G.getWord8 <&> (/= 0)--getIpv4 :: G.Get IP4.IpAddress-getIpv4 = G.getWord32le <&> word32ToIpv4--getIpv6 :: G.Get IP6.IpAddress-getIpv6 = getWord32x4 <&> word32x4ToIpv6--getIpv4Block :: G.Get (IP4.IpBlock Canonical)-getIpv4Block =-  let toIpBlock w32 w8 = IP4.IpBlock (IP4.IpAddress w32) (IP4.IpNetMask w8)-  in toIpBlock <$> G.getWord32le <*> G.getWord8--getIpv6Block :: G.Get (IP6.IpBlock Canonical)-getIpv6Block =-  let toIpBlock w128 w8 = IP6.IpBlock (IP6.IpAddress w128) (IP6.IpNetMask w8)-  in toIpBlock <$> getWord32x4 <*> G.getWord8--getTimeMillis :: G.Get UTCTime-getTimeMillis =-  let toTime ms = (ms * 1000) ^. from microseconds & posixSecondsToUTCTime-  in G.getInt64le <&> toTime--getTimeMicros :: G.Get UTCTime-getTimeMicros =-  let toTime ms = ms ^. from microseconds & posixSecondsToUTCTime-  in G.getInt64le <&> toTime
src/Arbor/File/Format/Asif/Format/SegmentValue.hs view
@@ -6,27 +6,28 @@ module Arbor.File.Format.Asif.Format.SegmentValue where +import Arbor.File.Format.Asif.List           as L+import Arbor.File.Format.Asif.Segment+import Arbor.File.Format.Asif.Whatever+import Control.Lens+import Data.Generics.Product.Any+import Data.Int+import Data.Semigroup                        ((<>))+import Data.Thyme.Time.Core+import Data.Word+import GHC.Generics                          (Generic)+import HaskellWorks.Data.Network.Ip.Validity+ import qualified Arbor.File.Format.Asif.ByteString.Lazy as LBS-import           Arbor.File.Format.Asif.Format.Decoder  as D import qualified Arbor.File.Format.Asif.Format.Type     as F-import           Arbor.File.Format.Asif.List            as L-import           Arbor.File.Format.Asif.Segment-import           Arbor.File.Format.Asif.Whatever-import           Control.Lens+import qualified Arbor.File.Format.Asif.Get             as D import qualified Data.Binary                            as G import qualified Data.Binary.Get                        as G import qualified Data.ByteString.Lazy                   as LBS import qualified Data.ByteString.Lazy.Char8             as LBSC-import           Data.Generics.Product.Any-import           Data.Int-import           Data.Semigroup                         ((<>)) import qualified Data.Text                              as T-import           Data.Thyme.Time.Core-import           Data.Word-import           GHC.Generics                           (Generic) import qualified HaskellWorks.Data.Network.Ip.Ipv4      as IP4 import qualified HaskellWorks.Data.Network.Ip.Ipv6      as IP6-import           HaskellWorks.Data.Network.Ip.Validity  data SegmentValue   = SString LBS.ByteString
src/Arbor/File/Format/Asif/Get.hs view
@@ -1,6 +1,7 @@ module Arbor.File.Format.Asif.Get where  import Arbor.File.Format.Asif.ByteString.Builder+import Arbor.File.Format.Asif.Data.Ip            (word32ToIpv4, word32x4ToIpv6) import Control.Lens import Control.Monad import Data.Binary.Get@@ -8,12 +9,17 @@ import Data.Text                                 (Text) import Data.Thyme.Clock                          (microseconds) import Data.Thyme.Clock.POSIX                    (POSIXTime)+import Data.Thyme.Time.Core                      (UTCTime, posixSecondsToUTCTime)+import Data.Word                                 (Word32)+import HaskellWorks.Data.Network.Ip.Validity     (Canonical) -import qualified Data.Attoparsec.ByteString as AP-import qualified Data.ByteString            as BS-import qualified Data.ByteString.Lazy       as LBS-import qualified Data.ByteString.Lazy.Char8 as LC8-import qualified Data.Text.Encoding         as T+import qualified Data.Attoparsec.ByteString        as AP+import qualified Data.ByteString                   as BS+import qualified Data.ByteString.Lazy              as LBS+import qualified Data.ByteString.Lazy.Char8        as LC8+import qualified Data.Text.Encoding                as T+import qualified HaskellWorks.Data.Network.Ip.Ipv4 as IP4+import qualified HaskellWorks.Data.Network.Ip.Ipv6 as IP6  getMagic :: AP.Parser BS.ByteString -> Get () getMagic magicParser = do@@ -43,5 +49,46 @@ getTimeMicro64 :: Get POSIXTime getTimeMicro64 = (^. from microseconds) <$> getInt64le +getTimeMillis :: Get UTCTime+getTimeMillis =+  let toTime ms = (ms * 1000) ^. from microseconds & posixSecondsToUTCTime+  in getInt64le <&> toTime++getTimeMicros :: Get UTCTime+getTimeMicros =+  let toTime ms = ms ^. from microseconds & posixSecondsToUTCTime+  in getInt64le <&> toTime++getWord32x4 :: Get (Word32, Word32, Word32, Word32)+getWord32x4 = do+  a <- getWord32be+  b <- getWord32be+  c <- getWord32be+  d <- getWord32be+  return (a, b, c, d)++getBool :: Get Bool+getBool = getWord8 <&> (/= 0)++getIpv4 :: Get IP4.IpAddress+getIpv4 = getWord32le <&> word32ToIpv4++getIpv6 :: Get IP6.IpAddress+getIpv6 = getWord32x4 <&> word32x4ToIpv6++getIpv4Block :: Get (IP4.IpBlock Canonical)+getIpv4Block =+  let toIpBlock w32 w8 = IP4.IpBlock (IP4.IpAddress w32) (IP4.IpNetMask w8)+  in toIpBlock <$> getWord32le <*> getWord8++getIpv6Block :: Get (IP6.IpBlock Canonical)+getIpv6Block =+  let toIpBlock w128 w8 = IP6.IpBlock (IP6.IpAddress w128) (IP6.IpNetMask w8)+  in toIpBlock <$> getWord32x4 <*> getWord8+ getTextUtf8Z :: Get Text getTextUtf8Z = T.decodeUtf8 . LBS.toStrict <$> getLazyByteStringNul++getNullTerminatedString :: Get LBS.ByteString+getNullTerminatedString = getLazyByteStringNul+