Browse Source

RPC: Pass on JSONRPCRequest metadata (URI/user/etc) for "help" method

0.15
Luke Dashjr 8 years ago
parent
commit
ad1573472e
  1. 11
      src/rpc/server.cpp
  2. 2
      src/rpc/server.h

11
src/rpc/server.cpp

@ -178,7 +178,7 @@ vector<unsigned char> ParseHexO(const UniValue& o, string strKey) @@ -178,7 +178,7 @@ vector<unsigned char> ParseHexO(const UniValue& o, string strKey)
* Note: This interface may still be subject to change.
*/
std::string CRPCTable::help(const std::string& strCommand) const
std::string CRPCTable::help(const std::string& strCommand, const JSONRPCRequest& helpreq) const
{
string strRet;
string category;
@ -189,6 +189,10 @@ std::string CRPCTable::help(const std::string& strCommand) const @@ -189,6 +189,10 @@ std::string CRPCTable::help(const std::string& strCommand) const
vCommands.push_back(make_pair(mi->second->category + mi->first, mi->second));
sort(vCommands.begin(), vCommands.end());
JSONRPCRequest jreq(helpreq);
jreq.fHelp = true;
jreq.params = UniValue();
BOOST_FOREACH(const PAIRTYPE(string, const CRPCCommand*)& command, vCommands)
{
const CRPCCommand *pcmd = command.second;
@ -198,10 +202,9 @@ std::string CRPCTable::help(const std::string& strCommand) const @@ -198,10 +202,9 @@ std::string CRPCTable::help(const std::string& strCommand) const
continue;
if ((strCommand != "" || pcmd->category == "hidden") && strMethod != strCommand)
continue;
jreq.strMethod = strMethod;
try
{
JSONRPCRequest jreq;
jreq.fHelp = true;
rpcfn_type pfn = pcmd->actor;
if (setDone.insert(pfn).second)
(*pfn)(jreq);
@ -250,7 +253,7 @@ UniValue help(const JSONRPCRequest& jsonRequest) @@ -250,7 +253,7 @@ UniValue help(const JSONRPCRequest& jsonRequest)
if (jsonRequest.params.size() > 0)
strCommand = jsonRequest.params[0].get_str();
return tableRPC.help(strCommand);
return tableRPC.help(strCommand, jsonRequest);
}

2
src/rpc/server.h

@ -154,7 +154,7 @@ private: @@ -154,7 +154,7 @@ private:
public:
CRPCTable();
const CRPCCommand* operator[](const std::string& name) const;
std::string help(const std::string& name) const;
std::string help(const std::string& name, const JSONRPCRequest& helpreq) const;
/**
* Execute a method.

Loading…
Cancel
Save