diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-05-02 09:40:27 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-05-02 09:40:27 +0900 |
| commit | e5cccd335cc99f28615d44d5cb0b4400239c63cd (patch) | |
| tree | 03bb0f029fb5c0eeb0729cb2e2384a98d280fc45 /src/aria2api.cc | |
| parent | 24a6896bf44dcda62c9bbf0b41eb61b178ba6954 (diff) | |
Add addMetalink API function
Diffstat (limited to 'src/aria2api.cc')
| -rw-r--r-- | src/aria2api.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/aria2api.cc b/src/aria2api.cc index 72352266..02171b7a 100644 --- a/src/aria2api.cc +++ b/src/aria2api.cc @@ -227,6 +227,43 @@ int addUri(Session* session, return 0; } +int addMetalink(Session* session, + std::vector<A2Gid>& gids, + const std::string& metalinkFile, + const KeyVals& options, + int position) +{ +#ifdef ENABLE_METALINK + const SharedHandle<DownloadEngine>& e = + session->context->reqinfo->getDownloadEngine(); + SharedHandle<Option> requestOption(new Option(*e->getOption())); + std::vector<SharedHandle<RequestGroup> > result; + try { + apiGatherRequestOption(requestOption.get(), options, + OptionParser::getInstance()); + requestOption->put(PREF_METALINK_FILE, metalinkFile); + createRequestGroupForMetalink(result, requestOption); + } catch(RecoverableException& e) { + A2_LOG_INFO_EX(EX_EXCEPTION_CAUGHT, e); + return -1; + } + if(!result.empty()) { + if(position >= 0) { + e->getRequestGroupMan()->insertReservedGroup(position, result); + } else { + e->getRequestGroupMan()->addReservedGroup(result); + } + for(std::vector<SharedHandle<RequestGroup> >::const_iterator i = + result.begin(), eoi = result.end(); i != eoi; ++i) { + gids.push_back((*i)->getGID()); + } + } + return 0; +#else // !ENABLE_METALINK + return -1; +#endif // !ENABLE_METALINK +} + int removeDownload(Session* session, const A2Gid& gid, bool force) { const SharedHandle<DownloadEngine>& e = |
