Skip to content

Commit 192559e

Browse files
authored
feat(ic-http-gateway): use bytes for request body (#31)
1 parent 2c5366b commit 192559e

File tree

6 files changed

+15
-10
lines changed

6 files changed

+15
-10
lines changed

examples/http-gateway/rust/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fn main() {
7171

7272
async move {
7373
let canister_request = Request::builder().uri(req.uri()).method(req.method());
74-
let collected_req = req.collect().await.unwrap().to_bytes().to_vec();
74+
let collected_req = req.collect().await.unwrap().to_bytes();
7575
let canister_request = canister_request.body(collected_req).unwrap();
7676

7777
let gateway_response = http_gateway_clone

packages/ic-http-gateway/src/protocol/handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ fn handle_agent_error(error: &AgentError) -> CanisterResponse {
457457
#[cfg(test)]
458458
mod tests {
459459
use super::*;
460+
use bytes::Bytes;
460461
use http::Request;
461462

462463
#[test]
@@ -465,7 +466,7 @@ mod tests {
465466
.uri("http://example.com/foo/bar/baz?q=hello+world&t=1")
466467
.header("Accept", "text/html")
467468
.header("Accept-Encoding", "gzip, deflate, br, zstd")
468-
.body(b"body".to_vec())
469+
.body(Bytes::from("body"))
469470
.unwrap();
470471

471472
let http_request = convert_request(request).unwrap();

packages/ic-http-gateway/src/request/http_gateway_request_builder.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::{protocol::process_request, HttpGatewayResponse};
2+
use bytes::Bytes;
23
use candid::Principal;
34
use http::Request;
45
use ic_agent::Agent;
@@ -11,7 +12,7 @@ pub struct HttpGatewayRequestArgs {
1112
pub canister_id: Principal,
1213
}
1314

14-
pub type CanisterRequest = Request<Vec<u8>>;
15+
pub type CanisterRequest = Request<Bytes>;
1516

1617
pub struct HttpGatewayRequestBuilderArgs<'a> {
1718
pub request_args: HttpGatewayRequestArgs,

packages/ic-http-gateway/tests/custom_assets.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use bytes::Bytes;
12
use http::Request;
23
use http_body_util::BodyExt;
34
use ic_agent::Agent;
@@ -36,7 +37,7 @@ fn test_custom_assets_index_html() {
3637
http_gateway
3738
.request(HttpGatewayRequestArgs {
3839
canister_id,
39-
canister_request: Request::builder().uri("/").body(vec![]).unwrap(),
40+
canister_request: Request::builder().uri("/").body(Bytes::new()).unwrap(),
4041
})
4142
.send()
4243
.await

packages/ic-http-gateway/tests/protocol_error_tests.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use bytes::Bytes;
12
use http::{status::StatusCode, Request};
23
use ic_agent::{export::Principal, Agent};
34
use ic_http_gateway::{HttpGatewayClient, HttpGatewayRequestArgs};
@@ -71,7 +72,7 @@ async fn test_rate_limiting_error() -> Result<(), Box<dyn std::error::Error>> {
7172
let canister_request = Request::builder()
7273
.uri("/example")
7374
.method("GET")
74-
.body(Vec::<u8>::new())
75+
.body(Bytes::new())
7576
.unwrap();
7677

7778
let gateway_response = http_gateway

packages/ic-http-gateway/tests/range_request_stream.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use assert_matches::assert_matches;
2+
use bytes::Bytes;
23
use http::Request;
34
use http_body_util::BodyExt;
45
use ic_agent::hash_tree::Hash;
@@ -83,7 +84,7 @@ fn test_long_asset_request_yields_entire_asset(#[case] asset_name: &str) {
8384
canister_id,
8485
canister_request: Request::builder()
8586
.uri(format!("/{asset_name}"))
86-
.body(vec![])
87+
.body(Bytes::new())
8788
.unwrap(),
8889
})
8990
.send()
@@ -202,7 +203,7 @@ fn test_corrupted_long_asset_request_fails(
202203
corrupted_chunk_index.to_string(),
203204
)
204205
.uri(format!("/{asset_name}"))
205-
.body(vec![])
206+
.body(Bytes::new())
206207
.unwrap(),
207208
})
208209
.send()
@@ -272,7 +273,7 @@ fn test_long_asset_with_chunks_out_of_order_fails(
272273
canister_request: Request::builder()
273274
.header("Test-SwapChunkAtIndexWithNext", chunk_to_swap.to_string())
274275
.uri(format!("/{asset_name}"))
275-
.body(vec![])
276+
.body(Bytes::new())
276277
.unwrap(),
277278
})
278279
.send()
@@ -348,7 +349,7 @@ fn test_corrupted_chunk_certificate_for_long_asset_request_fails(
348349
corrupted_chunk_index.to_string(),
349350
)
350351
.uri(format!("/{asset_name}"))
351-
.body(vec![])
352+
.body(Bytes::new())
352353
.unwrap(),
353354
})
354355
.send()
@@ -413,7 +414,7 @@ fn test_range_request_yields_range_response(#[case] asset_name: &str) {
413414
canister_request: Request::builder()
414415
.uri(format!("/{asset_name}"))
415416
.header("Range", format!("bytes={}-", ASSET_CHUNK_SIZE))
416-
.body(vec![])
417+
.body(Bytes::new())
417418
.unwrap(),
418419
})
419420
.send()

0 commit comments

Comments
 (0)