mirror of
https://github.com/aria2/aria2.git
synced 2025-04-07 06:27:37 +03:00
2010-01-17 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added dir and files key to the response struct of aria2.tellStatus XML-RPC method. The value associated with files key is the list of files. Its element is the same struct used in aria2.getFiles XML-RPC method. Added uris key to the response struct of aria2.getFiles XML-RPC method. The value associated with uris key is the list of URIs. Its element is the same struct used in aria2.getUris XML-RPC method. * doc/aria2c.1.txt * src/XmlRpcMethodImpl.cc * test/XmlRpcMethodTest.cc
This commit is contained in:
parent
f2722cb870
commit
2d74b16583
6 changed files with 123 additions and 21 deletions
|
@ -116,6 +116,9 @@ const std::string KEY_ENABLED_FEATURES = "enabledFeatures";
|
|||
const std::string KEY_METHOD_NAME = "methodName";
|
||||
const std::string KEY_PARAMS = "params";
|
||||
const std::string KEY_SESSION_ID = "sessionId";
|
||||
const std::string KEY_FILES = "files";
|
||||
const std::string KEY_DIR = "dir";
|
||||
const std::string KEY_URIS = "uris";
|
||||
}
|
||||
|
||||
static BDE createGIDResponse(int32_t gid)
|
||||
|
@ -300,6 +303,31 @@ BDE RemoveXmlRpcMethod::process(const XmlRpcRequest& req, DownloadEngine* e)
|
|||
return createGIDResponse(gid);
|
||||
}
|
||||
|
||||
template<typename InputIterator>
|
||||
static void createFileEntry(BDE& files, InputIterator first, InputIterator last)
|
||||
{
|
||||
size_t index = 1;
|
||||
for(; first != last; ++first, ++index) {
|
||||
BDE entry = BDE::dict();
|
||||
entry[KEY_INDEX] = util::uitos(index);
|
||||
entry[KEY_PATH] = (*first)->getPath();
|
||||
entry[KEY_SELECTED] = (*first)->isRequested()?BDE_TRUE:BDE_FALSE;
|
||||
entry[KEY_LENGTH] = util::uitos((*first)->getLength());
|
||||
|
||||
BDE uriList = BDE::list();
|
||||
std::deque<std::string> uris;
|
||||
(*first)->getUris(uris);
|
||||
for(std::deque<std::string>::const_iterator i = uris.begin();
|
||||
i != uris.end(); ++i) {
|
||||
BDE uriEntry = BDE::dict();
|
||||
uriEntry[KEY_URI] = *i;
|
||||
uriList << uriEntry;
|
||||
}
|
||||
entry[KEY_URIS] = uriList;
|
||||
files << entry;
|
||||
}
|
||||
}
|
||||
|
||||
void gatherProgressCommon
|
||||
(BDE& entryDict, const SharedHandle<RequestGroup>& group)
|
||||
{
|
||||
|
@ -320,10 +348,9 @@ void gatherProgressCommon
|
|||
ps->getBitfieldLength());
|
||||
}
|
||||
}
|
||||
entryDict[KEY_PIECE_LENGTH] =
|
||||
util::uitos(group->getDownloadContext()->getPieceLength());
|
||||
entryDict[KEY_NUM_PIECES] =
|
||||
util::uitos(group->getDownloadContext()->getNumPieces());
|
||||
const SharedHandle<DownloadContext>& dctx = group->getDownloadContext();
|
||||
entryDict[KEY_PIECE_LENGTH] = util::uitos(dctx->getPieceLength());
|
||||
entryDict[KEY_NUM_PIECES] = util::uitos(dctx->getNumPieces());
|
||||
if(!group->followedBy().empty()) {
|
||||
BDE list = BDE::list();
|
||||
// The element is GID.
|
||||
|
@ -336,6 +363,11 @@ void gatherProgressCommon
|
|||
if(group->belongsTo()) {
|
||||
entryDict[KEY_BELONGS_TO] = util::itos(group->belongsTo());
|
||||
}
|
||||
BDE files = BDE::list();
|
||||
createFileEntry
|
||||
(files, dctx->getFileEntries().begin(), dctx->getFileEntries().end());
|
||||
entryDict[KEY_FILES] = files;
|
||||
entryDict[KEY_DIR] = group->getOption()->get(PREF_DIR);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_BITTORRENT
|
||||
|
@ -417,6 +449,9 @@ void gatherStoppedDownload
|
|||
if(ds->belongsTo) {
|
||||
entryDict[KEY_BELONGS_TO] = util::itos(ds->belongsTo);
|
||||
}
|
||||
BDE files = BDE::list();
|
||||
createFileEntry(files, ds->fileEntries.begin(), ds->fileEntries.end());
|
||||
entryDict[KEY_FILES] = files;
|
||||
}
|
||||
|
||||
static
|
||||
|
@ -430,20 +465,6 @@ findRequestGroup(const SharedHandle<RequestGroupMan>& rgman, int32_t gid)
|
|||
return group;
|
||||
}
|
||||
|
||||
template<typename InputIterator>
|
||||
static void createFileEntry(BDE& files, InputIterator first, InputIterator last)
|
||||
{
|
||||
size_t index = 1;
|
||||
for(; first != last; ++first, ++index) {
|
||||
BDE entry = BDE::dict();
|
||||
entry[KEY_INDEX] = util::uitos(index);
|
||||
entry[KEY_PATH] = (*first)->getPath();
|
||||
entry[KEY_SELECTED] = (*first)->isRequested()?BDE_TRUE:BDE_FALSE;
|
||||
entry[KEY_LENGTH] = util::uitos((*first)->getLength());
|
||||
files << entry;
|
||||
}
|
||||
}
|
||||
|
||||
BDE GetFilesXmlRpcMethod::process
|
||||
(const XmlRpcRequest& req, DownloadEngine* e)
|
||||
{
|
||||
|
@ -493,9 +514,9 @@ BDE GetUrisXmlRpcMethod::process
|
|||
(StringFormat("No URI data is available for GID#%d", gid).str());
|
||||
}
|
||||
BDE uriList = BDE::list();
|
||||
std::deque<std::string> uris;
|
||||
// TODO Current implementation just returns first FileEntry's URIs.
|
||||
if(!group->getDownloadContext()->getFileEntries().empty()) {
|
||||
std::deque<std::string> uris;
|
||||
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
||||
for(std::deque<std::string>::const_iterator i = uris.begin();
|
||||
i != uris.end(); ++i) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue