Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 57 additions & 20 deletions canister/src/rpc_client/json/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@ pub struct GetSlotParams(Option<GetSlotConfig>);

impl From<sol_rpc_types::GetSlotParams> for GetSlotParams {
fn from(params: sol_rpc_types::GetSlotParams) -> Self {
let config = if params.is_default_config() {
let sol_rpc_types::GetSlotParams {
commitment,
min_context_slot,
} = params;
let config = if commitment.is_none() && min_context_slot.is_none() {
None
} else {
Some(GetSlotConfig {
commitment: params.commitment,
min_context_slot: params.min_context_slot,
commitment,
min_context_slot,
})
};
Self(config)
Expand Down Expand Up @@ -48,17 +52,28 @@ pub struct GetAccountInfoParams(String, Option<GetAccountInfoConfig>);

impl From<sol_rpc_types::GetAccountInfoParams> for GetAccountInfoParams {
fn from(params: sol_rpc_types::GetAccountInfoParams) -> Self {
let config = if params.is_default_config() {
let sol_rpc_types::GetAccountInfoParams {
pubkey,
commitment,
encoding,
data_slice,
min_context_slot,
} = params;
let config = if commitment.is_none()
&& encoding.is_none()
&& data_slice.is_none()
&& min_context_slot.is_none()
{
None
} else {
Some(GetAccountInfoConfig {
commitment: params.commitment,
encoding: params.encoding,
data_slice: params.data_slice,
min_context_slot: params.min_context_slot,
commitment,
encoding,
data_slice,
min_context_slot,
})
};
Self(params.pubkey.to_string(), config)
Self(pubkey.to_string(), config)
}
}

Expand Down Expand Up @@ -316,16 +331,25 @@ pub struct GetTransactionParams(String, Option<GetTransactionConfig>);

impl From<sol_rpc_types::GetTransactionParams> for GetTransactionParams {
fn from(params: sol_rpc_types::GetTransactionParams) -> Self {
let config = if params.is_default_config() {
let sol_rpc_types::GetTransactionParams {
signature,
commitment,
max_supported_transaction_version,
encoding,
} = params;
let config = if commitment.is_none()
&& max_supported_transaction_version.is_none()
&& encoding.is_none()
{
None
} else {
Some(GetTransactionConfig {
commitment: params.commitment,
max_supported_transaction_version: params.max_supported_transaction_version,
encoding: params.encoding,
commitment,
max_supported_transaction_version,
encoding,
})
};
Self(params.signature.to_string(), config)
Self(signature.to_string(), config)
}
}

Expand All @@ -352,15 +376,28 @@ pub struct SendTransactionParams(String, Option<SendTransactionConfig>);
impl From<sol_rpc_types::SendTransactionParams> for SendTransactionParams {
fn from(params: sol_rpc_types::SendTransactionParams) -> Self {
let transaction = params.get_transaction().to_string();
let config = if params.is_default_config() {
let encoding = params.get_encoding().cloned();
let sol_rpc_types::SendTransactionParams {
skip_preflight,
preflight_commitment,
max_retries,
min_context_slot,
..
} = params;
let config = if encoding.is_none()
&& skip_preflight.is_none()
&& preflight_commitment.is_none()
&& max_retries.is_none()
&& min_context_slot.is_none()
{
None
} else {
Some(SendTransactionConfig {
encoding: params.get_encoding().cloned(),
skip_preflight: params.skip_preflight,
preflight_commitment: params.preflight_commitment,
max_retries: params.max_retries,
min_context_slot: params.min_context_slot,
encoding,
skip_preflight,
preflight_commitment,
max_retries,
min_context_slot,
})
};
Self(transaction, config)
Expand Down
71 changes: 0 additions & 71 deletions libs/types/src/solana/request/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,6 @@ pub struct GetAccountInfoParams {
}

impl GetAccountInfoParams {
/// Returns `true` if all of the optional config parameters are `None` and `false` otherwise.
pub fn is_default_config(&self) -> bool {
let GetAccountInfoParams {
pubkey: _,
commitment,
encoding,
data_slice,
min_context_slot,
} = &self;
commitment.is_none()
&& encoding.is_none()
&& data_slice.is_none()
&& min_context_slot.is_none()
}

/// Parameters for a `getAccountInfo` request with the given pubkey.
pub fn from_pubkey<P: Into<Pubkey>>(pubkey: P) -> Self {
Self {
Expand Down Expand Up @@ -140,21 +125,6 @@ pub struct GetBlockParams {
pub transaction_details: Option<TransactionDetails>,
}

impl GetBlockParams {
/// Returns `true` if all of the optional config parameters are `None` and `false` otherwise.
pub fn is_default_config(&self) -> bool {
let GetBlockParams {
slot: _,
commitment,
max_supported_transaction_version,
transaction_details,
} = &self;
commitment.is_none()
&& max_supported_transaction_version.is_none()
&& transaction_details.is_none()
}
}

impl From<Slot> for GetBlockParams {
fn from(slot: Slot) -> Self {
Self {
Expand Down Expand Up @@ -325,17 +295,6 @@ pub struct GetSlotParams {
pub min_context_slot: Option<Slot>,
}

impl GetSlotParams {
/// Returns `true` if all of the optional config parameters are `None` and `false` otherwise.
pub fn is_default_config(&self) -> bool {
let GetSlotParams {
commitment,
min_context_slot,
} = &self;
commitment.is_none() && min_context_slot.is_none()
}
}

/// The parameters for a Solana [`getTokenAccountBalance`](https://solana.com/docs/rpc/http/gettokenaccountbalance) RPC method call.
#[derive(Clone, Debug, PartialEq, CandidType, Deserialize, Serialize)]
pub struct GetTokenAccountBalanceParams {
Expand Down Expand Up @@ -380,19 +339,6 @@ pub struct GetTransactionParams {
pub encoding: Option<GetTransactionEncoding>,
}

impl GetTransactionParams {
/// Returns `true` if all of the optional config parameters are `None` and `false` otherwise.
pub fn is_default_config(&self) -> bool {
let GetTransactionParams {
signature: _,
commitment,
max_supported_transaction_version,
encoding,
} = &self;
commitment.is_none() && max_supported_transaction_version.is_none() && encoding.is_none()
}
}

impl From<solana_signature::Signature> for GetTransactionParams {
fn from(signature: solana_signature::Signature) -> Self {
Self {
Expand Down Expand Up @@ -457,23 +403,6 @@ impl SendTransactionParams {
}
}

/// Returns `true` if all of the optional config parameters are `None` and `false` otherwise.
pub fn is_default_config(&self) -> bool {
let SendTransactionParams {
transaction: _,
encoding,
skip_preflight,
preflight_commitment,
max_retries,
min_context_slot,
} = &self;
encoding.is_none()
&& skip_preflight.is_none()
&& preflight_commitment.is_none()
&& max_retries.is_none()
&& min_context_slot.is_none()
}

/// The transaction being sent as an encoded string.
pub fn get_transaction(&self) -> &str {
&self.transaction
Expand Down