{-# LANGUAGE OverloadedStrings #-} module Fedora.Copr.CoprBuild ( CoprBuild (..) , CoprBuildResponse (..)) where import Control.Applicative import Control.Monad (mzero) import Data.Aeson import qualified Data.List.NonEmpty as NEL import qualified Data.Text as T data CoprBuildResponse = CoprBuildResponse { output :: String , buildId :: Maybe Int , message :: Maybe String , error :: Maybe String } deriving (Eq, Show) instance FromJSON CoprBuildResponse where parseJSON (Object v) = CoprBuildResponse <$> v .: "output" <*> v .:? "id" <*> v .:? "message" <*> v .:? "error" parseJSON _ = mzero data CoprBuild = CoprBuild { packages :: NEL.NonEmpty T.Text , memory :: Int , timeout :: Int } deriving (Eq, Show) instance ToJSON CoprBuild where toJSON (CoprBuild p m t) = object [ "pkgs" .= T.intercalate " " (NEL.toList p) , "memory" .= m , "timeout" .= t ]