Skip to main content

s2_api/v1/
mod.rs

1pub mod access;
2pub mod basin;
3pub mod config;
4pub mod error;
5pub mod location;
6pub mod metrics;
7pub mod stream;
8
9use s2_common::{
10    access::AccessTokenId, basin::BasinName, resources::RequestToken, stream::StreamName,
11};
12
13#[rustfmt::skip]
14#[derive(Debug)]
15#[cfg_attr(feature = "utoipa", derive(utoipa::IntoParams))]
16#[cfg_attr(feature = "utoipa", into_params(parameter_in = Header))]
17pub struct S2RequestTokenHeader {
18    /// Client-specified request token for idempotent retries.
19    #[cfg_attr(feature = "utoipa", param(required = false, rename = "s2-request-token"))]
20    pub s2_request_token: RequestToken,
21}
22
23#[rustfmt::skip]
24#[derive(Debug)]
25#[cfg_attr(feature = "utoipa", derive(utoipa::IntoParams))]
26#[cfg_attr(feature = "utoipa", into_params(parameter_in = Path))]
27pub struct AccessTokenIdPathSegment {
28    /// Access token ID.
29    pub id: AccessTokenId,
30}
31
32#[rustfmt::skip]
33#[derive(Debug)]
34#[cfg_attr(feature = "utoipa", derive(utoipa::IntoParams))]
35#[cfg_attr(feature = "utoipa", into_params(parameter_in = Path))]
36pub struct BasinNamePathSegment {
37    /// Basin name.
38    pub basin: BasinName,
39}
40
41#[rustfmt::skip]
42#[derive(Debug)]
43#[cfg_attr(feature = "utoipa", derive(utoipa::IntoParams))]
44#[cfg_attr(feature = "utoipa", into_params(parameter_in = Path))]
45pub struct StreamNamePathSegment {
46    /// Stream name.
47    pub stream: StreamName,
48}
49
50macro_rules! impl_list_request_conversions {
51    ($name:ident, $prefix:ty, $start_after:ty) => {
52        impl TryFrom<$name> for s2_common::resources::ListItemsRequest<$prefix, $start_after> {
53            type Error = s2_common::ValidationError;
54
55            fn try_from(value: $name) -> Result<Self, Self::Error> {
56                let $name {
57                    prefix,
58                    start_after,
59                    limit,
60                } = value;
61
62                Ok(Self {
63                    prefix: prefix.unwrap_or_default(),
64                    start_after: start_after.unwrap_or_default(),
65                    limit: limit.map(Into::into).unwrap_or_default(),
66                })
67            }
68        }
69    };
70}
71
72pub(crate) use impl_list_request_conversions;