js.open_object("request")?;
js.set_hex("id", &request.id)?;
if let Some(target) = &request.target {
- js.set_string("target", target)?;
+ js.set_hex("target", target)?;
}
if let Some(info_hash) = &request.info_hash {
js.set_hex("info_hash", info_hash)?;
}
if let Some(token) = &request.token {
- js.set_string("token", token)?;
+ js.set_hex("token", token)?;
}
if let Some(implied_port) = request.implied_port {
js.set_uint("implied_port", u64::from(implied_port))?;
/// q = * - 20 byte string, sender's node ID in network byte order
pub id: Vec<u8>,
/// q = find_node - target node ID
- pub target: Option<String>,
+ pub target: Option<Vec<u8>>,
/// q = get_peers/announce_peer - 20-byte info hash of target torrent
pub info_hash: Option<Vec<u8>>,
/// q = announce_peer - token key received from previous get_peers query
- pub token: Option<String>,
+ pub token: Option<Vec<u8>>,
/// q = announce_peer - 0 or 1, if 1 ignore provided port and
/// use source port of UDP packet
pub implied_port: Option<u8>,
id = value.try_into_bytes().context("id").map(Some)?;
}
(b"target", value) => {
- target = String::decode_bencode_object(value)
+ target = value
+ .try_into_bytes()
.context("target")
- .map(Some)?;
+ .map(|v| Some(v.to_vec()))?;
}
(b"info_hash", value) => {
info_hash = value
.map(|v| Some(v.to_vec()))?;
}
(b"token", value) => {
- token = String::decode_bencode_object(value)
+ token = value
+ .try_into_bytes()
.context("token")
- .map(Some)?;
+ .map(|v| Some(v.to_vec()))?;
}
(b"implied_port", value) => {
implied_port = u8::decode_bencode_object(value)