ic_http_gateway/response/
http_gateway_response.rs1use bytes::Bytes;
2use futures::stream::BoxStream;
3use http::Response;
4use http_body::Frame;
5use http_body_util::{Either, Full, StreamBody};
6use ic_agent::AgentError;
7use std::fmt::Debug;
8
9use crate::HttpGatewayError;
10
11pub type CanisterResponse = Response<HttpGatewayResponseBody>;
12
13pub struct HttpGatewayResponse {
15 pub canister_response: CanisterResponse,
18
19 pub metadata: HttpGatewayResponseMetadata,
21}
22
23#[derive(Debug, Clone)]
25pub struct HttpGatewayResponseMetadata {
26 pub upgraded_to_update_call: bool,
28
29 pub response_verification_version: Option<u16>,
33
34 pub internal_error: Option<HttpGatewayError>,
36}
37
38pub type HttpGatewayResponseBody = Either<ResponseBodyStream, Full<Bytes>>;
39
40pub type ResponseBodyStream = StreamBody<BoxStream<'static, ResponseBodyStreamItem>>;
41
42pub type ResponseBodyStreamItem = Result<Frame<Bytes>, AgentError>;