module Evalso.Cruncher.Request (Request (..)) where
import Control.Applicative
import Control.Lens
import Control.Monad (mzero)
import Data.Aeson
import Data.Map (Map)
import qualified Data.Text as T
data Request = Request {
language :: String
, code :: T.Text
, inputFiles :: Maybe (Map String T.Text)
, compileOnly :: Bool
, stdin :: Maybe T.Text
} deriving (Eq, Show)
makeLenses ''Request
instance FromJSON Request where
parseJSON (Object v) = Request <$>
v .: "language"
<*> v .: "code"
<*> v .:? "inputFiles"
<*> v .:? "compilationOnly" .!= False
<*> v .:? "stdin"
parseJSON _ = mzero