substrate_stellar_sdk/xdr/impls/operations/
manage_data.rs

1use core::convert::AsRef;
2
3use crate::{
4    compound_types::LimitedString,
5    types::{ManageDataOp, OperationBody},
6    IntoDataValue, Operation, StellarSdkError,
7};
8
9impl Operation {
10    pub fn new_manage_data_put<T: AsRef<[u8]>, S: IntoDataValue>(
11        data_name: T,
12        data_value: S,
13    ) -> Result<Operation, StellarSdkError> {
14        let data_name = data_name.as_ref().to_vec();
15
16        Ok(Operation {
17            source_account: None,
18            body: OperationBody::ManageData(ManageDataOp {
19                data_name: LimitedString::new(data_name)?,
20                data_value: Some(data_value.into_data_value()?),
21            }),
22        })
23    }
24
25    pub fn new_manage_data_delete<T: AsRef<[u8]>>(data_name: T) -> Result<Operation, StellarSdkError> {
26        let data_name = data_name.as_ref().to_vec();
27
28        Ok(Operation {
29            source_account: None,
30            body: OperationBody::ManageData(ManageDataOp {
31                data_name: LimitedString::new(data_name)?,
32                data_value: None,
33            }),
34        })
35    }
36}