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
611 changes: 552 additions & 59 deletions Cargo.lock

Large diffs are not rendered by default.

11 changes: 6 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,17 @@ readme = "README.md"
[workspace.dependencies]
assert_matches = "1.5.0"
async-trait = "0.1.89"
candid = { version = "0.10.24" }
candid = { version = "0.10.26" }
canhttp = { version = "0.5.2", path = "canhttp" }
ciborium = "0.2.2"
derive_more = { version = "2.1.1", features = ["from", "try_unwrap", "unwrap"] }
futures-channel = "0.3.32"
futures-util = "0.3.32"
http = "1.4.0"
ic-agent = "0.45.0"
ic-agent = "0.46.2"
ic-canister-runtime = { version = "0.2.1", path = "ic-canister-runtime" }
ic-cdk = "0.19.0"
ic-cdk = "0.20.0"
ic-cdk-management-canister = "0.1.1"
ic-error-types = "0.2"
ic-management-canister-types = "0.5.0"
ic-pocket-canister-runtime = { path = "ic-pocket-canister-runtime" }
Expand All @@ -50,11 +51,11 @@ sha2 = "0.10.9"
strum = { version = "0.28.0", features = ["derive"] }
test_fixtures = { path = "test_fixtures" }
thiserror = "2.0.18"
tokio = "1.49.0"
tokio = "1.50.0"
tower = "0.5.3"
tower-layer = "0.3.3"
url = "2.5.8"
uuid = "1.21.0"
uuid = "1.22.0"

[profile.release]
debug = false
Expand Down
1 change: 1 addition & 0 deletions canhttp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ futures-channel = { workspace = true, optional = true }
futures-util = { workspace = true }
http = { workspace = true, optional = true }
ic-cdk = { workspace = true }
ic-cdk-management-canister = { workspace = true }
ic-error-types = { workspace = true }
itertools = { workspace = true }
num-traits = { workspace = true, optional = true }
Expand Down
8 changes: 4 additions & 4 deletions canhttp/src/client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ mod tests;

use crate::{convert::ConvertError, ConvertServiceBuilder};
use ic_cdk::call::Error as IcCdkError;
use ic_cdk::management_canister::{
use ic_cdk_management_canister::{
HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse, TransformContext,
};
use ic_error_types::RejectCode;
Expand All @@ -16,7 +16,7 @@ use thiserror::Error;
use tower::{BoxError, Service, ServiceBuilder};
use tower_layer::Layer;

/// Thin wrapper around [`ic_cdk::management_canister::http_request`] that implements the
/// Thin wrapper around [`ic_cdk_management_canister::http_request`] that implements the
/// [`tower::Service`] trait. Its functionality can be extended by composing so-called
/// [tower middlewares](https://docs.rs/tower/latest/tower/#usage).
///
Expand Down Expand Up @@ -107,14 +107,14 @@ impl Service<IcHttpRequest> for Client {
}
IcCdkError::CandidDecodeFailed(e) => {
// This can only happen if there is a bug in the CDK in the implementation
// of `ic_cdk::management_canister::http_request`.
// of `ic_cdk_management_canister::http_request`.
panic!("Candid decode failed while performing HTTP outcall: {e}");
}
}
}

Box::pin(async move {
ic_cdk::management_canister::http_request(&request)
ic_cdk_management_canister::http_request(&request)
.await
.map_err(convert_error)
})
Expand Down
6 changes: 3 additions & 3 deletions canhttp/src/cycles/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ use crate::{
convert::{ConvertRequestLayer, Filter},
ConvertServiceBuilder,
};
use ic_cdk::management_canister::HttpRequestArgs;
use ic_cdk_management_canister::HttpRequestArgs;
use std::convert::Infallible;
use thiserror::Error;
use tower::ServiceBuilder;
Expand Down Expand Up @@ -152,7 +152,7 @@ pub enum ChargeCallerError {
}

