bep 47: serialize/deserialize new fields
This commit is contained in:
parent
60cea68985
commit
af0389de05
3 changed files with 39 additions and 1 deletions
|
|
@ -124,7 +124,13 @@ async fn create_torrent_raw<'a>(
|
||||||
.components()
|
.components()
|
||||||
.map(|c| osstr_to_bytes(c.as_os_str()).into())
|
.map(|c| osstr_to_bytes(c.as_os_str()).into())
|
||||||
.collect();
|
.collect();
|
||||||
output_files.push(TorrentMetaV1File { length, path });
|
output_files.push(TorrentMetaV1File {
|
||||||
|
length,
|
||||||
|
path,
|
||||||
|
attr: None,
|
||||||
|
sha1: None,
|
||||||
|
symlink_path: None,
|
||||||
|
});
|
||||||
continue 'outer;
|
continue 'outer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -154,6 +160,9 @@ async fn create_torrent_raw<'a>(
|
||||||
} else {
|
} else {
|
||||||
Some(output_files)
|
Some(output_files)
|
||||||
},
|
},
|
||||||
|
attr: None,
|
||||||
|
sha1: None,
|
||||||
|
symlink_path: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -402,9 +402,15 @@ mod tests {
|
||||||
.map(|f| TorrentMetaV1File {
|
.map(|f| TorrentMetaV1File {
|
||||||
length: 1,
|
length: 1,
|
||||||
path: f.split("/").map(|f| f.as_bytes().into()).collect(),
|
path: f.split("/").map(|f| f.as_bytes().into()).collect(),
|
||||||
|
attr: None,
|
||||||
|
sha1: None,
|
||||||
|
symlink_path: None,
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
),
|
),
|
||||||
|
attr: None,
|
||||||
|
sha1: None,
|
||||||
|
symlink_path: None,
|
||||||
},
|
},
|
||||||
comment: None,
|
comment: None,
|
||||||
created_by: None,
|
created_by: None,
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,12 @@ pub struct TorrentMetaV1Info<BufType> {
|
||||||
// Single-file mode
|
// Single-file mode
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub length: Option<u64>,
|
pub length: Option<u64>,
|
||||||
|
#[serde(default = "none")]
|
||||||
|
pub attr: Option<BufType>,
|
||||||
|
#[serde(default = "none")]
|
||||||
|
pub sha1: Option<BufType>,
|
||||||
|
#[serde(default = "none", rename = "symlink path")]
|
||||||
|
pub symlink_path: Option<Vec<BufType>>,
|
||||||
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub md5sum: Option<BufType>,
|
pub md5sum: Option<BufType>,
|
||||||
|
|
@ -253,10 +259,21 @@ impl<BufType: AsRef<[u8]>> TorrentMetaV1Info<BufType> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fn none<T>() -> Option<T> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct TorrentMetaV1File<BufType> {
|
pub struct TorrentMetaV1File<BufType> {
|
||||||
pub length: u64,
|
pub length: u64,
|
||||||
pub path: Vec<BufType>,
|
pub path: Vec<BufType>,
|
||||||
|
|
||||||
|
#[serde(default = "none")]
|
||||||
|
pub attr: Option<BufType>,
|
||||||
|
#[serde(default = "none")]
|
||||||
|
pub sha1: Option<BufType>,
|
||||||
|
#[serde(default = "none", rename = "symlink path")]
|
||||||
|
pub symlink_path: Option<Vec<BufType>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<BufType> TorrentMetaV1File<BufType>
|
impl<BufType> TorrentMetaV1File<BufType>
|
||||||
|
|
@ -282,6 +299,9 @@ where
|
||||||
TorrentMetaV1File {
|
TorrentMetaV1File {
|
||||||
length: self.length,
|
length: self.length,
|
||||||
path: self.path.clone_to_owned(within_buffer),
|
path: self.path.clone_to_owned(within_buffer),
|
||||||
|
attr: self.attr.clone_to_owned(within_buffer),
|
||||||
|
sha1: self.sha1.clone_to_owned(within_buffer),
|
||||||
|
symlink_path: self.symlink_path.clone_to_owned(within_buffer),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -300,6 +320,9 @@ where
|
||||||
length: self.length,
|
length: self.length,
|
||||||
md5sum: self.md5sum.clone_to_owned(within_buffer),
|
md5sum: self.md5sum.clone_to_owned(within_buffer),
|
||||||
files: self.files.clone_to_owned(within_buffer),
|
files: self.files.clone_to_owned(within_buffer),
|
||||||
|
attr: self.attr.clone_to_owned(within_buffer),
|
||||||
|
sha1: self.sha1.clone_to_owned(within_buffer),
|
||||||
|
symlink_path: self.symlink_path.clone_to_owned(within_buffer),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue