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 #[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 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 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 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;