Skip to main content

RawResponsePolicy

Struct RawResponsePolicy 

Source
pub struct RawResponsePolicy<'a> { /* private fields */ }
Expand description

Complete provider-neutral admission policy for one final HTTP response.

Implementations§

Source§

impl<'a> RawResponsePolicy<'a>

Source

pub fn new( success_body_bytes: usize, error_body_bytes: usize, success_media: ResponseMediaPolicy<'a>, error_media: ResponseMediaPolicy<'a>, admitted_headers: &[HeaderName<'a>], informational_limit: u8, ) -> Result<Self, RawResponsePolicyError>

Validates separate success/error bounds, media rules, and retained headers.

Examples found in repository?
examples/prepared_request.rs (lines 91-98)
49    fn prepare<'storage>(
50        &self,
51        storage: PreparationStorage<'storage>,
52    ) -> Result<PreparedRequest<'storage>, Self::Error> {
53        let (target_storage, _body_storage) = storage.into_parts();
54        let target = target_storage
55            .get_mut(..17)
56            .ok_or(PrepareError::TargetBuffer)?;
57        target.copy_from_slice(b"/resources?page=1");
58        let target = core::str::from_utf8(target).map_err(|_| PrepareError::InvalidTarget)?;
59        let target = RequestTarget::new(target).map_err(|_| PrepareError::InvalidTarget)?;
60        let request = TransportRequest::new(Method::Get, target);
61        let metadata = OperationMetadata::new(
62            OperationImpact::ReadOnly,
63            RequestSemantics::Safe,
64            RetryEligibility::ExplicitPolicy,
65            CostIntent::NoKnownCost,
66            RequestIdPolicy::Protected,
67        )
68        .map_err(|_| PrepareError::InvalidMetadata)?;
69        let response_policy = ResponsePolicy::new(
70            &OK_STATUS,
71            ContentTypePolicy::Required(&JSON_MEDIA),
72            ResponseBodyPolicy::Required,
73            65_536,
74        )
75        .map_err(|_| PrepareError::InvalidResponsePolicy)?;
76        let endpoint =
77            EndpointIdentity::new(EndpointScheme::Https, "api.example.invalid", 443, "/v1")
78                .map_err(|_| PrepareError::InvalidEndpoint)?;
79        let authentication_policy = AuthenticationScopePolicy::new(
80            ScopeRequirement::Required(ExampleProvider::ID),
81            ScopeRequirement::Required(ComputeService::ID),
82            ScopeRequirement::Required(endpoint),
83            ScopeRequirement::Forbidden,
84            ScopeRequirement::Forbidden,
85            ScopeRequirement::Forbidden,
86        );
87        let content_type =
88            HeaderName::new("content-type").map_err(|_| PrepareError::InvalidRawResponsePolicy)?;
89        let request_id =
90            HeaderName::new("x-request-id").map_err(|_| PrepareError::InvalidRawResponsePolicy)?;
91        let raw_response_policy = RawResponsePolicy::new(
92            65_536,
93            65_536,
94            ResponseMediaPolicy::Required(&JSON_MEDIA),
95            ResponseMediaPolicy::Required(&JSON_MEDIA),
96            &[content_type, request_id],
97            8,
98        )
99        .map_err(|_| PrepareError::InvalidRawResponsePolicy)?;
100        PreparedRequest::new(
101            request,
102            ProviderService::from_marker::<ComputeService>(EndpointPolicy::fixed(endpoint)),
103            metadata,
104            response_policy,
105            authentication_policy,
106            raw_response_policy,
107        )
108        .map_err(|_| PrepareError::InvalidRawResponsePolicy)
109    }
Source

pub const fn body_limit(self, status: StatusCode) -> usize

Returns the body limit selected by the final status class.

Source

pub const fn max_body_bytes(self) -> usize

Returns the larger status-class bound needed for caller response storage.

Source

pub const fn media_policy(self, status: StatusCode) -> ResponseMediaPolicy<'a>

Returns the media policy selected by the final status class.

Source

pub fn admits_header(self, name: &str) -> bool

Reports whether an operation admitted retention of this response header.

Source

pub const fn informational_limit(self) -> u8

Returns the informational-response limit.

Source

pub const fn trailer_policy(self) -> TrailerPolicy

Returns the explicit trailer policy.

Trait Implementations§

Source§

impl<'a> Clone for RawResponsePolicy<'a>

Source§

fn clone(&self) -> RawResponsePolicy<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for RawResponsePolicy<'a>

Source§

impl<'a> Debug for RawResponsePolicy<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Eq for RawResponsePolicy<'a>

Source§

impl<'a> PartialEq for RawResponsePolicy<'a>

Source§

fn eq(&self, other: &RawResponsePolicy<'a>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<'a> StructuralPartialEq for RawResponsePolicy<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for RawResponsePolicy<'a>

§

impl<'a> RefUnwindSafe for RawResponsePolicy<'a>

§

impl<'a> Send for RawResponsePolicy<'a>

§

impl<'a> Sync for RawResponsePolicy<'a>

§

impl<'a> Unpin for RawResponsePolicy<'a>

§

impl<'a> UnsafeUnpin for RawResponsePolicy<'a>

§

impl<'a> UnwindSafe for RawResponsePolicy<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.