X-Git-Url: http://www.average.org/gitweb/?p=pdns-pipe-nmc.git;a=blobdiff_plain;f=pdns-pipe-nmc.hs;h=d9ced8f3318629029611f1f5aff08e998dfebb73;hp=3b5ddf671dff351b6d3f9643ccaccf73614640ea;hb=f0b5926d1268770bbcbcb8af7036238ae066d400;hpb=0e8f5d8b8144d5fa8e79c1d46e1100ea36556cf9 diff --git a/pdns-pipe-nmc.hs b/pdns-pipe-nmc.hs index 3b5ddf6..d9ced8f 100644 --- a/pdns-pipe-nmc.hs +++ b/pdns-pipe-nmc.hs @@ -45,17 +45,17 @@ qRsp rsp = 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 @@ -63,10 +63,9 @@ 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"