packages feed

antiope-s3 6.3.0 → 6.4.0

raw patch · 2 files changed

+77/−19 lines, 2 filesdep +aesondep +timenew-uploaderPVP ok

version bump matches the API change (PVP)

Dependencies added: aeson, time

API changes (from Hackage documentation)

+ Antiope.S3.Messages: EventName :: !Text -> !Text -> EventName
+ Antiope.S3.Messages: S3Message :: !Maybe UTCTime -> !EventName -> !BucketName -> !ObjectKey -> !Int64 -> !Maybe ETag -> S3Message
+ Antiope.S3.Messages: [action] :: EventName -> !Text
+ Antiope.S3.Messages: [bucket] :: S3Message -> !BucketName
+ Antiope.S3.Messages: [etag] :: S3Message -> !Maybe ETag
+ Antiope.S3.Messages: [eventName] :: S3Message -> !EventName
+ Antiope.S3.Messages: [eventTime] :: S3Message -> !Maybe UTCTime
+ Antiope.S3.Messages: [eventType] :: EventName -> !Text
+ Antiope.S3.Messages: [key] :: S3Message -> !ObjectKey
+ Antiope.S3.Messages: [size] :: S3Message -> !Int64
+ Antiope.S3.Messages: data EventName
+ Antiope.S3.Messages: data S3Message
+ Antiope.S3.Messages: instance Data.Aeson.Types.FromJSON.FromJSON Antiope.S3.Messages.S3Message
+ Antiope.S3.Messages: instance GHC.Classes.Eq Antiope.S3.Messages.EventName
+ Antiope.S3.Messages: instance GHC.Classes.Eq Antiope.S3.Messages.S3Message
+ Antiope.S3.Messages: instance GHC.Classes.Ord Antiope.S3.Messages.EventName
+ Antiope.S3.Messages: instance GHC.Generics.Generic Antiope.S3.Messages.EventName
+ Antiope.S3.Messages: instance GHC.Generics.Generic Antiope.S3.Messages.S3Message
+ Antiope.S3.Messages: instance GHC.Show.Show Antiope.S3.Messages.EventName
+ Antiope.S3.Messages: instance GHC.Show.Show Antiope.S3.Messages.S3Message
+ Antiope.S3.Messages: readEventName :: Text -> EventName

Files

antiope-s3.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 114ac89b35e20a7f50e38154812d361792e7c7cade2c02278af6acbe429af480+-- hash: 282b5f840ecbd3afbb1ec96fe2ccd47819d4fc98e6aa726a4bf9fc86863b8da1  name:           antiope-s3-version:        6.3.0+version:        6.4.0 description:    Please see the README on Github at <https://github.com/arbor/antiope#readme> category:       Services homepage:       https://github.com/arbor/antiope#readme@@ -27,12 +27,25 @@   location: https://github.com/arbor/antiope  library+  exposed-modules:+      Antiope.S3+      Antiope.S3.GetObject+      Antiope.S3.Internal+      Antiope.S3.Lazy+      Antiope.S3.Messages+      Antiope.S3.Range+      Antiope.S3.Request+      Antiope.S3.Strict+      Antiope.S3.Types+  other-modules:+      Paths_antiope_s3   hs-source-dirs:       src   default-extensions: BangPatterns GeneralizedNewtypeDeriving OverloadedStrings TupleSections   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -msse4.2   build-depends:-      amazonka >=1.6+      aeson+    , amazonka >=1.6     , amazonka-core >=1.6     , amazonka-s3 >=1.6     , antiope-core@@ -50,29 +63,24 @@     , network-uri     , resourcet     , text+    , time     , unliftio-core-  exposed-modules:-      Antiope.S3-      Antiope.S3.GetObject-      Antiope.S3.Internal-      Antiope.S3.Lazy-      Antiope.S3.Range-      Antiope.S3.Request-      Antiope.S3.Strict-      Antiope.S3.Types-  other-modules:-      Paths_antiope_s3   default-language: Haskell2010  test-suite antiope-s3-test   type: exitcode-stdio-1.0   main-is: Spec.hs+  other-modules:+      Antiope.S3.TypesSpec+      Antiope.S3Spec+      Paths_antiope_s3   hs-source-dirs:       test   default-extensions: BangPatterns GeneralizedNewtypeDeriving OverloadedStrings TupleSections   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -msse4.2 -threaded -rtsopts -with-rtsopts=-N   build-depends:-      amazonka >=1.6+      aeson+    , amazonka >=1.6     , amazonka-core >=1.6     , amazonka-s3 >=1.6     , antiope-core@@ -94,9 +102,6 @@     , network-uri     , resourcet     , text+    , time     , unliftio-core-  other-modules:-      Antiope.S3.TypesSpec-      Antiope.S3Spec-      Paths_antiope_s3   default-language: Haskell2010
+ src/Antiope/S3/Messages.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE DeriveGeneric #-}++module Antiope.S3.Messages+  ( EventName(..)+  , S3Message(..)+  , readEventName+  ) where++import Antiope.S3      (BucketName (..), ETag (..), ObjectKey (..))+import Data.Aeson      as Aeson+import Data.Int        (Int64)+import Data.Text       (Text)+import Data.Time.Clock (UTCTime)+import GHC.Generics    (Generic)++import qualified Data.Text          as T+import qualified Data.Text.Encoding as T++data EventName = EventName+  { eventType :: !Text+  , action    :: !Text+  } deriving (Show, Eq, Ord, Generic)++data S3Message = S3Message+  { eventTime :: !(Maybe UTCTime)+  , eventName :: !EventName+  , bucket    :: !BucketName+  , key       :: !ObjectKey+  , size      :: !Int64+  , etag      :: !(Maybe ETag)+  } deriving (Show, Eq, Generic)++instance FromJSON S3Message where+  parseJSON = withObject "S3Message" $ \obj -> do+    eTime <- obj .:? "eventTime"+    eName <- readEventName <$> obj .: "eventName"+    s3    <- obj .: "s3"+    bkt   <- s3 .: "bucket"+    obj'  <- s3 .: "object"+    bName <- BucketName <$> (bkt .: "name")+    oKey  <- ObjectKey <$> (obj' .: "key")+    oSize <- obj' .: "size"+    oEtag  <- fmap (ETag . T.encodeUtf8) <$> (obj' .:? "eTag")+    pure $ S3Message eTime eName bName oKey oSize oEtag++readEventName :: T.Text -> EventName+readEventName evt =+  case T.splitOn ":" evt of+    [t, e]       -> EventName t e+    ["s3", t, e] -> EventName t e+    (t:e:_)      -> EventName t e+    _            -> EventName evt ""+