change the add_torrent_params API to use flags instead of a bunch of bools (but leave it backwards compatible)
This commit is contained in:
@@ -11,47 +11,22 @@
|
||||
using namespace boost::python;
|
||||
using namespace libtorrent;
|
||||
|
||||
extern void dict_to_add_torrent_params(dict params
|
||||
, add_torrent_params& p, std::vector<char>& rd);
|
||||
|
||||
namespace {
|
||||
|
||||
torrent_handle _add_magnet_uri(session& s, std::string uri, dict params)
|
||||
{
|
||||
add_torrent_params p;
|
||||
|
||||
std::string url;
|
||||
if (params.has_key("tracker_url"))
|
||||
{
|
||||
url = extract<std::string>(params["tracker_url"]);
|
||||
p.tracker_url = url.c_str();
|
||||
}
|
||||
std::string name;
|
||||
if (params.has_key("name"))
|
||||
{
|
||||
name = extract<std::string>(params["name"]);
|
||||
p.name = name.c_str();
|
||||
}
|
||||
p.save_path = extract<std::string>(params["save_path"]);
|
||||
|
||||
std::vector<char> resume_buf;
|
||||
if (params.has_key("resume_data"))
|
||||
{
|
||||
std::string resume = extract<std::string>(params["resume_data"]);
|
||||
resume_buf.resize(resume.size());
|
||||
std::memcpy(&resume_buf[0], &resume[0], resume.size());
|
||||
p.resume_data = &resume_buf;
|
||||
}
|
||||
if (params.has_key("storage_mode"))
|
||||
p.storage_mode = extract<storage_mode_t>(params["storage_mode"]);
|
||||
if (params.has_key("paused"))
|
||||
p.paused = params["paused"];
|
||||
if (params.has_key("auto_managed"))
|
||||
p.auto_managed = params["auto_managed"];
|
||||
if (params.has_key("duplicate_is_error"))
|
||||
p.duplicate_is_error = params["duplicate_is_error"];
|
||||
|
||||
dict_to_add_torrent_params(params, p, resume_buf);
|
||||
|
||||
#ifndef BOOST_NO_EXCEPTIONS
|
||||
return add_magnet_uri(s, uri, p);
|
||||
#else
|
||||
error_code ec;
|
||||
error_code ec;
|
||||
return add_magnet_uri(s, uri, p, ec);
|
||||
#endif
|
||||
}
|
||||
|
@@ -143,6 +143,7 @@ namespace
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void dict_to_add_torrent_params(dict params, add_torrent_params& p, std::vector<char>& rd)
|
||||
{
|
||||
@@ -175,12 +176,8 @@ namespace
|
||||
}
|
||||
if (params.has_key("storage_mode"))
|
||||
p.storage_mode = extract<storage_mode_t>(params["storage_mode"]);
|
||||
if (params.has_key("paused"))
|
||||
p.paused = params["paused"];
|
||||
if (params.has_key("auto_managed"))
|
||||
p.auto_managed = params["auto_managed"];
|
||||
if (params.has_key("duplicate_is_error"))
|
||||
p.duplicate_is_error = params["duplicate_is_error"];
|
||||
|
||||
#ifndef TORRENT_NO_DEPRECATE
|
||||
if (params.has_key("seed_mode"))
|
||||
p.seed_mode = params["seed_mode"];
|
||||
if (params.has_key("upload_mode"))
|
||||
@@ -189,14 +186,33 @@ namespace
|
||||
p.upload_mode = params["share_mode"];
|
||||
if (params.has_key("override_resume_data"))
|
||||
p.override_resume_data = params["override_resume_data"];
|
||||
if (params.has_key("apply_ip_filter"))
|
||||
p.apply_ip_filter = params["apply_ip_filter"];
|
||||
if (params.has_key("paused"))
|
||||
p.paused = params["paused"];
|
||||
if (params.has_key("auto_managed"))
|
||||
p.auto_managed = params["auto_managed"];
|
||||
if (params.has_key("duplicate_is_error"))
|
||||
p.duplicate_is_error = params["duplicate_is_error"];
|
||||
if (params.has_key("merge_resume_trackers"))
|
||||
p.merge_resume_trackers = params["merge_resume_trackers"];
|
||||
#endif
|
||||
if (params.has_key("flags"))
|
||||
p.flags = extract<boost::uint64_t>(params["flags"]);
|
||||
|
||||
if (params.has_key("trackerid"))
|
||||
p.trackerid = extract<std::string>(params["trackerid"]);
|
||||
if (params.has_key("url"))
|
||||
p.url = extract<std::string>(params["url"]);
|
||||
if (params.has_key("merge_resume_trackers"))
|
||||
p.merge_resume_trackers = params["merge_resume_trackers"];
|
||||
if (params.has_key("source_feed_url"))
|
||||
p.source_feed_url = extract<std::string>(params["source_feed_url"]);
|
||||
if (params.has_key("uuid"))
|
||||
p.uuid = extract<std::string>(params["uuid"]);
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
torrent_handle add_torrent(session& s, dict params)
|
||||
{
|
||||
add_torrent_params p;
|
||||
@@ -446,6 +462,17 @@ void bind_session()
|
||||
.value("start_default_features", session::start_default_features)
|
||||
;
|
||||
|
||||
enum_<add_torrent_params::flags_t>("add_torrent_params_flags_t")
|
||||
.value("flag_seed_mode", add_torrent_params::flag_seed_mode)
|
||||
.value("flag_override_resume_data", add_torrent_params::flag_override_resume_data)
|
||||
.value("flag_upload_mode", add_torrent_params::flag_upload_mode)
|
||||
.value("flag_share_mode", add_torrent_params::flag_share_mode)
|
||||
.value("flag_apply_ip_filter", add_torrent_params::flag_apply_ip_filter)
|
||||
.value("flag_paused", add_torrent_params::flag_paused)
|
||||
.value("flag_auto_managed", add_torrent_params::flag_auto_managed)
|
||||
.value("flag_duplicate_is_error", add_torrent_params::flag_duplicate_is_error)
|
||||
.value("flag_merge_resume_trackers", add_torrent_params::flag_merge_resume_trackers)
|
||||
;
|
||||
class_<cache_status>("cache_status")
|
||||
.def_readonly("blocks_written", &cache_status::blocks_written)
|
||||
.def_readonly("writes", &cache_status::writes)
|
||||
|
Reference in New Issue
Block a user