Struct ic_agent::agent::Agent [−][src]
pub struct Agent { /* fields omitted */ }A low level Agent to make calls to a Replica endpoint.
use ic_agent::Agent; use ic_types::Principal; use candid::{Encode, Decode, CandidType, Nat}; use serde::Deserialize; #[derive(CandidType)] struct Argument { amount: Option<Nat>, } #[derive(CandidType, Deserialize)] struct CreateCanisterResult { canister_id: candid::Principal, } async fn create_a_canister() -> Result<Principal, Box<dyn std::error::Error>> { let agent = Agent::builder() .with_url(URL) .with_identity(create_identity()) .build()?; agent.fetch_root_key().await?; let management_canister_id = Principal::from_text("aaaaa-aa")?; let waiter = delay::Delay::builder() .throttle(std::time::Duration::from_millis(500)) .timeout(std::time::Duration::from_secs(60 * 5)) .build(); // Create a call to the management canister to create a new canister ID, // and wait for a result. let response = agent.update(&management_canister_id, "provisional_create_canister_with_cycles") .with_arg(&Encode!(&Argument { amount: None })?) .call_and_wait(waiter) .await?; let result = Decode!(response.as_slice(), CreateCanisterResult)?; let canister_id: Principal = Principal::from_text(&result.canister_id.to_text())?; Ok(canister_id) } let canister_id = create_a_canister().await.unwrap(); eprintln!("{}", canister_id);
This agent does not understand Candid, and only acts on byte buffers.
Implementations
impl Agent[src]
impl Agent[src]pub fn builder() -> AgentBuilder[src]
pub fn builder() -> AgentBuilder[src]Create an instance of an AgentBuilder for building an Agent. This is simpler than
using the AgentConfig and Agent::new().
pub fn new(config: AgentConfig) -> Result<Agent, AgentError>[src]
pub fn new(config: AgentConfig) -> Result<Agent, AgentError>[src]Create an instance of an Agent.
pub fn set_transport<F: 'static + ReplicaV2Transport + Send + Sync>(
&mut self,
transport: F
)[src]
pub fn set_transport<F: 'static + ReplicaV2Transport + Send + Sync>(
&mut self,
transport: F
)[src]Set the transport of the Agent.
pub async fn fetch_root_key(&self) -> Result<(), AgentError>[src]
pub async fn fetch_root_key(&self) -> Result<(), AgentError>[src]By default, the agent is configured to talk to the main Internet Computer, and verifies responses using a hard-coded public key.
This function will instruct the agent to ask the endpoint for its public key, and use that instead. This is required when talking to a local test instance, for example.
Only use this when you are not talking to the main Internet Computer, otherwise you are prone to man-in-the-middle attacks! Do not call this function by default.
pub async fn read_state_canister_info(
&self,
canister_id: Principal,
path: &str
) -> Result<Vec<u8>, AgentError>[src]
&self,
canister_id: Principal,
path: &str
) -> Result<Vec<u8>, AgentError>
pub async fn request_status_raw(
&self,
request_id: &RequestId,
effective_canister_id: Principal
) -> Result<RequestStatusResponse, AgentError>[src]
&self,
request_id: &RequestId,
effective_canister_id: Principal
) -> Result<RequestStatusResponse, AgentError>
pub fn update<S: Into<String>>(
&self,
canister_id: &Principal,
method_name: S
) -> UpdateBuilder<'_>[src]
pub fn update<S: Into<String>>(
&self,
canister_id: &Principal,
method_name: S
) -> UpdateBuilder<'_>[src]Returns an UpdateBuilder enabling the construction of an update call without passing all arguments.
pub async fn status(&self) -> Result<Status, AgentError>[src]
pub async fn status(&self) -> Result<Status, AgentError>[src]Calls and returns the information returned by the status endpoint of a replica.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Agent
impl Send for Agent
impl Sync for Agent
impl Unpin for Agent
impl !UnwindSafe for Agent
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> Instrument for T[src]
impl<T> Instrument for T[src]fn instrument(self, span: Span) -> Instrumented<Self>[src]
fn instrument(self, span: Span) -> Instrumented<Self>[src]Instruments this type with the provided Span, returning an
Instrumented wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>[src]
fn in_current_span(self) -> Instrumented<Self>[src]impl<T> Same<T> for T
impl<T> Same<T> for Ttype Output = T
type Output = TShould always be Self
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,