std::string make_magnet_uri(torrent_info const& info) { std::string ret; sha1_hash const& ih = info.info_hash(); ret += "magnet:?xt=urn:btih:"; ret += to_hex(ih.to_string()); std::string const& name = info.name(); if (!name.empty()) { ret += "&dn="; ret += escape_string(name.c_str(), name.length()); } std::vector<announce_entry> const& tr = info.trackers(); for (std::vector<announce_entry>::const_iterator i = tr.begin(), end(tr.end()); i != end; ++i) { ret += "&tr="; ret += escape_string(i->url.c_str(), i->url.length()); } std::vector<web_seed_entry> const& seeds = info.web_seeds(); for (std::vector<web_seed_entry>::const_iterator i = seeds.begin() , end(seeds.end()); i != end; ++i) { if (i->type != web_seed_entry::url_seed) continue; ret += "&ws="; ret += escape_string(i->url.c_str(), i->url.length()); } return ret; }
std::string make_magnet_uri(torrent_info const& info) { std::string ret; sha1_hash const& ih = info.info_hash(); ret += "magnet:?xt=urn:btih:"; ret += aux::to_hex(ih); std::string const& name = info.name(); if (!name.empty()) { ret += "&dn="; ret += escape_string(name); } for (auto const& tr : info.trackers()) { ret += "&tr="; ret += escape_string(tr.url); } for (auto const& s : info.web_seeds()) { if (s.type != web_seed_entry::url_seed) continue; ret += "&ws="; ret += escape_string(s.url); } return ret; }