pub struct RequestTarget<'a> { /* private fields */ }Expand description
Validated complete origin-form HTTP request target.
Implementations§
Source§impl<'a> RequestTarget<'a>
impl<'a> RequestTarget<'a>
Sourcepub fn new(value: &'a str) -> Result<Self, RequestTargetError>
pub fn new(value: &'a str) -> Result<Self, RequestTargetError>
Validates a canonical /path?query target.
Use Self::assemble when query absence and presence must be selected
explicitly or when a provider uses FormQuery.
Examples found in repository?
More examples
46 fn prepare<'storage>(
47 &self,
48 storage: PreparationStorage<'storage>,
49 ) -> Result<PreparedRequest<'storage>, Self::Error> {
50 let (target_storage, _body_storage) = storage.into_parts();
51 let target = target_storage
52 .get_mut(..17)
53 .ok_or(PrepareError::TargetBuffer)?;
54 target.copy_from_slice(b"/resources?page=1");
55 let target = core::str::from_utf8(target).map_err(|_| PrepareError::InvalidTarget)?;
56 let target = RequestTarget::new(target).map_err(|_| PrepareError::InvalidTarget)?;
57 let request = TransportRequest::new(Method::Get, target);
58 let metadata = OperationMetadata::new(
59 OperationImpact::ReadOnly,
60 RequestSemantics::Safe,
61 RetryEligibility::ExplicitPolicy,
62 CostIntent::NoKnownCost,
63 )
64 .map_err(|_| PrepareError::InvalidMetadata)?;
65 let response_policy = ResponsePolicy::new(
66 &OK_STATUS,
67 ContentTypePolicy::Required(&JSON_MEDIA),
68 ResponseBodyPolicy::Required,
69 65_536,
70 )
71 .map_err(|_| PrepareError::InvalidResponsePolicy)?;
72 let endpoint =
73 EndpointIdentity::new(EndpointScheme::Https, "api.example.invalid", 443, "/v1")
74 .map_err(|_| PrepareError::InvalidEndpoint)?;
75 Ok(PreparedRequest::new(
76 request,
77 ProviderService::from_marker::<ComputeService>(EndpointPolicy::fixed(endpoint)),
78 metadata,
79 response_policy,
80 ))
81 }Sourcepub fn assemble<'output>(
path: RequestPath<'_>,
query: RequestQuery<'_>,
output: &'output mut [u8],
) -> Result<RequestTarget<'output>, RequestTargetError>
pub fn assemble<'output>( path: RequestPath<'_>, query: RequestQuery<'_>, output: &'output mut [u8], ) -> Result<RequestTarget<'output>, RequestTargetError>
Atomically writes validated components into caller-owned storage.
Only output[..target.len()], equivalently Self::as_str, is
initialized by this operation. The remaining tail is left untouched
and may contain data from an earlier use. Never read, log, hash, sign,
or transmit the backing buffer past target.len(). Apply the caller’s
cleanup policy to the complete buffer before reusing it across a
sensitive boundary.
Sourcepub const fn path(self) -> RequestPath<'a>
pub const fn path(self) -> RequestPath<'a>
Returns the validated path component.
Sourcepub const fn query(self) -> RequestQuery<'a>
pub const fn query(self) -> RequestQuery<'a>
Returns the explicit query state and dialect.
Sourcepub fn query_bytes(self) -> Option<&'a [u8]>
pub fn query_bytes(self) -> Option<&'a [u8]>
Returns the exact final query bytes for signing or fingerprinting.
Trait Implementations§
Source§impl<'a> Clone for RequestTarget<'a>
impl<'a> Clone for RequestTarget<'a>
Source§fn clone(&self) -> RequestTarget<'a>
fn clone(&self) -> RequestTarget<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more