fix magnet link Display code
This commit is contained in:
parent
53d61d0428
commit
cd87acdab2
1 changed files with 25 additions and 24 deletions
|
|
@ -72,31 +72,32 @@ impl Magnet {
|
||||||
|
|
||||||
impl std::fmt::Display for Magnet {
|
impl std::fmt::Display for Magnet {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
if let (Some(id20), Some(id32)) = (self.id20, self.id32) {
|
write!(f, "magnet:")?;
|
||||||
write!(
|
let mut write_ampersand = {
|
||||||
f,
|
let mut written_so_far = 0;
|
||||||
"magnet:?xt=urn:btih:{}?xt=urn:btmh:1220{}&tr={}",
|
move |f: &mut std::fmt::Formatter<'_>| {
|
||||||
id20.as_string(),
|
if written_so_far == 0 {
|
||||||
id32.as_string(),
|
write!(f, "?")?;
|
||||||
self.trackers.join("&tr=")
|
} else {
|
||||||
)
|
write!(f, "&")?;
|
||||||
} else if let Some(id20) = self.id20 {
|
}
|
||||||
write!(
|
written_so_far += 1;
|
||||||
f,
|
Ok(())
|
||||||
"magnet:?xt=urn:btih:{}&tr={}",
|
}
|
||||||
id20.as_string(),
|
};
|
||||||
self.trackers.join("&tr=")
|
if let Some(id20) = self.id20 {
|
||||||
)
|
write_ampersand(f)?;
|
||||||
} else if let Some(id32) = self.id32 {
|
write!(f, "xt=urn:btih:{}", id20.as_string(),)?;
|
||||||
write!(
|
|
||||||
f,
|
|
||||||
"magnet:?xt=urn:btmh:1220{}&tr={}",
|
|
||||||
id32.as_string(),
|
|
||||||
self.trackers.join("&tr=")
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
panic!("no infohash")
|
|
||||||
}
|
}
|
||||||
|
if let Some(id32) = self.id32 {
|
||||||
|
write_ampersand(f)?;
|
||||||
|
write!(f, "xt=xt=urn:btmh:1220{}", id32.as_string(),)?;
|
||||||
|
}
|
||||||
|
for tracker in self.trackers.iter() {
|
||||||
|
write_ampersand(f)?;
|
||||||
|
write!(f, "tr={tracker}")?;
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue