merge RC_1_1 into master

This commit is contained in:
Arvid Norberg 2018-04-29 00:58:24 +02:00
commit fc56ec194a
5 changed files with 25 additions and 5 deletions

View File

@ -156,7 +156,7 @@ def print_download_queue(console, download_queue):
def add_torrent(ses, filename, options): def add_torrent(ses, filename, options):
atp = lt.add_torrent_params() atp = lt.add_torrent_params()
if filename.startswith('magnet:'): if filename.startswith('magnet:'):
atp = lt.parse_magnet_uti(filename) atp = lt.parse_magnet_uri(filename)
else: else:
atp.ti = lt.torrent_info(filename) atp.ti = lt.torrent_info(filename)
try: try:

View File

@ -37,7 +37,7 @@ namespace {
} }
#endif #endif
dict parse_magnet_uri_wrap(std::string const& uri) dict parse_magnet_uri_dict(std::string const& uri)
{ {
error_code ec; error_code ec;
add_torrent_params p = parse_magnet_uri(uri, ec); add_torrent_params p = parse_magnet_uri(uri, ec);
@ -69,6 +69,14 @@ namespace {
return ret; return ret;
} }
add_torrent_params parse_magnet_uri_wrap(std::string const& uri)
{
error_code ec;
add_torrent_params p = parse_magnet_uri(uri, ec);
if (ec) throw system_error(ec);
return p;
}
std::string (*make_magnet_uri0)(torrent_handle const&) = make_magnet_uri; std::string (*make_magnet_uri0)(torrent_handle const&) = make_magnet_uri;
std::string (*make_magnet_uri1)(torrent_info const&) = make_magnet_uri; std::string (*make_magnet_uri1)(torrent_info const&) = make_magnet_uri;
} }
@ -81,4 +89,5 @@ void bind_magnet_uri()
def("make_magnet_uri", make_magnet_uri0); def("make_magnet_uri", make_magnet_uri0);
def("make_magnet_uri", make_magnet_uri1); def("make_magnet_uri", make_magnet_uri1);
def("parse_magnet_uri", parse_magnet_uri_wrap); def("parse_magnet_uri", parse_magnet_uri_wrap);
def("parse_magnet_uri_dict", parse_magnet_uri_dict);
} }

View File

@ -423,9 +423,19 @@ class test_sha1hash(unittest.TestCase):
class test_magnet_link(unittest.TestCase): class test_magnet_link(unittest.TestCase):
def test_parse_magnet_uri(self): def test_parse_magnet_uri(self):
ses = lt.session(settings) ses = lt.session({})
magnet = 'magnet:?xt=urn:btih:C6EIF4CCYDBTIJVG3APAGM7M4NDONCTI' magnet = 'magnet:?xt=urn:btih:C6EIF4CCYDBTIJVG3APAGM7M4NDONCTI'
p = lt.parse_magnet_uri(magnet) p = lt.parse_magnet_uri(magnet)
self.assertEqual(str(p.info_hash), '178882f042c0c33426a6d81e0333ece346e68a68')
p.save_path = '.'
h = ses.add_torrent(p)
self.assertEqual(str(h.info_hash()), '178882f042c0c33426a6d81e0333ece346e68a68')
def test_parse_magnet_uri_dict(self):
ses = lt.session({})
magnet = 'magnet:?xt=urn:btih:C6EIF4CCYDBTIJVG3APAGM7M4NDONCTI'
p = lt.parse_magnet_uri_dict(magnet)
self.assertEqual(binascii.hexlify(p['info_hash']), b'178882f042c0c33426a6d81e0333ece346e68a68')
p['save_path'] = '.' p['save_path'] = '.'
h = ses.add_torrent(p) h = ses.add_torrent(p)
self.assertEqual(str(h.info_hash()), '178882f042c0c33426a6d81e0333ece346e68a68') self.assertEqual(str(h.info_hash()), '178882f042c0c33426a6d81e0333ece346e68a68')

View File

@ -10,14 +10,14 @@ if $(BOOST_ROOT)
} }
project client_test project client_test
: requirements : requirements
<threading>multi <library>/torrent//torrent <threading>multi <library>/torrent//torrent
<toolset>darwin:<cflags>-Wno-unused-command-line-argument <toolset>darwin:<cflags>-Wno-unused-command-line-argument
# disable warning C4275: non DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier' # disable warning C4275: non DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier'
<toolset>msvc:<cflags>/wd4275 <toolset>msvc:<cflags>/wd4275
: default-build : default-build
<link>static <link>static
; ;
exe client_test : client_test.cpp print.cpp torrent_view.cpp session_view.cpp ; exe client_test : client_test.cpp print.cpp torrent_view.cpp session_view.cpp ;

View File

@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE.
#include <deque> #include <deque>
#include <fstream> #include <fstream>
#include <regex> #include <regex>
#include <algorithm> // for min()/max()
#include "libtorrent/config.hpp" #include "libtorrent/config.hpp"