diff --git a/src/api.rs b/src/api.rs
index eae5ac144a..e9cee4730d 100644
--- a/src/api.rs
+++ b/src/api.rs
@@ -151,13 +151,23 @@ pub struct Inscriptions {
pub page_index: u32,
}
+#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
+pub struct OutputRecursive {
+ pub address: Option
>,
+ pub inscriptions: Option>,
+ pub runes: Option>,
+ pub sat_ranges: Option>,
+ pub script_pubkey: ScriptBuf,
+ pub value: u64,
+}
+
#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct Output {
pub address: Option>,
pub indexed: bool,
- pub inscriptions: Vec,
+ pub inscriptions: Option>,
pub outpoint: OutPoint,
- pub runes: BTreeMap,
+ pub runes: Option>,
pub sat_ranges: Option>,
pub script_pubkey: ScriptBuf,
pub spent: bool,
diff --git a/src/subcommand/server.rs b/src/subcommand/server.rs
index 7cfb5705d1..bd79a21f6c 100644
--- a/src/subcommand/server.rs
+++ b/src/subcommand/server.rs
@@ -667,10 +667,10 @@ impl Server {
) -> ServerResult {
let accept_json = AcceptJson(true);
Self::output(
- Extension(server_config),
- Extension(index),
- Path(outpoint),
- accept_json,
+ Extension(server_config),
+ Extension(index),
+ Path(outpoint),
+ accept_json,
)
.await
}
@@ -6343,42 +6343,40 @@ next
#[test]
fn output_recursive_endpoint() {
- let server = TestServer::builder().chain(Chain::Regtest).build();
-
- server.mine_blocks(1);
-
- let inscription = Inscription {
- content_type: Some("text/plain".into()),
- body: Some("foo".into()),
- ..default()
- };
-
- let txid = server.core.broadcast_tx(TransactionTemplate {
- inputs: &[(1, 0, 0, inscription.to_witness())],
- ..default()
- });
-
- server.mine_blocks(1);
-
- let inscription_id = InscriptionId { txid, index: 0 };
- let outpoint: OutPoint = OutPoint { txid, vout: 0 };
-
- let output_response = server.get_json::(
- format!("/r/output/{}", outpoint)
- );
-
- assert_eq!(output_response.outpoint, outpoint);
- assert!(!output_response.spent);
- assert!(output_response.indexed);
- assert_eq!(output_response.inscriptions, vec![inscription_id]);
- assert!(output_response.address.is_some());
- assert!(!output_response.script_pubkey.is_empty());
- assert_eq!(output_response.transaction, txid);
- assert!(output_response.value > 0);
- assert!(output_response.runes.is_empty());
- if let Some(sat_ranges) = &output_response.sat_ranges {
- assert!(!sat_ranges.is_empty());
- }
+ let server = TestServer::builder().chain(Chain::Regtest).build();
+
+ server.mine_blocks(1);
+
+ let inscription = Inscription {
+ content_type: Some("text/plain".into()),
+ body: Some("foo".into()),
+ ..default()
+ };
+
+ let txid = server.core.broadcast_tx(TransactionTemplate {
+ inputs: &[(1, 0, 0, inscription.to_witness())],
+ ..default()
+ });
+
+ server.mine_blocks(1);
+
+ let inscription_id = InscriptionId { txid, index: 0 };
+ let outpoint: OutPoint = OutPoint { txid, vout: 0 };
+
+ let output_response = server.get_json::(format!("/r/output/{}", outpoint));
+
+ assert_eq!(output_response.outpoint, outpoint);
+ assert!(!output_response.spent);
+ assert!(output_response.indexed);
+ assert_eq!(output_response.inscriptions, vec![inscription_id]);
+ assert!(output_response.address.is_some());
+ assert!(!output_response.script_pubkey.is_empty());
+ assert_eq!(output_response.transaction, txid);
+ assert!(output_response.value > 0);
+ assert!(output_response.runes.is_empty());
+ if let Some(sat_ranges) = &output_response.sat_ranges {
+ assert!(!sat_ranges.is_empty());
+ }
}
#[test]