module Evalso.Cruncher.FinalResult (FinalResult (..)) where
import Evalso.Cruncher.SandboxResult
import Control.Lens hiding ((.=))
import Data.Aeson
data FinalResult
= FinalResult
{
compile :: Maybe SandboxResult
, run :: Maybe SandboxResult
}
| NoSuchLanguage
| SELinuxNotEnforcing
deriving (Eq, Show)
makeLenses ''FinalResult
instance ToJSON FinalResult where
toJSON (FinalResult compile' run') = object
[
"compile" .= compile'
, "run" .= run'
]
toJSON (NoSuchLanguage) = object ["error" .= noSuchLanguageError]
where
noSuchLanguageError :: String
noSuchLanguageError = "We do not currently support that language"
toJSON (SELinuxNotEnforcing) = object ["error" .= selinuxError]
where
selinuxError :: String
selinuxError = "Internal security error - halting request"