summaryrefslogtreecommitdiff
path: root/src/BtDependency.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-11-28 09:58:49 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-11-28 09:58:49 +0000
commit339795311bd3d07da1d49fb2c5c2e7efa8833922 (patch)
tree21c4960e2cb6a04933f70d784351d15c64223605 /src/BtDependency.cc
parent96205abc67e5f425e3bad997959493ba54d83190 (diff)
2009-11-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Accept BitTorrent Magnet URI in Metalink resource type bittorrent. Rewritten UTMetadataPostDownloadHandler. To create torrent data from metadata, use new metadata2Torrent() function. * src/BtDependency.cc * src/UTMetadataPostDownloadHandler.cc * src/bittorrent_helper.cc * src/bittorrent_helper.h * test/BittorrentHelperTest.cc * test/BtDependencyTest.cc
Diffstat (limited to 'src/BtDependency.cc')
-rw-r--r--src/BtDependency.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/BtDependency.cc b/src/BtDependency.cc
index 6041a9ef..270e27ca 100644
--- a/src/BtDependency.cc
+++ b/src/BtDependency.cc
@@ -71,8 +71,15 @@ bool BtDependency::resolve()
dependee->getPieceStorage()->getDiskAdaptor();
diskAdaptor->openExistingFile();
std::string content = util::toString(diskAdaptor);
- bittorrent::loadFromMemory
- (content, context, File(dependee->getFirstFilePath()).getBasename());
+ if(dependee->getDownloadContext()->hasAttribute(bittorrent::BITTORRENT)) {
+ const BDE& attrs =
+ dependee->getDownloadContext()->getAttribute(bittorrent::BITTORRENT);
+ bittorrent::loadFromMemory
+ (bittorrent::metadata2Torrent(content, attrs), context, "default");
+ } else {
+ bittorrent::loadFromMemory
+ (content, context, File(dependee->getFirstFilePath()).getBasename());
+ }
if(context->getFileEntries().size() !=
_dependant->getDownloadContext()->getFileEntries().size()) {
throw DL_ABORT_EX("The number of file in torrent doesn't match to"