From cbaf0619d912d80aab067a4cc7ca8d92f079ff72 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 13 May 2009 14:13:36 +0000 Subject: [PATCH] 2009-05-13 Tatsuhiro Tsujikawa Added addMetalink XML-RPC command. * src/XmlRpcMethodFactory.cc * src/XmlRpcMethodImpl.cc * src/XmlRpcMethodImpl.h * src/download_helper.cc * src/download_helper.h --- ChangeLog | 9 +++++++++ src/XmlRpcMethodFactory.cc | 2 ++ src/XmlRpcMethodImpl.cc | 31 +++++++++++++++++++++++++++++++ src/XmlRpcMethodImpl.h | 5 +++++ src/download_helper.cc | 16 ++++++++++++---- src/download_helper.h | 12 +++++++----- 6 files changed, 66 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index ffe0cf6b..0cc03d24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-05-13 Tatsuhiro Tsujikawa + + Added addMetalink XML-RPC command. + * src/XmlRpcMethodFactory.cc + * src/XmlRpcMethodImpl.cc + * src/XmlRpcMethodImpl.h + * src/download_helper.cc + * src/download_helper.h + 2009-05-13 Tatsuhiro Tsujikawa Fixed the bug that POU peers are never choked in seeding. diff --git a/src/XmlRpcMethodFactory.cc b/src/XmlRpcMethodFactory.cc index 9995734b..f54c14c3 100644 --- a/src/XmlRpcMethodFactory.cc +++ b/src/XmlRpcMethodFactory.cc @@ -48,6 +48,8 @@ XmlRpcMethodFactory::create(const std::string& methodName) return SharedHandle(new AddUriXmlRpcMethod()); } else if(methodName == "aria2.addTorrent") { return SharedHandle(new AddTorrentXmlRpcMethod()); + } else if(methodName == "aria2.addMetalink") { + return SharedHandle(new AddMetalinkXmlRpcMethod()); } else if(methodName == "aria2.remove") { return SharedHandle(new RemoveXmlRpcMethod()); } else if(methodName == "aria2.tellStatus") { diff --git a/src/XmlRpcMethodImpl.cc b/src/XmlRpcMethodImpl.cc index 3c478efe..5d815ac2 100644 --- a/src/XmlRpcMethodImpl.cc +++ b/src/XmlRpcMethodImpl.cc @@ -140,6 +140,37 @@ BDE AddTorrentXmlRpcMethod::process } } +BDE AddMetalinkXmlRpcMethod::process +(const XmlRpcRequest& req, DownloadEngine* e) +{ + const BDE& params = req._params; + assert(params.isList()); + if(params.empty() || !params[0].isString()) { + throw DlAbortEx("Metalink data is not provided."); + } + + SharedHandle