module Test.WebDriver.Types.Internal
( WDResponse(..)
) where
import Test.WebDriver.Types
import Data.Aeson
import Data.Aeson.Types
import Control.Applicative
import Data.Word
data WDResponse = WDResponse { rspSessId :: Maybe SessionId
, rspStatus :: Word8
, rspVal :: Value
}
deriving (Eq, Show)
instance FromJSON WDResponse where
parseJSON (Object o) = WDResponse <$> req "sessionId"
<*> req "status"
<*> opt "value" Null
where req = (o .:)
opt k d = o .: k .!= d
parseJSON v = typeMismatch "WDResponse" v