/// A middleware to handle cycles accounting, i.e. verify if sufficiently many cycles are available in a request.
/// The cost of sending the request is calculated by [`ic_cdk::api::cost_http_request`].
/// The cost of sending the request is calculated by [`ic_cdk_management_canister::cost_http_request`].
#[derive(Clone, Debug)]
pub struct CyclesAccounting<ChargingPolicy> {
charging_policy: ChargingPolicy,
Expand All @@ -172,7 +172,7 @@ where
type Error = ChargingPolicy::Error;

fn filter(&mut self, request: HttpRequestArgs) -> Result<HttpRequestArgs, Self::Error> {
let cycles_to_attach = ic_cdk::management_canister::cost_http_request(&request);
let cycles_to_attach = ic_cdk_management_canister::cost_http_request(&request);
self.charging_policy
.charge_cycles(&request, cycles_to_attach)?;
Ok(request)
Expand Down
6 changes: 3 additions & 3 deletions canhttp/src/http/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
//!
//! ```rust
//! use canhttp::{http::{HttpConversionLayer }, MaxResponseBytesRequestExtension};
//! use ic_cdk::management_canister::{HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse};
//! use ic_cdk_management_canister::{HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse};
//! use tower::{Service, ServiceBuilder, ServiceExt, BoxError};
//!
//! async fn always_200_ok(request: IcHttpRequest) -> Result<IcHttpResponse, BoxError> {
Expand Down Expand Up @@ -59,8 +59,8 @@
//! # }
//! ```
//!
//! [`IcHttpRequest`]: ic_cdk::management_canister::HttpRequestArgs
//! [`IcHttpResponse`]: ic_cdk::management_canister::HttpRequestResult
//! [`IcHttpRequest`]: ic_cdk_management_canister::HttpRequestArgs
//! [`IcHttpResponse`]: ic_cdk_management_canister::HttpRequestResult

#[cfg(test)]
mod tests;
Expand Down
2 changes: 1 addition & 1 deletion canhttp/src/http/request.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use crate::{
IsReplicatedRequestExtension, MaxResponseBytesRequestExtension,
TransformContextRequestExtension,
};
use ic_cdk::management_canister::{
use ic_cdk_management_canister::{
HttpHeader as IcHttpHeader, HttpMethod as IcHttpMethod, HttpRequestArgs as IcHttpRequest,
TransformContext,
};
Expand Down
4 changes: 2 additions & 2 deletions canhttp/src/http/response.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::convert::{Convert, Filter};
use ic_cdk::management_canister::HttpRequestResult as IcHttpResponse;
use ic_cdk_management_canister::HttpRequestResult as IcHttpResponse;
use thiserror::Error;

/// HTTP response with a body made of bytes.
Expand Down Expand Up @@ -40,7 +40,7 @@ impl Convert<IcHttpResponse> for HttpResponseConverter {

fn try_convert(&mut self, response: IcHttpResponse) -> Result<Self::Output, Self::Error> {
use http::{HeaderMap, HeaderName, HeaderValue, StatusCode};
use ic_cdk::management_canister::HttpHeader as IcHttpHeader;
use ic_cdk_management_canister::HttpHeader as IcHttpHeader;
use num_traits::ToPrimitive;

let status = response
Expand Down
2 changes: 1 addition & 1 deletion canhttp/src/http/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use crate::{
use assert_matches::assert_matches;
use candid::{Decode, Encode, Principal};
use http::StatusCode;
use ic_cdk::management_canister::{
use ic_cdk_management_canister::{
HttpHeader as IcHttpHeader, HttpMethod as IcHttpMethod, HttpRequestArgs as IcHttpRequest,
HttpRequestResult as IcHttpResponse, TransformContext, TransformFunc,
};
Expand Down
4 changes: 2 additions & 2 deletions canhttp/src/observability/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
//!
//! ```rust
//! use canhttp::{IcError, observability::ObservabilityLayer};
//! use ic_cdk::management_canister::{HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse};
//! use ic_cdk_management_canister::{HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse};
//! use tower::{Service, ServiceBuilder, ServiceExt};
//! use std::cell::RefCell;
//!
Expand Down Expand Up @@ -76,7 +76,7 @@
//! The previous example can be refined by extracting request data (such as the request URL) to observe the responses/errors:
//! ```rust
//! use canhttp::{IcError, observability::ObservabilityLayer};
//! use ic_cdk::management_canister::{HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse};
//! use ic_cdk_management_canister::{HttpRequestArgs as IcHttpRequest, HttpRequestResult as IcHttpResponse};
//! use maplit::btreemap;
//! use tower::{Service, ServiceBuilder, ServiceExt};
//! use std::cell::RefCell;
Expand Down
1 change: 1 addition & 0 deletions ic-canister-runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ wallet = ["dep:regex-lite", "dep:serde_bytes"]
async-trait = { workspace = true }
candid = { workspace = true }
ic-cdk = { workspace = true }
ic-cdk-management-canister = { workspace = true }
ic-error-types = { workspace = true }
regex-lite = { workspace = true, optional = true }
serde = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion ic-canister-runtime/src/wallet.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::{IcError, Runtime};
use async_trait::async_trait;
use candid::{decode_one, encode_args, utils::ArgumentEncoder, CandidType, Deserialize, Principal};
use ic_cdk::management_canister::CanisterId;
use ic_cdk_management_canister::CanisterId;
use ic_error_types::RejectCode;
use regex_lite::Regex;
use serde::de::DeserializeOwned;
Expand Down
Loading