Skip to content

Commit

Permalink
fix: P-861 return error in cli for Dynamic assertion while params dat…
Browse files Browse the repository at this point in the history
…a size exceed the maximum params size (#2823)

Co-authored-by: higherordertech <higherordertech>
  • Loading branch information
higherordertech committed Jun 18, 2024
1 parent 11d40f9 commit f2359af
Showing 1 changed file with 47 additions and 40 deletions.
87 changes: 47 additions & 40 deletions tee-worker/cli/src/trusted_base_cli/commands/litentry/request_vc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use crate::{
trusted_cli::TrustedCli,
trusted_command_utils::{get_identifiers, get_pair_from_str},
trusted_operation::{perform_trusted_operation, send_direct_vc_request},
Cli, CliResult, CliResultOk,
Cli, CliError, CliResult, CliResultOk,
};
use clap::Parser;
use codec::Decode;
Expand Down Expand Up @@ -380,7 +380,7 @@ impl RequestVcCommand {
s.extend(a.as_str().split(' '));
AssertionCommand::parse_from(s).command.to_assertion()
})
.collect();
.collect::<Result<Vec<_>, _>>()?;

println!(">>> assertions: {:?}", assertions);

Expand Down Expand Up @@ -454,28 +454,28 @@ impl RequestVcCommand {

impl Command {
// helper fn to convert a `Command` to `Assertion`
pub fn to_assertion(&self) -> Assertion {
pub fn to_assertion(&self) -> Result<Assertion, CliError> {
use Assertion::*;
match self {
Command::A1 => A1,
Command::A2(arg) => A2(to_para_str(&arg.guild_id)),
Command::A3(arg) => A3(
Command::A1 => Ok(A1),
Command::A2(arg) => Ok(A2(to_para_str(&arg.guild_id))),
Command::A3(arg) => Ok(A3(
to_para_str(&arg.guild_id),
to_para_str(&arg.channel_id),
to_para_str(&arg.role_id),
),
Command::A4(arg) => A4(to_para_str(&arg.minimum_amount)),
Command::A6 => A6,
Command::A7(arg) => A7(to_para_str(&arg.minimum_amount)),
Command::A8(arg) => A8(to_chains(&arg.networks)),
Command::A10(arg) => A10(to_para_str(&arg.minimum_amount)),
Command::A11(arg) => A11(to_para_str(&arg.minimum_amount)),
)),
Command::A4(arg) => Ok(A4(to_para_str(&arg.minimum_amount))),
Command::A6 => Ok(A6),
Command::A7(arg) => Ok(A7(to_para_str(&arg.minimum_amount))),
Command::A8(arg) => Ok(A8(to_chains(&arg.networks))),
Command::A10(arg) => Ok(A10(to_para_str(&arg.minimum_amount))),
Command::A11(arg) => Ok(A11(to_para_str(&arg.minimum_amount))),
Command::A13(arg) => {
let raw: [u8; 32] = decode_hex(&arg.account).unwrap().try_into().unwrap();
A13(raw.into())
Ok(A13(raw.into()))
},
Command::A14 => A14,
Command::Achainable(c) => match c {
Command::A14 => Ok(A14),
Command::Achainable(c) => Ok(match c {
AchainableCommand::AmountHolding(arg) =>
Achainable(AchainableParams::AmountHolding(AchainableAmountHolding {
name: to_para_str(&arg.name),
Expand Down Expand Up @@ -548,14 +548,14 @@ impl Command {
chain: to_chains(&arg.chain),
token: to_para_str(&arg.token),
})),
},
Command::A20 => A20,
Command::OneBlock(c) => match c {
}),
Command::A20 => Ok(A20),
Command::OneBlock(c) => Ok(match c {
OneblockCommand::Completion => OneBlock(OneBlockCourseType::CourseCompletion),
OneblockCommand::Outstanding => OneBlock(OneBlockCourseType::CourseOutstanding),
OneblockCommand::Participation => OneBlock(OneBlockCourseType::CourseParticipation),
},
Command::GenericDiscordRole(c) => match c {
}),
Command::GenericDiscordRole(c) => Ok(match c {
GenericDiscordRoleCommand::Contest(s) => match s {
ContestCommand::Legend =>
GenericDiscordRole(GenericDiscordRoleType::Contest(ContestType::Legend)),
Expand All @@ -571,29 +571,29 @@ impl Command {
SoraQuizCommand::Master =>
GenericDiscordRole(GenericDiscordRoleType::SoraQuiz(SoraQuizType::Master)),
},
},
Command::BnbDomainHolding => BnbDomainHolding,
Command::BnbDigitalDomainClub(c) => match c {
}),
Command::BnbDomainHolding => Ok(BnbDomainHolding),
Command::BnbDigitalDomainClub(c) => Ok(match c {
BnbDigitalDomainClubCommand::Bnb999ClubMember =>
BnbDigitDomainClub(BnbDigitDomainType::Bnb999ClubMember),
BnbDigitalDomainClubCommand::Bnb10kClubMember =>
BnbDigitDomainClub(BnbDigitDomainType::Bnb10kClubMember),
},
Command::VIP3MembershipCard(arg) => match arg {
}),
Command::VIP3MembershipCard(arg) => Ok(match arg {
VIP3MembershipCardLevelCommand::Gold =>
VIP3MembershipCard(VIP3MembershipCardLevel::Gold),
VIP3MembershipCardLevelCommand::Silver =>
VIP3MembershipCard(VIP3MembershipCardLevel::Silver),
},
Command::WeirdoGhostGangHolder => WeirdoGhostGangHolder,
Command::EVMAmountHolding(c) => match c {
}),
Command::WeirdoGhostGangHolder => Ok(WeirdoGhostGangHolder),
Command::EVMAmountHolding(c) => Ok(match c {
EVMAmountHoldingCommand::Ton => EVMAmountHolding(EVMTokenType::Ton),
EVMAmountHoldingCommand::Trx => EVMAmountHolding(EVMTokenType::Trx),
},
Command::CryptoSummary => CryptoSummary,
Command::LITStaking => LITStaking,
Command::BRC20AmountHolder => BRC20AmountHolder,
Command::TokenHoldingAmount(arg) => match arg {
}),
Command::CryptoSummary => Ok(CryptoSummary),
Command::LITStaking => Ok(LITStaking),
Command::BRC20AmountHolder => Ok(BRC20AmountHolder),
Command::TokenHoldingAmount(arg) => Ok(match arg {
TokenHoldingAmountCommand::Bnb => TokenHoldingAmount(Web3TokenType::Bnb),
TokenHoldingAmountCommand::Eth => TokenHoldingAmount(Web3TokenType::Eth),
TokenHoldingAmountCommand::SpaceId => TokenHoldingAmount(Web3TokenType::SpaceId),
Expand Down Expand Up @@ -621,16 +621,16 @@ impl Command {
TokenHoldingAmountCommand::Mcrt => TokenHoldingAmount(Web3TokenType::Mcrt),
TokenHoldingAmountCommand::Btc => TokenHoldingAmount(Web3TokenType::Btc),
TokenHoldingAmountCommand::Bean => TokenHoldingAmount(Web3TokenType::Bean),
},
Command::PlatformUser(arg) => match arg {
}),
Command::PlatformUser(arg) => Ok(match arg {
PlatformUserCommand::KaratDaoUser => PlatformUser(PlatformUserType::KaratDaoUser),
PlatformUserCommand::MagicCraftStakingUser =>
PlatformUser(PlatformUserType::MagicCraftStakingUser),
},
Command::NftHolder(arg) => match arg {
}),
Command::NftHolder(arg) => Ok(match arg {
NftHolderCommand::WeirdoGhostGang => NftHolder(Web3NftType::WeirdoGhostGang),
NftHolderCommand::Club3Sbt => NftHolder(Web3NftType::Club3Sbt),
},
}),
Command::Dynamic(arg) => {
let decoded_id = hex::decode(&arg.smart_contract_id.clone()).unwrap();
let id_bytes: [u8; 20] = decoded_id.try_into().unwrap();
Expand All @@ -643,8 +643,15 @@ impl Command {
"The dynamic params length {} is over the maximum value {}",
params_len, truncated_params_len
);
Err(CliError::Extrinsic {
msg: format!(
"The dynamic params length {} is over the maximum value {}",
params_len, truncated_params_len
),
})
} else {
Ok(Assertion::Dynamic(H160::from(id_bytes), truncated_params))
}
Assertion::Dynamic(H160::from(id_bytes), truncated_params)
},
}
}
Expand Down

0 comments on commit f2359af

Please sign in to comment.