X-Git-Url: http://www.average.org/gitweb/?p=pdns-pipe-nmc.git;a=blobdiff_plain;f=Data%2FJsonRpc.hs;h=15b1d88e99d9e447ccb650b061707458350bfc0b;hp=d8a22b3075fa4728a1a045b1f22ba9dbf3381b2b;hb=a0ac4a88c7f48dac8e4a79d1b7ac17a19057d662;hpb=1391152d2dee843493e6c7d962b55474ac92f832 diff --git a/Data/JsonRpc.hs b/Data/JsonRpc.hs index d8a22b3..15b1d88 100644 --- a/Data/JsonRpc.hs +++ b/Data/JsonRpc.hs @@ -72,4 +72,11 @@ instance FromJSON JsonRpcResponse where "" parseJsonRpc :: (FromJSON a) => ByteString -> Either JsonRpcError a -parseJsonRpc _ = Left $ JsonRpcError (-1) "someerror" Nothing +parseJsonRpc s = case (decode s :: Maybe JsonRpcResponse) of + Just (JsonRpcResponse result error id) -> + case result of + Just v -> case (fromJSON v) of + Success a -> Right a + Error s -> Left $ JsonRpcError (-32900) "Unparseable result" Nothing + Nothing -> Left error + Nothing -> Left $ JsonRpcError (-32800) "Unparseable response" Nothing