case parseJsonRpc (responseBody rsp) :: Either JsonRpcError NmcRes of
Left jerr ->
case (jrpcErrCode jerr) of
- -4 -> Right ""
+ -4 -> Right "{}" -- this is how non-existent entry is returned
_ -> Left $ "JsonRpc error response: " ++ (show jerr)
Right jrsp -> Right $ resValue jrsp
-- NMC interface
-queryOp :: Manager -> Config -> String -> ByteString
+queryOp :: Manager -> Config -> String -> String
-> IO (Either String ByteString)
queryOp mgr cfg qid key = do
rsp <- runResourceT $
- httpLbs (qReq cfg key (L.pack qid)) mgr
+ httpLbs (qReq cfg (L.pack key) (L.pack qid)) mgr
return $ qRsp rsp
queryNmc :: Manager -> Config -> String -> String
queryNmc mgr cfg fqdn qid = do
case reverse (splitOn "." fqdn) of
"bit":dn:xs -> do
- dom <- queryDom (queryOp mgr cfg qid) (L.pack ("d/" ++ dn))
- return $ case dom of
- Left err -> Left err
- Right dom -> Right $ descendNmc xs dom
+ dom <- mergeImport (queryOp mgr cfg qid) $
+ emptyNmcDom { domImport = Just ("d/" ++ dn)}
+ return $ Right $ descendNmcDom xs dom
_ ->
return $ Left "Only \".bit\" domain is supported"