pub struct S2 { /* private fields */ }Expand description
An S2 account.
Implementations§
Source§impl S2
impl S2
Sourcepub fn new(config: S2Config) -> Result<Self, S2Error>
pub fn new(config: S2Config) -> Result<Self, S2Error>
Create a new S2.
Examples found in repository?
examples/list_all_basins.rs (line 13)
8async fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let access_token =
10 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
11
12 let config = S2Config::new(access_token);
13 let s2 = S2::new(config)?;
14
15 let input = ListAllBasinsInput::new();
16
17 let basins: Vec<_> = s2.list_all_basins(input).take(10).try_collect().await?;
18
19 println!("{basins:#?}");
20
21 Ok(())
22}More examples
examples/delete_basin.rs (line 15)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13
14 let config = S2Config::new(access_token);
15 let s2 = S2::new(config)?;
16
17 let input = DeleteBasinInput::new(basin_name).with_ignore_not_found(true);
18 s2.delete_basin(input).await?;
19 println!("Deletion requested");
20
21 Ok(())
22}examples/list_streams.rs (line 14)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13
14 let s2 = S2::new(S2Config::new(access_token))?;
15 let basin = s2.basin(basin_name);
16
17 let input = ListStreamsInput::new().with_prefix("my-".parse()?);
18 let page = basin.list_streams(input).await?;
19 println!("{page:#?}");
20
21 Ok(())
22}examples/delete_stream.rs (line 17)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13 let stream_name: StreamName = std::env::var("S2_STREAM")
14 .map_err(|_| "S2_STREAM env var not set")?
15 .parse()?;
16
17 let s2 = S2::new(S2Config::new(access_token))?;
18 let basin = s2.basin(basin_name);
19
20 let input = DeleteStreamInput::new(stream_name);
21 basin.delete_stream(input).await?;
22 println!("Deletion requested");
23
24 Ok(())
25}examples/consumer.rs (line 14)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let access_token = std::env::var("S2_ACCESS_TOKEN")?;
11 let basin_name: BasinName = std::env::var("S2_BASIN")?.parse()?;
12 let stream_name: StreamName = std::env::var("S2_STREAM")?.parse()?;
13
14 let s2 = S2::new(S2Config::new(access_token))?;
15 let stream = s2.basin(basin_name).stream(stream_name);
16
17 let input = ReadInput::new();
18 let mut batches = stream.read_session(input).await?;
19 loop {
20 select! {
21 batch = batches.next() => {
22 let Some(batch) = batch else { break };
23 let batch = batch?;
24 println!("{batch:?}");
25 }
26 _ = tokio::signal::ctrl_c() => break,
27 }
28 }
29
30 Ok(())
31}examples/reconfigure_stream.rs (line 20)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let access_token =
12 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
13 let basin_name: BasinName = std::env::var("S2_BASIN")
14 .map_err(|_| "S2_BASIN env var not set")?
15 .parse()?;
16 let stream_name: StreamName = std::env::var("S2_STREAM")
17 .map_err(|_| "S2_STREAM env var not set")?
18 .parse()?;
19
20 let s2 = S2::new(S2Config::new(access_token))?;
21 let basin = s2.basin(basin_name);
22
23 let input = ReconfigureStreamInput::new(
24 stream_name,
25 StreamReconfiguration::new().with_retention_policy(RetentionPolicy::Age(10 * 24 * 60 * 60)),
26 );
27 let config = basin.reconfigure_stream(input).await?;
28 println!("{config:#?}");
29
30 Ok(())
31}Sourcepub fn basin(&self, name: BasinName) -> S2Basin
pub fn basin(&self, name: BasinName) -> S2Basin
Get an S2Basin.
Examples found in repository?
examples/list_streams.rs (line 15)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13
14 let s2 = S2::new(S2Config::new(access_token))?;
15 let basin = s2.basin(basin_name);
16
17 let input = ListStreamsInput::new().with_prefix("my-".parse()?);
18 let page = basin.list_streams(input).await?;
19 println!("{page:#?}");
20
21 Ok(())
22}More examples
examples/delete_stream.rs (line 18)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13 let stream_name: StreamName = std::env::var("S2_STREAM")
14 .map_err(|_| "S2_STREAM env var not set")?
15 .parse()?;
16
17 let s2 = S2::new(S2Config::new(access_token))?;
18 let basin = s2.basin(basin_name);
19
20 let input = DeleteStreamInput::new(stream_name);
21 basin.delete_stream(input).await?;
22 println!("Deletion requested");
23
24 Ok(())
25}examples/consumer.rs (line 15)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let access_token = std::env::var("S2_ACCESS_TOKEN")?;
11 let basin_name: BasinName = std::env::var("S2_BASIN")?.parse()?;
12 let stream_name: StreamName = std::env::var("S2_STREAM")?.parse()?;
13
14 let s2 = S2::new(S2Config::new(access_token))?;
15 let stream = s2.basin(basin_name).stream(stream_name);
16
17 let input = ReadInput::new();
18 let mut batches = stream.read_session(input).await?;
19 loop {
20 select! {
21 batch = batches.next() => {
22 let Some(batch) = batch else { break };
23 let batch = batch?;
24 println!("{batch:?}");
25 }
26 _ = tokio::signal::ctrl_c() => break,
27 }
28 }
29
30 Ok(())
31}examples/reconfigure_stream.rs (line 21)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let access_token =
12 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
13 let basin_name: BasinName = std::env::var("S2_BASIN")
14 .map_err(|_| "S2_BASIN env var not set")?
15 .parse()?;
16 let stream_name: StreamName = std::env::var("S2_STREAM")
17 .map_err(|_| "S2_STREAM env var not set")?
18 .parse()?;
19
20 let s2 = S2::new(S2Config::new(access_token))?;
21 let basin = s2.basin(basin_name);
22
23 let input = ReconfigureStreamInput::new(
24 stream_name,
25 StreamReconfiguration::new().with_retention_policy(RetentionPolicy::Age(10 * 24 * 60 * 60)),
26 );
27 let config = basin.reconfigure_stream(input).await?;
28 println!("{config:#?}");
29
30 Ok(())
31}examples/get_latest_record.rs (line 20)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let access_token =
11 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
12 let basin_name: BasinName = std::env::var("S2_BASIN")
13 .map_err(|_| "S2_BASIN env var not set")?
14 .parse()?;
15 let stream_name: StreamName = std::env::var("S2_STREAM")
16 .map_err(|_| "S2_STREAM env var not set")?
17 .parse()?;
18
19 let s2 = S2::new(S2Config::new(access_token))?;
20 let stream = s2.basin(basin_name).stream(stream_name);
21
22 let input = ReadInput::new()
23 .with_start(ReadStart::new().with_from(ReadFrom::TailOffset(1)))
24 .with_stop(ReadStop::new().with_limits(ReadLimits::new().with_count(1)));
25 let batch = stream.read(input).await?;
26 println!("{batch:#?}");
27
28 Ok(())
29}examples/explicit_trim.rs (line 18)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13 let stream_name: StreamName = std::env::var("S2_STREAM")
14 .map_err(|_| "S2_STREAM env var not set")?
15 .parse()?;
16
17 let s2 = S2::new(S2Config::new(access_token))?;
18 let stream = s2.basin(basin_name).stream(stream_name);
19
20 let tail = stream.check_tail().await?;
21 if tail.seq_num == 0 {
22 println!("Empty stream");
23 return Ok(());
24 }
25
26 let input = AppendInput::new(AppendRecordBatch::try_from_iter([CommandRecord::trim(
27 tail.seq_num - 1,
28 )
29 .into()])?);
30 stream.append(input).await?;
31 println!("Trim requested");
32
33 Ok(())
34}Additional examples can be found in:
Sourcepub async fn list_basins(
&self,
input: ListBasinsInput,
) -> Result<Page<BasinInfo>, S2Error>
pub async fn list_basins( &self, input: ListBasinsInput, ) -> Result<Page<BasinInfo>, S2Error>
List a page of basins.
See list_all_basins for automatic pagination.
Sourcepub fn list_all_basins(&self, input: ListAllBasinsInput) -> Streaming<BasinInfo>
pub fn list_all_basins(&self, input: ListAllBasinsInput) -> Streaming<BasinInfo>
List all basins, paginating automatically.
Examples found in repository?
examples/list_all_basins.rs (line 17)
8async fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let access_token =
10 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
11
12 let config = S2Config::new(access_token);
13 let s2 = S2::new(config)?;
14
15 let input = ListAllBasinsInput::new();
16
17 let basins: Vec<_> = s2.list_all_basins(input).take(10).try_collect().await?;
18
19 println!("{basins:#?}");
20
21 Ok(())
22}Sourcepub async fn create_basin(
&self,
input: CreateBasinInput,
) -> Result<BasinInfo, S2Error>
pub async fn create_basin( &self, input: CreateBasinInput, ) -> Result<BasinInfo, S2Error>
Create a basin.
Examples found in repository?
examples/create_basin.rs (line 22)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13
14 let config = S2Config::new(access_token);
15 let s2 = S2::new(config)?;
16
17 let input = CreateBasinInput::new(basin_name.clone()).with_config(
18 BasinConfig::new().with_default_stream_config(
19 StreamConfig::new().with_retention_policy(RetentionPolicy::Age(10 * 24 * 60 * 60)),
20 ),
21 );
22 let basin_info = s2.create_basin(input).await?;
23 println!("{basin_info:#?}");
24
25 let basin_config = s2.get_basin_config(basin_name).await?;
26 println!("{basin_config:#?}");
27
28 Ok(())
29}Sourcepub async fn get_basin_config(
&self,
name: BasinName,
) -> Result<BasinConfig, S2Error>
pub async fn get_basin_config( &self, name: BasinName, ) -> Result<BasinConfig, S2Error>
Get basin configuration.
Examples found in repository?
examples/create_basin.rs (line 25)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13
14 let config = S2Config::new(access_token);
15 let s2 = S2::new(config)?;
16
17 let input = CreateBasinInput::new(basin_name.clone()).with_config(
18 BasinConfig::new().with_default_stream_config(
19 StreamConfig::new().with_retention_policy(RetentionPolicy::Age(10 * 24 * 60 * 60)),
20 ),
21 );
22 let basin_info = s2.create_basin(input).await?;
23 println!("{basin_info:#?}");
24
25 let basin_config = s2.get_basin_config(basin_name).await?;
26 println!("{basin_config:#?}");
27
28 Ok(())
29}Sourcepub async fn delete_basin(&self, input: DeleteBasinInput) -> Result<(), S2Error>
pub async fn delete_basin(&self, input: DeleteBasinInput) -> Result<(), S2Error>
Delete a basin.
Examples found in repository?
examples/delete_basin.rs (line 18)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let access_token =
9 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
10 let basin_name: BasinName = std::env::var("S2_BASIN")
11 .map_err(|_| "S2_BASIN env var not set")?
12 .parse()?;
13
14 let config = S2Config::new(access_token);
15 let s2 = S2::new(config)?;
16
17 let input = DeleteBasinInput::new(basin_name).with_ignore_not_found(true);
18 s2.delete_basin(input).await?;
19 println!("Deletion requested");
20
21 Ok(())
22}Sourcepub async fn reconfigure_basin(
&self,
input: ReconfigureBasinInput,
) -> Result<BasinConfig, S2Error>
pub async fn reconfigure_basin( &self, input: ReconfigureBasinInput, ) -> Result<BasinConfig, S2Error>
Reconfigure a basin.
Examples found in repository?
examples/reconfigure_basin.rs (line 30)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let access_token =
12 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
13 let basin_name: BasinName = std::env::var("S2_BASIN")
14 .map_err(|_| "S2_BASIN env var not set")?
15 .parse()?;
16
17 let config = S2Config::new(access_token);
18 let s2 = S2::new(config)?;
19
20 let input = ReconfigureBasinInput::new(
21 basin_name,
22 BasinReconfiguration::new()
23 .with_default_stream_config(
24 StreamReconfiguration::new()
25 .with_storage_class(StorageClass::Standard)
26 .with_timestamping(TimestampingReconfiguration::new().with_uncapped(true)),
27 )
28 .with_create_stream_on_read(true),
29 );
30 let config = s2.reconfigure_basin(input).await?;
31 println!("{config:#?}");
32
33 Ok(())
34}Sourcepub async fn list_access_tokens(
&self,
input: ListAccessTokensInput,
) -> Result<Page<AccessTokenInfo>, S2Error>
pub async fn list_access_tokens( &self, input: ListAccessTokensInput, ) -> Result<Page<AccessTokenInfo>, S2Error>
List a page of access tokens.
See list_all_access_tokens for automatic pagination.
Sourcepub fn list_all_access_tokens(
&self,
input: ListAllAccessTokensInput,
) -> Streaming<AccessTokenInfo>
pub fn list_all_access_tokens( &self, input: ListAllAccessTokensInput, ) -> Streaming<AccessTokenInfo>
List all access tokens, paginating automatically.
Sourcepub async fn issue_access_token(
&self,
input: IssueAccessTokenInput,
) -> Result<String, S2Error>
pub async fn issue_access_token( &self, input: IssueAccessTokenInput, ) -> Result<String, S2Error>
Issue an access token.
Examples found in repository?
examples/issue_access_token.rs (line 29)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let access_token =
12 std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
13 let basin_name: BasinName = std::env::var("S2_BASIN")
14 .map_err(|_| "S2_BASIN env var not set")?
15 .parse()?;
16
17 let config = S2Config::new(access_token);
18 let s2 = S2::new(config)?;
19
20 let input = IssueAccessTokenInput::new(
21 "ro-token".parse()?,
22 AccessTokenScopeInput::from_op_group_perms(
23 OperationGroupPermissions::new().with_account(ReadWritePermissions::read_only()),
24 )
25 .with_ops([Operation::CreateStream])
26 .with_streams(StreamMatcher::Prefix("audit".parse()?))
27 .with_basins(BasinMatcher::Exact(basin_name)),
28 );
29 let issued_token = s2.issue_access_token(input).await?;
30 println!("Issued access token: {issued_token}");
31
32 Ok(())
33}Sourcepub async fn revoke_access_token(
&self,
id: AccessTokenId,
) -> Result<(), S2Error>
pub async fn revoke_access_token( &self, id: AccessTokenId, ) -> Result<(), S2Error>
Revoke an access token.
Sourcepub async fn get_account_metrics(
&self,
input: GetAccountMetricsInput,
) -> Result<Vec<Metric>, S2Error>
pub async fn get_account_metrics( &self, input: GetAccountMetricsInput, ) -> Result<Vec<Metric>, S2Error>
Get account metrics.
Sourcepub async fn get_basin_metrics(
&self,
input: GetBasinMetricsInput,
) -> Result<Vec<Metric>, S2Error>
pub async fn get_basin_metrics( &self, input: GetBasinMetricsInput, ) -> Result<Vec<Metric>, S2Error>
Get basin metrics.
Sourcepub async fn get_stream_metrics(
&self,
input: GetStreamMetricsInput,
) -> Result<Vec<Metric>, S2Error>
pub async fn get_stream_metrics( &self, input: GetStreamMetricsInput, ) -> Result<Vec<Metric>, S2Error>
Get stream metrics.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for S2
impl !RefUnwindSafe for S2
impl Send for S2
impl Sync for S2
impl Unpin for S2
impl !UnwindSafe for S2
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more