Skip to content

Commit 897aeb4

Browse files
committed
Change getaddressinfo label type for v0.20.0
1 parent 6e91a74 commit 897aeb4

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

integration_test/src/main.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,16 +301,33 @@ fn test_get_address_info(cl: &Client) {
301301
assert!(!info.hex.unwrap().is_empty());
302302
}
303303

304+
#[allow(deprecated)]
304305
fn test_set_label(cl: &Client) {
305306
let addr = cl.get_new_address(Some("label"), None).unwrap();
306307
let info = cl.get_address_info(&addr).unwrap();
307-
assert_eq!(&info.label, "label");
308-
assert_eq!(info.labels[0].name, "label");
308+
if version() >= 0_20_00_00 {
309+
assert!(info.label.is_none());
310+
assert_eq!(info.labels[0], json::GetAddressInfoResultLabel::Simple("label".into()));
311+
} else {
312+
assert_eq!(info.label.as_ref().unwrap(), "label");
313+
assert_eq!(info.labels[0], json::GetAddressInfoResultLabel::WithPurpose {
314+
name: "label".into(),
315+
purpose: json::GetAddressInfoResultLabelPurpose::Receive,
316+
});
317+
}
309318

310319
cl.set_label(&addr, "other").unwrap();
311320
let info = cl.get_address_info(&addr).unwrap();
312-
assert_eq!(&info.label, "other");
313-
assert_eq!(info.labels[0].name, "other");
321+
if version() >= 0_20_00_00 {
322+
assert!(info.label.is_none());
323+
assert_eq!(info.labels[0], json::GetAddressInfoResultLabel::Simple("other".into()));
324+
} else {
325+
assert_eq!(info.label.as_ref().unwrap(), "other");
326+
assert_eq!(info.labels[0], json::GetAddressInfoResultLabel::WithPurpose {
327+
name: "other".into(),
328+
purpose: json::GetAddressInfoResultLabelPurpose::Receive,
329+
});
330+
}
314331
}
315332

316333
fn test_send_to_address(cl: &Client) {

json/src/lib.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,9 +646,13 @@ pub enum GetAddressInfoResultLabelPurpose {
646646
}
647647

648648
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
649-
pub struct GetAddressInfoResultLabel {
650-
pub name: String,
651-
pub purpose: GetAddressInfoResultLabelPurpose,
649+
#[serde(untagged)]
650+
pub enum GetAddressInfoResultLabel {
651+
Simple(String),
652+
WithPurpose {
653+
name: String,
654+
purpose: GetAddressInfoResultLabelPurpose,
655+
}
652656
}
653657

654658
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
@@ -679,13 +683,15 @@ pub struct GetAddressInfoResult {
679683
pub embedded: Option<GetAddressInfoResultEmbedded>,
680684
#[serde(rename = "is_compressed")]
681685
pub is_compressed: Option<bool>,
682-
pub label: String,
683686
pub timestamp: Option<u64>,
684687
#[serde(rename = "hdkeypath")]
685688
pub hd_key_path: Option<bip32::DerivationPath>,
686689
#[serde(rename = "hdseedid")]
687690
pub hd_seed_id: Option<bitcoin::XpubIdentifier>,
688691
pub labels: Vec<GetAddressInfoResultLabel>,
692+
/// Deprecated in v0.20.0. See `labels` field instead.
693+
#[deprecated(note = "since Core v0.20.0")]
694+
pub label: Option<String>,
689695
}
690696

691697
/// Models the result of "getblockchaininfo"

0 commit comments

Comments
 (0)