antiope-sns 6.3.0 → 6.4.0
raw patch · 2 files changed
+40/−2 lines, 2 filesdep +timenew-uploaderPVP ok
version bump matches the API change (PVP)
Dependencies added: time
API changes (from Hackage documentation)
+ Antiope.SNS.Messages: SnsMessage :: !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe UTCTime -> !a -> SnsMessage a
+ Antiope.SNS.Messages: [messageId] :: SnsMessage a -> !Maybe Text
+ Antiope.SNS.Messages: [message] :: SnsMessage a -> !a
+ Antiope.SNS.Messages: [subject] :: SnsMessage a -> !Maybe Text
+ Antiope.SNS.Messages: [timestamp] :: SnsMessage a -> !Maybe UTCTime
+ Antiope.SNS.Messages: [topicArn] :: SnsMessage a -> !Maybe Text
+ Antiope.SNS.Messages: [type'] :: SnsMessage a -> !Maybe Text
+ Antiope.SNS.Messages: data SnsMessage a
+ Antiope.SNS.Messages: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Antiope.SNS.Messages.SnsMessage a)
+ Antiope.SNS.Messages: instance GHC.Classes.Eq a => GHC.Classes.Eq (Antiope.SNS.Messages.SnsMessage a)
+ Antiope.SNS.Messages: instance GHC.Generics.Generic (Antiope.SNS.Messages.SnsMessage a)
+ Antiope.SNS.Messages: instance GHC.Show.Show a => GHC.Show.Show (Antiope.SNS.Messages.SnsMessage a)
Files
- antiope-sns.cabal +5/−2
- src/Antiope/SNS/Messages.hs +35/−0
antiope-sns.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 82f8cb738c436e835125d6d461d17d61744a722f0d2625b158dfb193b08b1401+-- hash: 50973aabaaad2ab917399cc0b8a236e46ccbb43b8534ed215c3cbcdae8fa42f6 name: antiope-sns-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@@ -29,6 +29,7 @@ library exposed-modules: Antiope.SNS+ Antiope.SNS.Messages Antiope.SNS.Types other-modules: Paths_antiope_sns@@ -45,6 +46,7 @@ , generic-lens , lens , text+ , time , unliftio-core default-language: Haskell2010 @@ -67,5 +69,6 @@ , generic-lens , lens , text+ , time , unliftio-core default-language: Haskell2010
+ src/Antiope/SNS/Messages.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DeriveGeneric #-}++module Antiope.SNS.Messages+ ( SnsMessage (..)+ ) where++import Data.Aeson as Aeson+import Data.Text (Text)+import Data.Time.Clock (UTCTime)+import GHC.Generics (Generic)++import qualified Data.Aeson.Types as Aeson+import qualified Data.Text.Encoding as T++data SnsMessage a = SnsMessage+ { type' :: !(Maybe Text)+ , messageId :: !(Maybe Text)+ , topicArn :: !(Maybe Text)+ , subject :: !(Maybe Text)+ , timestamp :: !(Maybe UTCTime)+ , message :: !a+ } deriving (Show, Eq, Generic)++instance FromJSON a => FromJSON (SnsMessage a) where+ parseJSON = withObject "SnsMessage" $ \obj -> SnsMessage+ <$> obj .:? "Type"+ <*> obj .:? "MessageId"+ <*> obj .:? "TopicArn"+ <*> obj .:? "Subject"+ <*> obj .:? "Timestamp"+ <*> decodeEscaped obj "Message"++decodeEscaped :: FromJSON b => Object -> Text -> Aeson.Parser b+decodeEscaped o t =+ (o .: t) >>= (either fail pure . eitherDecodeStrict . T.encodeUtf8)