{-# LANGUAGE TemplateHaskell #-}

{-|
Module: AWSLambda.Events.MessageAttribute
Description: Types for SQS and SNS message attributes
-}
module AWSLambda.Events.MessageAttribute where

import           Control.Lens             (makeLenses)
import           Data.Aeson.Casing        (aesonPrefix, pascalCase)
import           Data.Aeson.TH            (deriveFromJSON)
import           Data.Text                (Text)

data MessageAttribute = MessageAttribute
  { MessageAttribute -> Text
_maType  :: !Text
  , MessageAttribute -> Text
_maValue :: !Text
  } deriving (MessageAttribute -> MessageAttribute -> Bool
(MessageAttribute -> MessageAttribute -> Bool)
-> (MessageAttribute -> MessageAttribute -> Bool)
-> Eq MessageAttribute
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageAttribute -> MessageAttribute -> Bool
$c/= :: MessageAttribute -> MessageAttribute -> Bool
== :: MessageAttribute -> MessageAttribute -> Bool
$c== :: MessageAttribute -> MessageAttribute -> Bool
Eq, Int -> MessageAttribute -> ShowS
[MessageAttribute] -> ShowS
MessageAttribute -> String
(Int -> MessageAttribute -> ShowS)
-> (MessageAttribute -> String)
-> ([MessageAttribute] -> ShowS)
-> Show MessageAttribute
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageAttribute] -> ShowS
$cshowList :: [MessageAttribute] -> ShowS
show :: MessageAttribute -> String
$cshow :: MessageAttribute -> String
showsPrec :: Int -> MessageAttribute -> ShowS
$cshowsPrec :: Int -> MessageAttribute -> ShowS
Show)

$(deriveFromJSON (aesonPrefix pascalCase) ''MessageAttribute)
$(makeLenses ''MessageAttribute)