metaboss_lib/
convert.rs

1use anyhow::{anyhow, Result};
2use mpl_token_metadata::types::{Creator, DataV2};
3use solana_sdk::pubkey::Pubkey;
4use std::str::FromStr;
5
6use crate::data::{NftCreator, NftData};
7
8pub fn convert_local_to_remote_data(local: NftData) -> Result<DataV2> {
9    let creators = local
10        .creators
11        .ok_or_else(|| anyhow!("No creators specified in json file!"))?
12        .iter()
13        .map(convert_creator)
14        .collect::<Result<Vec<Creator>>>()?;
15
16    let data = DataV2 {
17        name: local.name,
18        symbol: local.symbol,
19        uri: local.uri,
20        seller_fee_basis_points: local.seller_fee_basis_points,
21        creators: Some(creators),
22        collection: None,
23        uses: None,
24    };
25    Ok(data)
26}
27
28fn convert_creator(c: &NftCreator) -> Result<Creator> {
29    Ok(Creator {
30        address: Pubkey::from_str(&c.address)?,
31        verified: c.verified,
32        share: c.share,
33    })
34}