Skip to content

Commit b033b92

Browse files
AgeManningjxs
andauthored
Improves ergonomics to allow removing fields from an ENR (#84)
Co-authored-by: João Oliveira <[email protected]>
1 parent 80d220e commit b033b92

File tree

2 files changed

+189
-98
lines changed

2 files changed

+189
-98
lines changed

src/builder.rs

+13-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
use crate::{Enr, EnrKey, EnrPublicKey, Error, Key, NodeId, MAX_ENR_SIZE};
2+
use crate::{
3+
ENR_VERSION, ID_ENR_KEY, IP6_ENR_KEY, IP_ENR_KEY, TCP6_ENR_KEY, TCP_ENR_KEY, UDP6_ENR_KEY,
4+
UDP_ENR_KEY,
5+
};
26
use alloy_rlp::{Encodable, Header};
37
use bytes::{Bytes, BytesMut};
48
use std::{
@@ -27,7 +31,7 @@ impl<K: EnrKey> Default for Builder<K> {
2731
/// Constructs a minimal [`Builder`] for the v4 identity scheme.
2832
fn default() -> Self {
2933
Self {
30-
id: String::from("v4"),
34+
id: String::from_utf8(ENR_VERSION.into()).expect("Is a valid string"),
3135
seq: 1,
3236
content: BTreeMap::new(),
3337
phantom: PhantomData,
@@ -65,13 +69,13 @@ impl<K: EnrKey> Builder<K> {
6569

6670
/// Adds an `ip` field to the `ENRBuilder`.
6771
pub fn ip4(&mut self, ip: Ipv4Addr) -> &mut Self {
68-
self.add_value("ip", &ip.octets().as_ref());
72+
self.add_value(IP_ENR_KEY, &ip.octets().as_ref());
6973
self
7074
}
7175

7276
/// Adds an `ip6` field to the `ENRBuilder`.
7377
pub fn ip6(&mut self, ip: Ipv6Addr) -> &mut Self {
74-
self.add_value("ip6", &ip.octets().as_ref());
78+
self.add_value(IP6_ENR_KEY, &ip.octets().as_ref());
7579
self
7680
}
7781

@@ -81,32 +85,32 @@ impl<K: EnrKey> Builder<K> {
8185
8286
/// Adds an `Id` field to the `ENRBuilder`.
8387
pub fn id(&mut self, id: &str) -> &mut Self {
84-
self.add_value("id", &id.as_bytes());
88+
self.add_value(ID_ENR_KEY, &id.as_bytes());
8589
self
8690
}
8791
*/
8892

8993
/// Adds a `tcp` field to the `ENRBuilder`.
9094
pub fn tcp4(&mut self, tcp: u16) -> &mut Self {
91-
self.add_value("tcp", &tcp);
95+
self.add_value(TCP_ENR_KEY, &tcp);
9296
self
9397
}
9498

9599
/// Adds a `tcp6` field to the `ENRBuilder`.
96100
pub fn tcp6(&mut self, tcp: u16) -> &mut Self {
97-
self.add_value("tcp6", &tcp);
101+
self.add_value(TCP6_ENR_KEY, &tcp);
98102
self
99103
}
100104

101105
/// Adds a `udp` field to the `ENRBuilder`.
102106
pub fn udp4(&mut self, udp: u16) -> &mut Self {
103-
self.add_value("udp", &udp);
107+
self.add_value(UDP_ENR_KEY, &udp);
104108
self
105109
}
106110

107111
/// Adds a `udp6` field to the `ENRBuilder`.
108112
pub fn udp6(&mut self, udp: u16) -> &mut Self {
109-
self.add_value("udp6", &udp);
113+
self.add_value(UDP6_ENR_KEY, &udp);
110114
self
111115
}
112116

@@ -179,7 +183,7 @@ impl<K: EnrKey> Builder<K> {
179183

180184
let mut id_bytes = BytesMut::with_capacity(self.id.length());
181185
self.id.as_bytes().encode(&mut id_bytes);
182-
self.add_value_rlp("id", id_bytes.freeze());
186+
self.add_value_rlp(ID_ENR_KEY, id_bytes.freeze());
183187

184188
self.add_public_key(&key.public());
185189
let rlp_content = self.rlp_content();

0 commit comments

Comments
 (0)