module Evalso.Cruncher.SandboxResult (SandboxResult (..)) where
import Control.Applicative
import Control.Lens hiding ((.=))
import Control.Monad (mzero)
import Data.Aeson
import Data.Map (Map)
import Data.Text (Text)
data SandboxResult = SandboxResult {
stdout :: Text
, stderr :: Text
, wallTime :: Int
, exitCode :: Int
, outputFiles :: Map String Text
} deriving (Eq, Show)
makeLenses ''SandboxResult
instance ToJSON SandboxResult where
toJSON (SandboxResult stdout' stderr' wallTime' exitCode' outputFiles') = object
[
"stdout" .= stdout'
, "stderr" .= stderr'
, "wallTime" .= wallTime'
, "exitCode" .= exitCode'
, "outputFiles" .= outputFiles'
]
instance FromJSON SandboxResult where
parseJSON (Object v) = SandboxResult <$>
v .: "stdout"
<*> v .: "stderr"
<*> v .: "wallTime"
<*> v .: "exitCode"
<*> v .: "outputFiles"
parseJSON _ = mzero