github-tools-0.1.2: src/GitHub/Types/Base/DateTime.hs
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.DateTime where
import Control.Applicative ((<|>))
import Data.Aeson (FromJSON (..), ToJSON (..))
import Data.Text (Text)
import Data.Text.Arbitrary ()
import Test.QuickCheck.Arbitrary (Arbitrary (..))
import qualified Test.QuickCheck.Gen as Gen
------------------------------------------------------------------------------
-- DateTime
data DateTime
= DateTimeStamp Int
| DateTimeText Text
deriving (Eq, Show, Read)
instance FromJSON DateTime where
parseJSON x =
DateTimeStamp <$> parseJSON x
<|> DateTimeText <$> parseJSON x
instance ToJSON DateTime where
toJSON (DateTimeStamp x) = toJSON x
toJSON (DateTimeText x) = toJSON x
instance Arbitrary DateTime where
arbitrary = Gen.oneof
[ DateTimeStamp <$> arbitrary
, DateTimeText <$> arbitrary
]