{-# LANGUAGE OverloadedStrings #-}
module Network.Algolia.Vault where
import Data.Aeson
import Data.Aeson.IP
import Data.IP
import Data.Text (Text)
import Data.Time
data Source = Source
{ sourceIPRange :: IPRange
, sourceDescription :: Maybe Text
}
instance ToJSON Source where
toJSON src = object $ case sourceDescription src of
Nothing -> ["source" .= sourceIPRange src ]
Just desc -> ["source" .= sourceIPRange src, "description" .= desc]
instance FromJSON Source where
parseJSON = withObject "Source" $ \o ->
Source <$>
o .: "source" <*>
o .:? "description"