canic_core/api/rpc/
mod.rs1mod capability;
2
3use crate::{
4 cdk::{candid::CandidType, types::Principal},
5 dto::{
6 capability::{
7 NonrootCyclesCapabilityEnvelopeV1, NonrootCyclesCapabilityResponseV1,
8 RootCapabilityEnvelopeV1, RootCapabilityResponseV1,
9 },
10 error::Error,
11 rpc::{
12 CreateCanisterParent, CreateCanisterResponse, CyclesResponse, UpgradeCanisterResponse,
13 },
14 },
15 ids::CanisterRole,
16 workflow::rpc::request::RpcRequestWorkflow,
17};
18
19pub struct RpcApi;
39
40impl RpcApi {
41 pub async fn response_capability_v1_root(
43 envelope: RootCapabilityEnvelopeV1,
44 ) -> Result<RootCapabilityResponseV1, Error> {
45 capability::response_capability_v1_root(envelope).await
46 }
47
48 pub async fn response_capability_v1_nonroot(
50 envelope: NonrootCyclesCapabilityEnvelopeV1,
51 ) -> Result<NonrootCyclesCapabilityResponseV1, Error> {
52 capability::response_capability_v1_nonroot(envelope).await
53 }
54
55 pub async fn create_canister_request<A>(
56 canister_role: &CanisterRole,
57 parent: CreateCanisterParent,
58 extra: Option<A>,
59 ) -> Result<CreateCanisterResponse, Error>
60 where
61 A: CandidType + Send + Sync,
62 {
63 RpcRequestWorkflow::create_canister_request(canister_role, parent, extra)
64 .await
65 .map_err(Error::from)
66 }
67
68 pub async fn upgrade_canister_request(
69 canister_pid: Principal,
70 ) -> Result<UpgradeCanisterResponse, Error> {
71 RpcRequestWorkflow::upgrade_canister_request(canister_pid)
72 .await
73 .map_err(Error::from)
74 }
75
76 pub async fn request_cycles(cycles: u128) -> Result<CyclesResponse, Error> {
77 RpcRequestWorkflow::request_cycles(cycles)
78 .await
79 .map_err(Error::from)
80 }
81
82 pub async fn response_capability_v1(
83 envelope: RootCapabilityEnvelopeV1,
84 ) -> Result<RootCapabilityResponseV1, Error> {
85 capability::response_capability_v1_root(envelope).await
86 }
87}