From ba983ccec3e2de05f7568e87929085d56e7613ea Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Tue, 5 Jun 2012 13:07:17 -0700 Subject: [PATCH] Implement RPC commands nickname_info and nickname_set. --- src/RPCServer.cpp | 75 +++++++++++++++++++++++++++++++++++++++++++++++ src/RPCServer.h | 2 ++ src/main.cpp | 2 ++ 3 files changed, 79 insertions(+) diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp index 1460767f1b..56194b20dd 100644 --- a/src/RPCServer.cpp +++ b/src/RPCServer.cpp @@ -22,6 +22,7 @@ #include "Conversion.h" #include "NewcoinAddress.h" #include "AccountState.h" +#include "NicknameState.h" #include "utils.h" #define VALIDATORS_FETCH_SECONDS 30 @@ -826,6 +827,78 @@ Json::Value RPCServer::doCreditSet(Json::Value& params) } } +// nickname_info +Json::Value RPCServer::doNicknameInfo(Json::Value& params) +{ + uint256 uLedger; + + if (params.size() != 1) + { + return JSONRPCError(400, "invalid params"); + } + + std::string strNickname = params[0u].asString(); + boost::trim(strNickname); + + if (strNickname.empty()) + { + return JSONRPCError(400, "invalid nickname (zero length)"); + } + else if (!mNetOps->available()) + { + return JSONRPCError(503, "network not available"); + } + else if ((uLedger = mNetOps->getCurrentLedger()).isZero()) + { + return JSONRPCError(503, "no current ledger"); + } + + NicknameState::pointer nsSrc = mNetOps->getNicknameState(uLedger, strNickname); + if (!nsSrc) + { + return JSONRPCError(500, "nickname does not exist"); + } + + Json::Value ret(Json::objectValue); + + ret["nickname"] = strNickname; + + nsSrc->addJson(ret); + + return ret; +} + +// nickname_set [] [] +Json::Value RPCServer::doNicknameSet(Json::Value& params) +{ + uint256 uLedger; + + if (params.size() < 2 || params.size() > 3) + { + return JSONRPCError(400, "invalid params"); + } + + std::string strNickname = params[2u].asString(); + boost::trim(strNickname); + + if (strNickname.empty()) + { + return JSONRPCError(400, "invalid nickname (zero length)"); + } + else if (!mNetOps->available()) + { + return JSONRPCError(503, "network not available"); + } + else if ((uLedger = mNetOps->getCurrentLedger()).isZero()) + { + return JSONRPCError(503, "no current ledger"); + } + + NicknameState::pointer nsSrc = mNetOps->getNicknameState(uLedger, strNickname); + + return "not implemented"; +} + // password_fund [] // YYY Make making account default to first account for seed. Json::Value RPCServer::doPasswordFund(Json::Value ¶ms) @@ -1867,6 +1940,8 @@ Json::Value RPCServer::doCommand(const std::string& command, Json::Value& params if (command == "account_wallet_set") return doAccountWalletSet(params); if (command == "connect") return doConnect(params); if (command == "credit_set") return doCreditSet(params); + if (command == "nickname_info") return doNicknameInfo(params); + if (command == "nickname_set") return doNicknameSet(params); if (command == "password_fund") return doPasswordFund(params); if (command == "password_set") return doPasswordSet(params); if (command == "peers") return doPeers(params); diff --git a/src/RPCServer.h b/src/RPCServer.h index 0a2acc8443..a8358235c3 100644 --- a/src/RPCServer.h +++ b/src/RPCServer.h @@ -56,6 +56,8 @@ private: Json::Value doConnect(Json::Value& params); Json::Value doCreditSet(Json::Value& params); Json::Value doLedger(Json::Value& params); + Json::Value doNicknameInfo(Json::Value& params); + Json::Value doNicknameSet(Json::Value& params); Json::Value doPasswordFund(Json::Value& params); Json::Value doPasswordSet(Json::Value& params); Json::Value doPeers(Json::Value& params); diff --git a/src/main.cpp b/src/main.cpp index 3e05f8be9e..caa32cb01b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,6 +46,8 @@ void printHelp(const po::options_description& desc) cout << " connect []" << endl; cout << " credit_set []" << endl; cout << " ledger" << endl; + cout << " nickname_info " << endl; + cout << " nickname_set [] []" << endl; cout << " password_fund []" << endl; cout << " password_set []" << endl; cout << " peers" << endl;