Add few helper methods to xmlrpc objects.

This commit is contained in:
Matthieu Gautier 2018-10-16 17:30:51 +02:00
parent 18fc5cb4df
commit be6dc01b4f
2 changed files with 16 additions and 4 deletions

View File

@ -101,7 +101,7 @@ std::string Aria2::doRequest(const MethodCall& methodCall)
std::string Aria2::addUri(const std::vector<std::string>& uris) std::string Aria2::addUri(const std::vector<std::string>& uris)
{ {
MethodCall methodCall("aria2.addUri", m_secret); MethodCall methodCall("aria2.addUri", m_secret);
auto uriParams = methodCall.getParams().addParam().getValue().getArray(); auto uriParams = methodCall.newParamValue().getArray();
for (auto& uri : uris) { for (auto& uri : uris) {
uriParams.addValue().set(uri); uriParams.addValue().set(uri);
} }
@ -118,9 +118,9 @@ std::string Aria2::addUri(const std::vector<std::string>& uris)
std::string Aria2::tellStatus(const std::string& gid, const std::vector<std::string>& statusKey) std::string Aria2::tellStatus(const std::string& gid, const std::vector<std::string>& statusKey)
{ {
MethodCall methodCall("aria2.tellStatus", m_secret); MethodCall methodCall("aria2.tellStatus", m_secret);
methodCall.getParams().addParam().getValue().set(gid); methodCall.newParamValue().set(gid);
if (!statusKey.empty()) { if (!statusKey.empty()) {
auto statusArray = methodCall.getParams().addParam().getValue().getArray(); auto statusArray = methodCall.newParamValue().getArray();
for (auto& key : statusKey) { for (auto& key : statusKey) {
statusArray.addValue().set(key); statusArray.addValue().set(key);
} }

View File

@ -215,6 +215,10 @@ class MethodCall {
return Params(m_doc.child("methodCall").child("params")); return Params(m_doc.child("methodCall").child("params"));
} }
Value newParamValue() {
return getParams().addParam().getValue();
}
std::string toString() const { std::string toString() const {
return nodeToString(m_doc); return nodeToString(m_doc);
} }
@ -236,11 +240,19 @@ class MethodResponse {
return Params(params); return Params(params);
} }
Value getParamValue(int index) const {
return getParams().getParam(index).getValue();
}
bool isFault() const {
return (!!m_doc.child("methodResponse").child("fault"));
}
Fault getFault() const { Fault getFault() const {
auto fault = m_doc.child("methodResponse").child("fault"); auto fault = m_doc.child("methodResponse").child("fault");
if (!fault) if (!fault)
throw InvalidRPCNode("No fault"); throw InvalidRPCNode("No fault");
return Fault(fault); return Fault(fault.child("value").child("struct"));
} }
}; };