module GitHub.Types.Base where
import Control.Applicative
import Control.Monad
import Data.Aeson hiding (Error, Success)
import Data.Text
data Repository = Repository
{ repositoryOwnerName :: Text
, repositoryName :: Text
} deriving (Eq, Show)
instance FromJSON Repository where
parseJSON (Object x) = Repository
<$> (x .: "owner" >>= (.: "login"))
<*> x .: "name"
parseJSON _ = mzero
data State = Pending | Success | Failure | Error
deriving (Eq, Show)
instance FromJSON State where
parseJSON (String "pending") = return Pending
parseJSON (String "success") = return Success
parseJSON (String "failure") = return Failure
parseJSON (String "error") = return Error
parseJSON _ = mzero
instance ToJSON State where
toJSON Pending = String "pending"
toJSON Success = String "success"
toJSON Failure = String "failure"
toJSON Error = String "error"