Fix dropshot-pagination `_stream` client codegen (#756)
This commit is contained in:
parent
9843d26122
commit
1a61bf1e66
|
@ -1439,6 +1439,7 @@ version = "0.6.0"
|
|||
dependencies = [
|
||||
"dropshot",
|
||||
"expectorate",
|
||||
"futures",
|
||||
"getopts",
|
||||
"heck 0.4.1",
|
||||
"http 0.2.9",
|
||||
|
@ -1446,8 +1447,10 @@ dependencies = [
|
|||
"indexmap",
|
||||
"openapiv3",
|
||||
"proc-macro2",
|
||||
"progenitor-client",
|
||||
"quote",
|
||||
"regex",
|
||||
"reqwest",
|
||||
"rustfmt-wrapper",
|
||||
"schemars",
|
||||
"serde",
|
||||
|
@ -1455,6 +1458,7 @@ dependencies = [
|
|||
"serde_yaml",
|
||||
"syn 2.0.52",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
"typify",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
@ -2230,9 +2234,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
|
|||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.36.0"
|
||||
version = "1.37.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
|
||||
checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
|
|
|
@ -29,8 +29,13 @@ unicode-ident = "1.0.12"
|
|||
[dev-dependencies]
|
||||
dropshot = { git = "https://github.com/oxidecomputer/dropshot", default-features = false }
|
||||
expectorate = "1.1"
|
||||
futures = "0.3.30"
|
||||
http = "0.2.9"
|
||||
hyper = "0.14.27"
|
||||
reqwest = "0.11.27"
|
||||
rustfmt-wrapper = "0.2.1"
|
||||
serde_yaml = "0.9"
|
||||
serde_json = "1.0.113"
|
||||
tokio = { version = "1.37.0", features = ["rt", "net"] }
|
||||
|
||||
progenitor-client.path = "../progenitor-client"
|
||||
|
|
|
@ -710,9 +710,12 @@ impl Generator {
|
|||
let step_params = method.params.iter().map(|param| {
|
||||
if param.api_name.as_str() == "page_token" {
|
||||
quote! { state.as_deref() }
|
||||
} else if let OperationParameterKind::Query(_) = param.kind {
|
||||
// Query parameters are None; having page_token as Some(_)
|
||||
// is mutually exclusive with other query parameters.
|
||||
} else if param.api_name.as_str() != "limit"
|
||||
&& matches!(param.kind, OperationParameterKind::Query(_))
|
||||
{
|
||||
// Query parameters (other than "page_token" and "limit")
|
||||
// are None; having page_token as Some(_) is mutually
|
||||
// exclusive with other query parameters.
|
||||
quote! { None }
|
||||
} else {
|
||||
// Non-query parameters are passed in; this is necessary
|
||||
|
@ -744,15 +747,6 @@ impl Generator {
|
|||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
|
||||
// Grab the limit. This is intended to be agnostic to the
|
||||
// specific type for the limit input which is why it's a
|
||||
// bit convoluted.
|
||||
let final_stream_limit = limit
|
||||
.clone()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
|
||||
// Execute the operation with the basic parameters
|
||||
// (omitting page_token) to get the first page.
|
||||
self.#operation_id( #(#first_params,)* )
|
||||
|
@ -800,7 +794,6 @@ impl Generator {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(final_stream_limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -1767,7 +1760,12 @@ impl Generator {
|
|||
self.uses_futures = true;
|
||||
|
||||
let step_params = method.params.iter().filter_map(|param| {
|
||||
if let OperationParameterKind::Query(_) = param.kind {
|
||||
if param.api_name.as_str() != "limit"
|
||||
&& matches!(param.kind, OperationParameterKind::Query(_))
|
||||
{
|
||||
// Query parameters (other than "limit") are None; having
|
||||
// page_token as Some(_), as we will during the loop below,
|
||||
// is mutually exclusive with other query parameters.
|
||||
let name = format_ident!("{}", param.name);
|
||||
Some(quote! {
|
||||
#name: Ok(None)
|
||||
|
@ -1799,18 +1797,6 @@ impl Generator {
|
|||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
|
||||
// Grab the limit. This is intended to be agnostic to the
|
||||
// specific type for the limit input which is why it's a
|
||||
// bit convoluted.
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
|
||||
// This is the builder template we'll use for iterative
|
||||
// steps past the first; it has all query params set to
|
||||
// None (the step will fill in page_token).
|
||||
|
@ -1865,7 +1851,6 @@ impl Generator {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29638,16 +29638,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -29682,7 +29673,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -30159,16 +30149,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -30203,7 +30184,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -30787,16 +30767,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -30831,7 +30802,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -31335,16 +31305,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -31379,7 +31340,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -31875,17 +31835,8 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
end_time: Ok(None),
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
start_time: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -31920,7 +31871,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -32069,16 +32019,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -32113,7 +32054,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -32560,16 +32500,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -32604,7 +32535,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -33067,16 +32997,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -33111,7 +33032,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -33741,16 +33661,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -33785,7 +33696,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -35156,16 +35066,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -35200,7 +35101,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -35646,16 +35546,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -35690,7 +35581,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -36502,16 +36392,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -36546,7 +36427,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -37206,16 +37086,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -37250,7 +37121,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -37967,16 +37837,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -38011,7 +37872,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -38672,16 +38532,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -38716,7 +38567,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -38926,16 +38776,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -38969,7 +38810,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -39184,16 +39024,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -39228,7 +39059,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -39342,16 +39172,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -39386,7 +39207,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -39875,16 +39695,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -39919,7 +39730,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40230,16 +40040,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40274,7 +40075,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40388,16 +40188,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40432,7 +40223,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40606,16 +40396,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40650,7 +40431,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40842,16 +40622,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40886,7 +40657,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -41000,16 +40770,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -41044,7 +40805,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -41349,16 +41109,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -41393,7 +41144,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -41786,16 +41536,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -41829,7 +41570,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -42123,16 +41863,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -42166,7 +41897,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -42662,16 +42392,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -42706,7 +42427,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -42880,16 +42600,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -42924,7 +42635,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -43248,16 +42958,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -43292,7 +42993,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44024,16 +43724,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -44068,7 +43759,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44261,16 +43951,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -44305,7 +43986,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44462,16 +44142,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -44505,7 +44176,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44619,16 +44289,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -44663,7 +44324,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44813,16 +44473,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
project: Ok(None),
|
||||
|
@ -44859,7 +44510,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -45318,16 +44968,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
project: Ok(None),
|
||||
|
@ -45364,7 +45005,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -45841,16 +45481,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
project: Ok(None),
|
||||
|
@ -45887,7 +45518,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -46950,16 +46580,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -46994,7 +46615,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -47576,16 +47196,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
|
@ -47621,7 +47232,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -48301,16 +47911,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -48345,7 +47946,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -48460,16 +48060,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -48504,7 +48095,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -48835,16 +48425,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -48879,7 +48460,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29558,16 +29558,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -29602,7 +29593,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -30079,16 +30069,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -30123,7 +30104,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -30707,16 +30687,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -30751,7 +30722,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -31255,16 +31225,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -31299,7 +31260,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -31795,17 +31755,8 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
end_time: Ok(None),
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
start_time: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -31840,7 +31791,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -31989,16 +31939,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -32033,7 +31974,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -32480,16 +32420,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -32524,7 +32455,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -32987,16 +32917,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -33031,7 +32952,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -33661,16 +33581,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -33705,7 +33616,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -35076,16 +34986,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -35120,7 +35021,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -35566,16 +35466,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -35610,7 +35501,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -36422,16 +36312,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -36466,7 +36347,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -37126,16 +37006,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -37170,7 +37041,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -37887,16 +37757,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -37931,7 +37792,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -38592,16 +38452,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -38636,7 +38487,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -38846,16 +38696,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -38889,7 +38730,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -39104,16 +38944,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -39148,7 +38979,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -39262,16 +39092,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -39306,7 +39127,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -39795,16 +39615,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -39839,7 +39650,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40150,16 +39960,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40194,7 +39995,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40308,16 +40108,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40352,7 +40143,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40526,16 +40316,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40570,7 +40351,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40762,16 +40542,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40806,7 +40577,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -40920,16 +40690,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -40964,7 +40725,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -41269,16 +41029,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -41313,7 +41064,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -41706,16 +41456,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -41749,7 +41490,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -42043,16 +41783,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -42086,7 +41817,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -42582,16 +42312,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -42626,7 +42347,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -42800,16 +42520,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -42844,7 +42555,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -43168,16 +42878,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -43212,7 +42913,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -43944,16 +43644,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -43988,7 +43679,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44181,16 +43871,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -44225,7 +43906,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44382,16 +44062,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
|
@ -44425,7 +44096,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44539,16 +44209,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -44583,7 +44244,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -44733,16 +44393,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
project: Ok(None),
|
||||
|
@ -44779,7 +44430,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -45238,16 +44888,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
project: Ok(None),
|
||||
|
@ -45284,7 +44925,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -45761,16 +45401,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
project: Ok(None),
|
||||
|
@ -45807,7 +45438,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -46870,16 +46500,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -46914,7 +46535,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -47496,16 +47116,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
organization: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
|
@ -47541,7 +47152,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -48221,16 +47831,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -48265,7 +47866,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -48380,16 +47980,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -48424,7 +48015,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
@ -48755,16 +48345,7 @@ pub mod builder {
|
|||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let limit = self
|
||||
.limit
|
||||
.clone()
|
||||
.ok()
|
||||
.flatten()
|
||||
.and_then(|x| std::num::NonZeroUsize::try_from(x).ok())
|
||||
.map(std::num::NonZeroUsize::get)
|
||||
.unwrap_or(usize::MAX);
|
||||
let next = Self {
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
sort_by: Ok(None),
|
||||
..self.clone()
|
||||
|
@ -48799,7 +48380,6 @@ pub mod builder {
|
|||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.take(limit)
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,494 @@
|
|||
#[allow(unused_imports)]
|
||||
use progenitor_client::{encode_path, RequestBuilderExt};
|
||||
#[allow(unused_imports)]
|
||||
pub use progenitor_client::{ByteStream, Error, ResponseValue};
|
||||
#[allow(unused_imports)]
|
||||
use reqwest::header::{HeaderMap, HeaderValue};
|
||||
/// Types used as operation parameters and responses.
|
||||
#[allow(clippy::all)]
|
||||
pub mod types {
|
||||
use serde::{Deserialize, Serialize};
|
||||
#[allow(unused_imports)]
|
||||
use std::convert::TryFrom;
|
||||
/// Error types.
|
||||
pub mod error {
|
||||
/// Error from a TryFrom or FromStr implementation.
|
||||
pub struct ConversionError(std::borrow::Cow<'static, str>);
|
||||
impl std::error::Error for ConversionError {}
|
||||
impl std::fmt::Display for ConversionError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
||||
std::fmt::Display::fmt(&self.0, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for ConversionError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
||||
std::fmt::Debug::fmt(&self.0, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&'static str> for ConversionError {
|
||||
fn from(value: &'static str) -> Self {
|
||||
Self(value.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<String> for ConversionError {
|
||||
fn from(value: String) -> Self {
|
||||
Self(value.into())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///Error information from a response.
|
||||
///
|
||||
/// <details><summary>JSON schema</summary>
|
||||
///
|
||||
/// ```json
|
||||
///{
|
||||
/// "description": "Error information from a response.",
|
||||
/// "type": "object",
|
||||
/// "required": [
|
||||
/// "message",
|
||||
/// "request_id"
|
||||
/// ],
|
||||
/// "properties": {
|
||||
/// "error_code": {
|
||||
/// "type": "string"
|
||||
/// },
|
||||
/// "message": {
|
||||
/// "type": "string"
|
||||
/// },
|
||||
/// "request_id": {
|
||||
/// "type": "string"
|
||||
/// }
|
||||
/// }
|
||||
///}
|
||||
/// ```
|
||||
/// </details>
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct Error {
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub error_code: Option<String>,
|
||||
pub message: String,
|
||||
pub request_id: String,
|
||||
}
|
||||
|
||||
impl From<&Error> for Error {
|
||||
fn from(value: &Error) -> Self {
|
||||
value.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl Error {
|
||||
pub fn builder() -> builder::Error {
|
||||
Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
///A single page of results
|
||||
///
|
||||
/// <details><summary>JSON schema</summary>
|
||||
///
|
||||
/// ```json
|
||||
///{
|
||||
/// "description": "A single page of results",
|
||||
/// "type": "object",
|
||||
/// "required": [
|
||||
/// "items"
|
||||
/// ],
|
||||
/// "properties": {
|
||||
/// "items": {
|
||||
/// "description": "list of items on this page of results",
|
||||
/// "type": "array",
|
||||
/// "items": {
|
||||
/// "type": "integer",
|
||||
/// "format": "uint32",
|
||||
/// "minimum": 0.0
|
||||
/// }
|
||||
/// },
|
||||
/// "next_page": {
|
||||
/// "description": "token used to fetch the next page of results (if
|
||||
/// any)",
|
||||
/// "type": [
|
||||
/// "string",
|
||||
/// "null"
|
||||
/// ]
|
||||
/// }
|
||||
/// }
|
||||
///}
|
||||
/// ```
|
||||
/// </details>
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct Uint32ResultsPage {
|
||||
///list of items on this page of results
|
||||
pub items: Vec<u32>,
|
||||
///token used to fetch the next page of results (if any)
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub next_page: Option<String>,
|
||||
}
|
||||
|
||||
impl From<&Uint32ResultsPage> for Uint32ResultsPage {
|
||||
fn from(value: &Uint32ResultsPage) -> Self {
|
||||
value.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl Uint32ResultsPage {
|
||||
pub fn builder() -> builder::Uint32ResultsPage {
|
||||
Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// Types for composing complex structures.
|
||||
pub mod builder {
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Error {
|
||||
error_code: Result<Option<String>, String>,
|
||||
message: Result<String, String>,
|
||||
request_id: Result<String, String>,
|
||||
}
|
||||
|
||||
impl Default for Error {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
error_code: Ok(Default::default()),
|
||||
message: Err("no value supplied for message".to_string()),
|
||||
request_id: Err("no value supplied for request_id".to_string()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Error {
|
||||
pub fn error_code<T>(mut self, value: T) -> Self
|
||||
where
|
||||
T: std::convert::TryInto<Option<String>>,
|
||||
T::Error: std::fmt::Display,
|
||||
{
|
||||
self.error_code = value
|
||||
.try_into()
|
||||
.map_err(|e| format!("error converting supplied value for error_code: {}", e));
|
||||
self
|
||||
}
|
||||
pub fn message<T>(mut self, value: T) -> Self
|
||||
where
|
||||
T: std::convert::TryInto<String>,
|
||||
T::Error: std::fmt::Display,
|
||||
{
|
||||
self.message = value
|
||||
.try_into()
|
||||
.map_err(|e| format!("error converting supplied value for message: {}", e));
|
||||
self
|
||||
}
|
||||
pub fn request_id<T>(mut self, value: T) -> Self
|
||||
where
|
||||
T: std::convert::TryInto<String>,
|
||||
T::Error: std::fmt::Display,
|
||||
{
|
||||
self.request_id = value
|
||||
.try_into()
|
||||
.map_err(|e| format!("error converting supplied value for request_id: {}", e));
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl std::convert::TryFrom<Error> for super::Error {
|
||||
type Error = super::error::ConversionError;
|
||||
fn try_from(value: Error) -> Result<Self, super::error::ConversionError> {
|
||||
Ok(Self {
|
||||
error_code: value.error_code?,
|
||||
message: value.message?,
|
||||
request_id: value.request_id?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl From<super::Error> for Error {
|
||||
fn from(value: super::Error) -> Self {
|
||||
Self {
|
||||
error_code: Ok(value.error_code),
|
||||
message: Ok(value.message),
|
||||
request_id: Ok(value.request_id),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Uint32ResultsPage {
|
||||
items: Result<Vec<u32>, String>,
|
||||
next_page: Result<Option<String>, String>,
|
||||
}
|
||||
|
||||
impl Default for Uint32ResultsPage {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
items: Err("no value supplied for items".to_string()),
|
||||
next_page: Ok(Default::default()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Uint32ResultsPage {
|
||||
pub fn items<T>(mut self, value: T) -> Self
|
||||
where
|
||||
T: std::convert::TryInto<Vec<u32>>,
|
||||
T::Error: std::fmt::Display,
|
||||
{
|
||||
self.items = value
|
||||
.try_into()
|
||||
.map_err(|e| format!("error converting supplied value for items: {}", e));
|
||||
self
|
||||
}
|
||||
pub fn next_page<T>(mut self, value: T) -> Self
|
||||
where
|
||||
T: std::convert::TryInto<Option<String>>,
|
||||
T::Error: std::fmt::Display,
|
||||
{
|
||||
self.next_page = value
|
||||
.try_into()
|
||||
.map_err(|e| format!("error converting supplied value for next_page: {}", e));
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl std::convert::TryFrom<Uint32ResultsPage> for super::Uint32ResultsPage {
|
||||
type Error = super::error::ConversionError;
|
||||
fn try_from(value: Uint32ResultsPage) -> Result<Self, super::error::ConversionError> {
|
||||
Ok(Self {
|
||||
items: value.items?,
|
||||
next_page: value.next_page?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl From<super::Uint32ResultsPage> for Uint32ResultsPage {
|
||||
fn from(value: super::Uint32ResultsPage) -> Self {
|
||||
Self {
|
||||
items: Ok(value.items),
|
||||
next_page: Ok(value.next_page),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
///Client for test_stream_pagination
|
||||
///
|
||||
///Version: 1
|
||||
pub struct Client {
|
||||
pub(crate) baseurl: String,
|
||||
pub(crate) client: reqwest::Client,
|
||||
}
|
||||
|
||||
impl Client {
|
||||
/// Create a new client.
|
||||
///
|
||||
/// `baseurl` is the base URL provided to the internal
|
||||
/// `reqwest::Client`, and should include a scheme and hostname,
|
||||
/// as well as port and a path stem if applicable.
|
||||
pub fn new(baseurl: &str) -> Self {
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
let client = {
|
||||
let dur = std::time::Duration::from_secs(15);
|
||||
reqwest::ClientBuilder::new()
|
||||
.connect_timeout(dur)
|
||||
.timeout(dur)
|
||||
};
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
let client = reqwest::ClientBuilder::new();
|
||||
Self::new_with_client(baseurl, client.build().unwrap())
|
||||
}
|
||||
|
||||
/// Construct a new client with an existing `reqwest::Client`,
|
||||
/// allowing more control over its configuration.
|
||||
///
|
||||
/// `baseurl` is the base URL provided to the internal
|
||||
/// `reqwest::Client`, and should include a scheme and hostname,
|
||||
/// as well as port and a path stem if applicable.
|
||||
pub fn new_with_client(baseurl: &str, client: reqwest::Client) -> Self {
|
||||
Self {
|
||||
baseurl: baseurl.to_string(),
|
||||
client,
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the base URL to which requests are made.
|
||||
pub fn baseurl(&self) -> &String {
|
||||
&self.baseurl
|
||||
}
|
||||
|
||||
/// Get the internal `reqwest::Client` used to make requests.
|
||||
pub fn client(&self) -> &reqwest::Client {
|
||||
&self.client
|
||||
}
|
||||
|
||||
/// Get the version of this API.
|
||||
///
|
||||
/// This string is pulled directly from the source OpenAPI
|
||||
/// document and may be in any format the API selects.
|
||||
pub fn api_version(&self) -> &'static str {
|
||||
"1"
|
||||
}
|
||||
}
|
||||
|
||||
impl Client {
|
||||
///Sends a `GET` request to `/`
|
||||
///
|
||||
///Arguments:
|
||||
/// - `limit`: Maximum number of items returned by a single call
|
||||
/// - `page_token`: Token returned by previous call to retrieve the
|
||||
/// subsequent page
|
||||
///```ignore
|
||||
/// let response = client.paginated_u32s()
|
||||
/// .limit(limit)
|
||||
/// .page_token(page_token)
|
||||
/// .send()
|
||||
/// .await;
|
||||
/// ```
|
||||
pub fn paginated_u32s(&self) -> builder::PaginatedU32s {
|
||||
builder::PaginatedU32s::new(self)
|
||||
}
|
||||
}
|
||||
|
||||
/// Types for composing operation parameters.
|
||||
#[allow(clippy::all)]
|
||||
pub mod builder {
|
||||
use super::types;
|
||||
#[allow(unused_imports)]
|
||||
use super::{
|
||||
encode_path, ByteStream, Error, HeaderMap, HeaderValue, RequestBuilderExt, ResponseValue,
|
||||
};
|
||||
///Builder for [`Client::paginated_u32s`]
|
||||
///
|
||||
///[`Client::paginated_u32s`]: super::Client::paginated_u32s
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PaginatedU32s<'a> {
|
||||
client: &'a super::Client,
|
||||
limit: Result<Option<std::num::NonZeroU32>, String>,
|
||||
page_token: Result<Option<String>, String>,
|
||||
}
|
||||
|
||||
impl<'a> PaginatedU32s<'a> {
|
||||
pub fn new(client: &'a super::Client) -> Self {
|
||||
Self {
|
||||
client: client,
|
||||
limit: Ok(None),
|
||||
page_token: Ok(None),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn limit<V>(mut self, value: V) -> Self
|
||||
where
|
||||
V: std::convert::TryInto<std::num::NonZeroU32>,
|
||||
{
|
||||
self.limit = value.try_into().map(Some).map_err(|_| {
|
||||
"conversion to `std :: num :: NonZeroU32` for limit failed".to_string()
|
||||
});
|
||||
self
|
||||
}
|
||||
|
||||
pub fn page_token<V>(mut self, value: V) -> Self
|
||||
where
|
||||
V: std::convert::TryInto<String>,
|
||||
{
|
||||
self.page_token = value
|
||||
.try_into()
|
||||
.map(Some)
|
||||
.map_err(|_| "conversion to `String` for page_token failed".to_string());
|
||||
self
|
||||
}
|
||||
|
||||
///Sends a `GET` request to `/`
|
||||
pub async fn send(
|
||||
self,
|
||||
) -> Result<ResponseValue<types::Uint32ResultsPage>, Error<types::Error>> {
|
||||
let Self {
|
||||
client,
|
||||
limit,
|
||||
page_token,
|
||||
} = self;
|
||||
let limit = limit.map_err(Error::InvalidRequest)?;
|
||||
let page_token = page_token.map_err(Error::InvalidRequest)?;
|
||||
let url = format!("{}/", client.baseurl,);
|
||||
let mut query = Vec::with_capacity(2usize);
|
||||
if let Some(v) = &limit {
|
||||
query.push(("limit", v.to_string()));
|
||||
}
|
||||
if let Some(v) = &page_token {
|
||||
query.push(("page_token", v.to_string()));
|
||||
}
|
||||
#[allow(unused_mut)]
|
||||
let mut request = client
|
||||
.client
|
||||
.get(url)
|
||||
.header(
|
||||
reqwest::header::ACCEPT,
|
||||
reqwest::header::HeaderValue::from_static("application/json"),
|
||||
)
|
||||
.query(&query)
|
||||
.build()?;
|
||||
let result = client.client.execute(request).await;
|
||||
let response = result?;
|
||||
match response.status().as_u16() {
|
||||
200u16 => ResponseValue::from_response(response).await,
|
||||
400u16..=499u16 => Err(Error::ErrorResponse(
|
||||
ResponseValue::from_response(response).await?,
|
||||
)),
|
||||
500u16..=599u16 => Err(Error::ErrorResponse(
|
||||
ResponseValue::from_response(response).await?,
|
||||
)),
|
||||
_ => Err(Error::UnexpectedResponse(response)),
|
||||
}
|
||||
}
|
||||
|
||||
///Streams `GET` requests to `/`
|
||||
pub fn stream(
|
||||
self,
|
||||
) -> impl futures::Stream<Item = Result<u32, Error<types::Error>>> + Unpin + 'a {
|
||||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
let next = Self {
|
||||
page_token: Ok(None),
|
||||
..self.clone()
|
||||
};
|
||||
self.send()
|
||||
.map_ok(move |page| {
|
||||
let page = page.into_inner();
|
||||
let first = futures::stream::iter(page.items).map(Ok);
|
||||
let rest = futures::stream::try_unfold(
|
||||
(page.next_page, next),
|
||||
|(next_page, next)| async {
|
||||
if next_page.is_none() {
|
||||
Ok(None)
|
||||
} else {
|
||||
Self {
|
||||
page_token: Ok(next_page),
|
||||
..next.clone()
|
||||
}
|
||||
.send()
|
||||
.map_ok(|page| {
|
||||
let page = page.into_inner();
|
||||
Some((
|
||||
futures::stream::iter(page.items).map(Ok),
|
||||
(page.next_page, next),
|
||||
))
|
||||
})
|
||||
.await
|
||||
}
|
||||
},
|
||||
)
|
||||
.try_flatten();
|
||||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Items consumers will typically use such as the Client.
|
||||
pub mod prelude {
|
||||
pub use self::super::Client;
|
||||
}
|
|
@ -0,0 +1,278 @@
|
|||
#[allow(unused_imports)]
|
||||
use progenitor_client::{encode_path, RequestBuilderExt};
|
||||
#[allow(unused_imports)]
|
||||
pub use progenitor_client::{ByteStream, Error, ResponseValue};
|
||||
#[allow(unused_imports)]
|
||||
use reqwest::header::{HeaderMap, HeaderValue};
|
||||
/// Types used as operation parameters and responses.
|
||||
#[allow(clippy::all)]
|
||||
pub mod types {
|
||||
use serde::{Deserialize, Serialize};
|
||||
#[allow(unused_imports)]
|
||||
use std::convert::TryFrom;
|
||||
/// Error types.
|
||||
pub mod error {
|
||||
/// Error from a TryFrom or FromStr implementation.
|
||||
pub struct ConversionError(std::borrow::Cow<'static, str>);
|
||||
impl std::error::Error for ConversionError {}
|
||||
impl std::fmt::Display for ConversionError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
||||
std::fmt::Display::fmt(&self.0, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for ConversionError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
||||
std::fmt::Debug::fmt(&self.0, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&'static str> for ConversionError {
|
||||
fn from(value: &'static str) -> Self {
|
||||
Self(value.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<String> for ConversionError {
|
||||
fn from(value: String) -> Self {
|
||||
Self(value.into())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///Error information from a response.
|
||||
///
|
||||
/// <details><summary>JSON schema</summary>
|
||||
///
|
||||
/// ```json
|
||||
///{
|
||||
/// "description": "Error information from a response.",
|
||||
/// "type": "object",
|
||||
/// "required": [
|
||||
/// "message",
|
||||
/// "request_id"
|
||||
/// ],
|
||||
/// "properties": {
|
||||
/// "error_code": {
|
||||
/// "type": "string"
|
||||
/// },
|
||||
/// "message": {
|
||||
/// "type": "string"
|
||||
/// },
|
||||
/// "request_id": {
|
||||
/// "type": "string"
|
||||
/// }
|
||||
/// }
|
||||
///}
|
||||
/// ```
|
||||
/// </details>
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct Error {
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub error_code: Option<String>,
|
||||
pub message: String,
|
||||
pub request_id: String,
|
||||
}
|
||||
|
||||
impl From<&Error> for Error {
|
||||
fn from(value: &Error) -> Self {
|
||||
value.clone()
|
||||
}
|
||||
}
|
||||
|
||||
///A single page of results
|
||||
///
|
||||
/// <details><summary>JSON schema</summary>
|
||||
///
|
||||
/// ```json
|
||||
///{
|
||||
/// "description": "A single page of results",
|
||||
/// "type": "object",
|
||||
/// "required": [
|
||||
/// "items"
|
||||
/// ],
|
||||
/// "properties": {
|
||||
/// "items": {
|
||||
/// "description": "list of items on this page of results",
|
||||
/// "type": "array",
|
||||
/// "items": {
|
||||
/// "type": "integer",
|
||||
/// "format": "uint32",
|
||||
/// "minimum": 0.0
|
||||
/// }
|
||||
/// },
|
||||
/// "next_page": {
|
||||
/// "description": "token used to fetch the next page of results (if
|
||||
/// any)",
|
||||
/// "type": [
|
||||
/// "string",
|
||||
/// "null"
|
||||
/// ]
|
||||
/// }
|
||||
/// }
|
||||
///}
|
||||
/// ```
|
||||
/// </details>
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct Uint32ResultsPage {
|
||||
///list of items on this page of results
|
||||
pub items: Vec<u32>,
|
||||
///token used to fetch the next page of results (if any)
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub next_page: Option<String>,
|
||||
}
|
||||
|
||||
impl From<&Uint32ResultsPage> for Uint32ResultsPage {
|
||||
fn from(value: &Uint32ResultsPage) -> Self {
|
||||
value.clone()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
///Client for test_stream_pagination
|
||||
///
|
||||
///Version: 1
|
||||
pub struct Client {
|
||||
pub(crate) baseurl: String,
|
||||
pub(crate) client: reqwest::Client,
|
||||
}
|
||||
|
||||
impl Client {
|
||||
/// Create a new client.
|
||||
///
|
||||
/// `baseurl` is the base URL provided to the internal
|
||||
/// `reqwest::Client`, and should include a scheme and hostname,
|
||||
/// as well as port and a path stem if applicable.
|
||||
pub fn new(baseurl: &str) -> Self {
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
let client = {
|
||||
let dur = std::time::Duration::from_secs(15);
|
||||
reqwest::ClientBuilder::new()
|
||||
.connect_timeout(dur)
|
||||
.timeout(dur)
|
||||
};
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
let client = reqwest::ClientBuilder::new();
|
||||
Self::new_with_client(baseurl, client.build().unwrap())
|
||||
}
|
||||
|
||||
/// Construct a new client with an existing `reqwest::Client`,
|
||||
/// allowing more control over its configuration.
|
||||
///
|
||||
/// `baseurl` is the base URL provided to the internal
|
||||
/// `reqwest::Client`, and should include a scheme and hostname,
|
||||
/// as well as port and a path stem if applicable.
|
||||
pub fn new_with_client(baseurl: &str, client: reqwest::Client) -> Self {
|
||||
Self {
|
||||
baseurl: baseurl.to_string(),
|
||||
client,
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the base URL to which requests are made.
|
||||
pub fn baseurl(&self) -> &String {
|
||||
&self.baseurl
|
||||
}
|
||||
|
||||
/// Get the internal `reqwest::Client` used to make requests.
|
||||
pub fn client(&self) -> &reqwest::Client {
|
||||
&self.client
|
||||
}
|
||||
|
||||
/// Get the version of this API.
|
||||
///
|
||||
/// This string is pulled directly from the source OpenAPI
|
||||
/// document and may be in any format the API selects.
|
||||
pub fn api_version(&self) -> &'static str {
|
||||
"1"
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(clippy::all)]
|
||||
impl Client {
|
||||
///Sends a `GET` request to `/`
|
||||
///
|
||||
///Arguments:
|
||||
/// - `limit`: Maximum number of items returned by a single call
|
||||
/// - `page_token`: Token returned by previous call to retrieve the
|
||||
/// subsequent page
|
||||
pub async fn paginated_u32s<'a>(
|
||||
&'a self,
|
||||
limit: Option<std::num::NonZeroU32>,
|
||||
page_token: Option<&'a str>,
|
||||
) -> Result<ResponseValue<types::Uint32ResultsPage>, Error<types::Error>> {
|
||||
let url = format!("{}/", self.baseurl,);
|
||||
let mut query = Vec::with_capacity(2usize);
|
||||
if let Some(v) = &limit {
|
||||
query.push(("limit", v.to_string()));
|
||||
}
|
||||
|
||||
if let Some(v) = &page_token {
|
||||
query.push(("page_token", v.to_string()));
|
||||
}
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut request = self
|
||||
.client
|
||||
.get(url)
|
||||
.header(
|
||||
reqwest::header::ACCEPT,
|
||||
reqwest::header::HeaderValue::from_static("application/json"),
|
||||
)
|
||||
.query(&query)
|
||||
.build()?;
|
||||
let result = self.client.execute(request).await;
|
||||
let response = result?;
|
||||
match response.status().as_u16() {
|
||||
200u16 => ResponseValue::from_response(response).await,
|
||||
400u16..=499u16 => Err(Error::ErrorResponse(
|
||||
ResponseValue::from_response(response).await?,
|
||||
)),
|
||||
500u16..=599u16 => Err(Error::ErrorResponse(
|
||||
ResponseValue::from_response(response).await?,
|
||||
)),
|
||||
_ => Err(Error::UnexpectedResponse(response)),
|
||||
}
|
||||
}
|
||||
|
||||
///Sends repeated `GET` requests to `/` until there are no more results.
|
||||
///
|
||||
///Arguments:
|
||||
/// - `limit`: Maximum number of items returned by a single call
|
||||
pub fn paginated_u32s_stream<'a>(
|
||||
&'a self,
|
||||
limit: Option<std::num::NonZeroU32>,
|
||||
) -> impl futures::Stream<Item = Result<u32, Error<types::Error>>> + Unpin + '_ {
|
||||
use futures::StreamExt;
|
||||
use futures::TryFutureExt;
|
||||
use futures::TryStreamExt;
|
||||
self.paginated_u32s(limit, None)
|
||||
.map_ok(move |page| {
|
||||
let page = page.into_inner();
|
||||
let first = futures::stream::iter(page.items).map(Ok);
|
||||
let rest = futures::stream::try_unfold(page.next_page, move |state| async move {
|
||||
if state.is_none() {
|
||||
Ok(None)
|
||||
} else {
|
||||
self.paginated_u32s(limit, state.as_deref())
|
||||
.map_ok(|page| {
|
||||
let page = page.into_inner();
|
||||
Some((futures::stream::iter(page.items).map(Ok), page.next_page))
|
||||
})
|
||||
.await
|
||||
}
|
||||
})
|
||||
.try_flatten();
|
||||
first.chain(rest)
|
||||
})
|
||||
.try_flatten_stream()
|
||||
.boxed()
|
||||
}
|
||||
}
|
||||
|
||||
/// Items consumers will typically use such as the Client.
|
||||
pub mod prelude {
|
||||
#[allow(unused_imports)]
|
||||
pub use super::Client;
|
||||
}
|
|
@ -1,11 +1,12 @@
|
|||
// Copyright 2023 Oxide Computer Company
|
||||
|
||||
use std::str::from_utf8;
|
||||
|
||||
use dropshot::{
|
||||
endpoint, ApiDescription, HttpError, HttpResponseUpdatedNoContent, Path,
|
||||
Query, RequestContext, TypedBody,
|
||||
endpoint, ApiDescription, ConfigDropshot, ConfigLogging,
|
||||
ConfigLoggingLevel, EmptyScanParams, HttpError, HttpResponseOk,
|
||||
HttpResponseUpdatedNoContent, HttpServerStarter, PaginationParams, Path,
|
||||
Query, RequestContext, ResultsPage, TypedBody,
|
||||
};
|
||||
use futures::StreamExt;
|
||||
use http::Response;
|
||||
use hyper::Body;
|
||||
use openapiv3::OpenAPI;
|
||||
|
@ -14,6 +15,11 @@ use progenitor_impl::{
|
|||
};
|
||||
use schemars::JsonSchema;
|
||||
use serde::Deserialize;
|
||||
use std::{
|
||||
net::{Ipv4Addr, SocketAddr},
|
||||
str::from_utf8,
|
||||
sync::{Arc, Mutex},
|
||||
};
|
||||
|
||||
fn generate_formatted(generator: &mut Generator, spec: &OpenAPI) -> String {
|
||||
let content = generator.generate_tokens(&spec).unwrap();
|
||||
|
@ -182,3 +188,191 @@ fn test_default_params() {
|
|||
&output,
|
||||
);
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct PaginatedU32sContext {
|
||||
all_values: std::ops::Range<u32>,
|
||||
// Record of `(offset, limit)` pairs we received
|
||||
page_pairs: Mutex<Vec<(usize, usize)>>,
|
||||
}
|
||||
|
||||
#[endpoint {
|
||||
method = GET,
|
||||
path = "/",
|
||||
}]
|
||||
async fn paginated_u32s(
|
||||
rqctx: RequestContext<Arc<PaginatedU32sContext>>,
|
||||
query_params: Query<PaginationParams<EmptyScanParams, u32>>,
|
||||
) -> Result<HttpResponseOk<ResultsPage<u32>>, HttpError> {
|
||||
let ctx = rqctx.context();
|
||||
let page_params = query_params.into_inner();
|
||||
let limit = usize::try_from(
|
||||
rqctx
|
||||
.page_limit(&page_params)
|
||||
.expect("invalid page limit")
|
||||
.get(),
|
||||
)
|
||||
.expect("non-usize limit");
|
||||
|
||||
let offset = match page_params.page {
|
||||
dropshot::WhichPage::First(EmptyScanParams {}) => 0,
|
||||
dropshot::WhichPage::Next(offset) => {
|
||||
usize::try_from(offset + 1).expect("non-usize offset")
|
||||
}
|
||||
};
|
||||
|
||||
ctx.page_pairs.lock().unwrap().push((offset, limit));
|
||||
let values = ctx.all_values.clone().skip(offset).take(limit).collect();
|
||||
let result =
|
||||
ResultsPage::new(values, &(), |&x, &()| x).expect("bad results page");
|
||||
|
||||
Ok(HttpResponseOk(result))
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_stream_pagination() {
|
||||
const TEST_NAME: &str = "test_stream_pagination";
|
||||
|
||||
let mut api = ApiDescription::new();
|
||||
api.register(paginated_u32s).unwrap();
|
||||
|
||||
let mut out = Vec::new();
|
||||
|
||||
api.openapi(TEST_NAME, "1").write(&mut out).unwrap();
|
||||
|
||||
let out = from_utf8(&out).unwrap();
|
||||
let spec = serde_json::from_str::<OpenAPI>(out).unwrap();
|
||||
|
||||
// Test both interface styles.
|
||||
let mut generator = Generator::new(
|
||||
GenerationSettings::new().with_interface(InterfaceStyle::Positional),
|
||||
);
|
||||
let output = generate_formatted(&mut generator, &spec);
|
||||
expectorate::assert_contents(
|
||||
format!("tests/output/src/{TEST_NAME}_positional.rs"),
|
||||
&output,
|
||||
);
|
||||
let mut generator = Generator::new(
|
||||
GenerationSettings::new().with_interface(InterfaceStyle::Builder),
|
||||
);
|
||||
let output = generate_formatted(&mut generator, &spec);
|
||||
expectorate::assert_contents(
|
||||
format!("tests/output/src/{TEST_NAME}_builder.rs"),
|
||||
&output,
|
||||
);
|
||||
|
||||
// Run the Dropshot server.
|
||||
let config_dropshot = ConfigDropshot {
|
||||
bind_address: SocketAddr::from((Ipv4Addr::LOCALHOST, 0)),
|
||||
..Default::default()
|
||||
};
|
||||
let config_logging = ConfigLogging::StderrTerminal {
|
||||
level: ConfigLoggingLevel::Debug,
|
||||
};
|
||||
let log = config_logging
|
||||
.to_logger(TEST_NAME)
|
||||
.expect("failed to create logger");
|
||||
let server_ctx = Arc::new(PaginatedU32sContext {
|
||||
all_values: 0..35,
|
||||
page_pairs: Mutex::default(),
|
||||
});
|
||||
let server = HttpServerStarter::new(
|
||||
&config_dropshot,
|
||||
api,
|
||||
Arc::clone(&server_ctx),
|
||||
&log,
|
||||
)
|
||||
.expect("failed to create server")
|
||||
.start();
|
||||
|
||||
let server_addr = format!("http://{}", server.local_addr());
|
||||
|
||||
// Test the positional client.
|
||||
#[allow(dead_code)]
|
||||
mod gen_client_positional {
|
||||
// This is weird: we're now `include!`ing the file we just used to
|
||||
// confirm the generated code is what we expect. If changes are made to
|
||||
// progenitor that affect this generated code, keep in mind that when
|
||||
// this test executes, the above check is against what we _currently_
|
||||
// produce, while this `include!` is what was on disk before the test
|
||||
// ran. This can be surprising if you're running the test with
|
||||
// `EXPECTORATE=overwrite`, because the above check will overwrite the
|
||||
// file on disk, but then the test proceeds and gets to this point,
|
||||
// where it uses what was on disk _before_ expectorate overwrote it.
|
||||
include!("output/src/test_stream_pagination_positional.rs");
|
||||
}
|
||||
|
||||
let client = gen_client_positional::Client::new(&server_addr);
|
||||
|
||||
let page_limit = 10.try_into().unwrap();
|
||||
let mut stream = client.paginated_u32s_stream(Some(page_limit));
|
||||
|
||||
let mut all_values = Vec::new();
|
||||
while let Some(result) = stream.next().await {
|
||||
match result {
|
||||
Ok(value) => {
|
||||
all_values.push(value);
|
||||
}
|
||||
Err(err) => {
|
||||
panic!("unexpected error: {err}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure we got all the results we expected.
|
||||
let expected_values = (0..35).collect::<Vec<_>>();
|
||||
assert_eq!(expected_values, all_values);
|
||||
|
||||
// Ensure the server saw the page requests we expect: we should always see a
|
||||
// limit of 10, and we should see offsets increasing by 10 until we get to
|
||||
// (30, 10); that will return 5 items, so we should see one final (35, 10)
|
||||
// for the client to confirm there are no more results.
|
||||
let expected_pages = vec![(0, 10), (10, 10), (20, 10), (30, 10), (35, 10)];
|
||||
assert_eq!(expected_pages, *server_ctx.page_pairs.lock().unwrap());
|
||||
|
||||
// Repeat the test with the builder client.
|
||||
server_ctx.page_pairs.lock().unwrap().clear();
|
||||
|
||||
#[allow(dead_code, unused_imports)]
|
||||
mod gen_client_builder {
|
||||
// This is weird: we're now `include!`ing the file we just used to
|
||||
// confirm the generated code is what we expect. If changes are made to
|
||||
// progenitor that affect this generated code, keep in mind that when
|
||||
// this test executes, the above check is against what we _currently_
|
||||
// produce, while this `include!` is what was on disk before the test
|
||||
// ran. This can be surprising if you're running the test with
|
||||
// `EXPECTORATE=overwrite`, because the above check will overwrite the
|
||||
// file on disk, but then the test proceeds and gets to this point,
|
||||
// where it uses what was on disk _before_ expectorate overwrote it.
|
||||
include!("output/src/test_stream_pagination_builder.rs");
|
||||
}
|
||||
|
||||
let client = gen_client_builder::Client::new(&server_addr);
|
||||
|
||||
let mut stream = client.paginated_u32s().limit(page_limit).stream();
|
||||
|
||||
let mut all_values = Vec::new();
|
||||
while let Some(result) = stream.next().await {
|
||||
match result {
|
||||
Ok(value) => {
|
||||
all_values.push(value);
|
||||
}
|
||||
Err(err) => {
|
||||
panic!("unexpected error: {err}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure we got all the results we expected.
|
||||
let expected_values = (0..35).collect::<Vec<_>>();
|
||||
assert_eq!(expected_values, all_values);
|
||||
|
||||
// Ensure the server saw the page requests we expect: we should always see a
|
||||
// limit of 10, and we should see offsets increasing by 10 until we get to
|
||||
// (30, 10); that will return 5 items, so we should see one final (35, 10)
|
||||
// for the client to confirm there are no more results.
|
||||
let expected_pages = vec![(0, 10), (10, 10), (20, 10), (30, 10), (35, 10)];
|
||||
assert_eq!(expected_pages, *server_ctx.page_pairs.lock().unwrap());
|
||||
|
||||
server.close().await.expect("failed to close server");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue