34 lines
701 B
Haskell
34 lines
701 B
Haskell
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
|
|
|
module Network.Mail.Mime.Instances
|
|
(
|
|
) where
|
|
|
|
import ClassyPrelude
|
|
import Network.Mail.Mime
|
|
import Data.Hashable (Hashable)
|
|
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
|
|
import Utils.PathPiece
|
|
|
|
import Utils (assertM)
|
|
|
|
|
|
deriving instance Read Address
|
|
deriving instance Ord Address
|
|
deriving instance Generic Address
|
|
|
|
instance Hashable Address
|
|
|
|
deriveToJSON defaultOptions
|
|
{ fieldLabelModifier = intercalate "-" . map toLower . drop 1 . splitCamel
|
|
} ''Address
|
|
|
|
instance FromJSON Address where
|
|
parseJSON = withObject "Address" $ \obj -> do
|
|
addressName <- assertM (not . null) <$> (obj .:? "name")
|
|
addressEmail <- obj .: "email"
|
|
return Address{..}
|