whisky_pallas/wrapper/transaction_body/
pool_metadata.rs1use std::str::FromStr;
2
3use pallas::{
4 codec::utils::Bytes,
5 ledger::primitives::{Fragment, PoolMetadata as PallasPoolMetadata},
6};
7use whisky_common::WError;
8
9pub struct PoolMetadata {
10 pub inner: PallasPoolMetadata,
11}
12
13impl PoolMetadata {
14 pub fn new(url: String, hash: String) -> Result<Self, WError> {
15 let hash_bytes = Bytes::from_str(&hash).map_err(|e| {
16 WError::new(
17 "WhiskyPallas - Creating PoolMetadata:",
18 &format!("Invalid hash hex: {}", e),
19 )
20 })?;
21 let inner = PallasPoolMetadata {
22 url,
23 hash: hash_bytes,
24 };
25 Ok(Self { inner })
26 }
27
28 pub fn encode(&self) -> Result<String, WError> {
29 let encoded_fragment = self
30 .inner
31 .encode_fragment()
32 .map_err(|e| WError::new("WhiskyPallas - PoolMetadata encode:", &e.to_string()))?;
33 Ok(hex::encode(encoded_fragment))
34 }
35
36 pub fn decode_bytes(bytes: &[u8]) -> Result<Self, WError> {
37 let inner = PallasPoolMetadata::decode_fragment(&bytes).map_err(|e| {
38 WError::new(
39 "WhiskyPallas - Creating PoolMetadata:",
40 &format!("Fragment decode error: {}", e),
41 )
42 })?;
43 Ok(Self { inner })
44 }
45}