module Text.Email.Aeson.Instances where
import           Control.Monad       (mzero)
import           Data.Aeson
import qualified Data.Text.Encoding  as TS
import qualified Text.Email.Validate as TEV

instance ToJSON TEV.EmailAddress where
  toJSON = String . TS.decodeUtf8 . TEV.toByteString

instance FromJSON TEV.EmailAddress where
  parseJSON (String s) = case TEV.emailAddress (TS.encodeUtf8 s) of
    Nothing -> mzero
    Just x -> return x
  parseJSON _ = mzero