use ex3_node_error::OtherError;
use ex3_node_types::PublicKey;
use serde_bytes::ByteBuf;
use crate::{PayloadDecoder, Result};
impl PayloadDecoder {
pub fn decode_to_reset_main_secret(
payload: &[u8],
) -> Result<ex3_node_types::transaction::ResetMainSecret> {
let payload_str = String::from_utf8(payload.as_ref().to_vec()).expect("should success");
let hexes = payload_str.split('|').collect::<Vec<&str>>();
if hexes.len() != 2 {
return Err(OtherError::new("Invalid payload").into());
}
let encrypted_pri_key = hex::decode(hexes[0]).unwrap();
let l2_pub_key = hex::decode(hexes[1]).unwrap();
let encrypted_pri_key: ByteBuf = ByteBuf::from(encrypted_pri_key);
let l2_pub_key: PublicKey = ByteBuf::from(l2_pub_key);
let reset_main_secret_request = ex3_node_types::transaction::ResetMainSecret {
encrypted_pri_key,
l2_pub_key,
};
Ok(reset_main_secret_request)
}
pub fn decode_to_create_api_secret(
payload: &[u8],
) -> Result<ex3_node_types::transaction::CreateApiSecret> {
let create_api_secret_request =
ex3_node_types::transaction::CreateApiSecret(ByteBuf::from(payload));
Ok(create_api_secret_request)
}
pub fn decode_to_destroy_api_secret(
payload: &[u8],
) -> Result<ex3_node_types::transaction::DestroyApiSecret> {
let destroy_api_secret_request =
ex3_node_types::transaction::DestroyApiSecret(ByteBuf::from(payload));
Ok(destroy_api_secret_request)
}
}