string ConvertToString() { var sb = new StringBuilder(); sb.Append("magnet:?"); sb.Append("xt=urn:btih:"); sb.Append(InfoHash.ToHex()); if (!string.IsNullOrEmpty(Name)) { sb.Append("&dn="); sb.Append(Name.UrlEncodeUTF8()); } foreach (string tracker in AnnounceUrls) { sb.Append("&tr="); sb.Append(tracker.UrlEncodeUTF8()); } foreach (string webseed in Webseeds) { sb.Append("&as="); sb.Append(webseed.UrlEncodeUTF8()); } return(sb.ToString()); }
public void HexTest() { InfoHash hash = Create(); string hex = hash.ToHex(); Assert.AreEqual(40, hex.Length, "#1"); InfoHash other = InfoHash.FromHex(hex); Assert.AreEqual(hash, other, "#2"); }
string ToString(int formatVersion) { var sb = new StringBuilder(); sb.Append("magnet:?"); if (formatVersion == 1) { sb.Append("xt=urn:btih:"); sb.Append(InfoHash.ToHex()); } else if (formatVersion == 2) { sb.Append("xt=urn:btmh"); throw new NotSupportedException("Need to add support for the new 'multihash' thing"); } else { throw new NotSupportedException(); } if (!string.IsNullOrEmpty(Name)) { sb.Append("&dn="); sb.Append(Name.UrlEncodeUTF8()); } foreach (var tracker in AnnounceUrls) { sb.Append("&tr="); sb.Append(tracker.UrlEncodeUTF8()); } foreach (var webseed in Webseeds) { sb.Append("&as="); sb.Append(webseed.UrlEncodeUTF8()); } return(sb.ToString()); }