Skip to content

Commit 7fbe257

Browse files
feat(cast): get logs (#5042)
* feat(cast): get logs * use into_iter * ordered topics * less unwraps * added tests * fix: topics are ordered * reuse topic_filter instead of vecs * skipped topics * reworked pretty print * split build_filter to improve readability
1 parent 08a629a commit 7fbe257

File tree

7 files changed

+539
-3
lines changed

7 files changed

+539
-3
lines changed

cast/src/lib.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,25 @@ where
773773
) -> Result<String> {
774774
Ok(format!("{:?}", self.provider.get_storage_at(from, slot, block).await?))
775775
}
776+
777+
pub async fn filter_logs(&self, filter: Filter, to_json: bool) -> Result<String> {
778+
let logs = self.provider.get_logs(&filter).await?;
779+
780+
let res = if to_json {
781+
serde_json::to_string(&logs)?
782+
} else {
783+
let mut s = vec![];
784+
for log in logs {
785+
let pretty = log
786+
.pretty()
787+
.replacen('\n', "- ", 1) // Remove empty first line
788+
.replace('\n', "\n "); // Indent
789+
s.push(pretty);
790+
}
791+
s.join("\n")
792+
};
793+
Ok(res)
794+
}
776795
}
777796

778797
pub struct InterfaceSource {

cli/src/cast.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,7 @@ async fn main() -> eyre::Result<()> {
483483
"cast",
484484
&mut std::io::stdout(),
485485
),
486+
Subcommands::Logs(cmd) => cmd.run().await?,
486487
};
487488
Ok(())
488489
}

0 commit comments

Comments
 (0)