cloud_sdk_testkit/
prepared.rs1use core::fmt;
4
5use cloud_sdk::Method;
6use cloud_sdk::operation::{OperationMetadata, PreparedRequest, ProviderService, ResponsePolicy};
7
8#[derive(Clone, Copy, Eq, PartialEq)]
10pub struct PreparedRequestRecord {
11 method: Method,
12 target_len: usize,
13 body_len: usize,
14 has_request_content_type: bool,
15 service: ProviderService,
16 metadata: OperationMetadata,
17 response_policy: ResponsePolicy,
18}
19
20impl PreparedRequestRecord {
21 #[must_use]
23 pub const fn capture(prepared: PreparedRequest<'_>) -> Self {
24 let request = prepared.transport_request();
25 Self {
26 method: request.method(),
27 target_len: request.target().as_str().len(),
28 body_len: request.body().len(),
29 has_request_content_type: request.content_type().is_some(),
30 service: prepared.service(),
31 metadata: prepared.metadata(),
32 response_policy: prepared.response_policy(),
33 }
34 }
35
36 #[must_use]
38 pub const fn method(self) -> Method {
39 self.method
40 }
41
42 #[must_use]
44 pub const fn target_len(self) -> usize {
45 self.target_len
46 }
47
48 #[must_use]
50 pub const fn body_len(self) -> usize {
51 self.body_len
52 }
53
54 #[must_use]
56 pub const fn has_request_content_type(self) -> bool {
57 self.has_request_content_type
58 }
59
60 #[must_use]
62 pub const fn service(self) -> ProviderService {
63 self.service
64 }
65
66 #[must_use]
68 pub const fn metadata(self) -> OperationMetadata {
69 self.metadata
70 }
71
72 #[must_use]
74 pub const fn response_policy(self) -> ResponsePolicy {
75 self.response_policy
76 }
77}
78
79impl fmt::Debug for PreparedRequestRecord {
80 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
81 formatter
82 .debug_struct("PreparedRequestRecord")
83 .field("method", &self.method)
84 .field("target_len", &self.target_len)
85 .field("target", &"[redacted]")
86 .field("body_len", &self.body_len)
87 .field("body", &"[redacted]")
88 .field("has_request_content_type", &self.has_request_content_type)
89 .field("service", &self.service)
90 .field("metadata", &self.metadata)
91 .field("response_policy", &self.response_policy)
92 .finish()
93 }
94}