module Ideas.Service.Request where
import Data.Char
import Ideas.Common.Library hiding (exerciseId)
data Request = Request
{ service :: String
, exerciseId :: Maybe Id
, source :: Maybe String
, dataformat :: DataFormat
, encoding :: Maybe Encoding
}
data DataFormat = XML | JSON
deriving Show
data Encoding = OpenMath | StringEncoding | HTMLEncoding
deriving (Show, Eq)
discoverDataFormat :: Monad m => String -> m DataFormat
discoverDataFormat xs =
case dropWhile isSpace xs of
'<':_ -> return XML
'{':_ -> return JSON
_ -> fail "Unknown data format"
readEncoding :: Monad m => String -> m Encoding
readEncoding xs =
case map toLower xs of
"openmath" -> return OpenMath
"string" -> return StringEncoding
"html" -> return HTMLEncoding
_ -> fail $ "Invalid encoding: " ++ xs