pub struct Client { /* private fields */ }
Expand description
Client for account-level operations.
Implementations§
Source§impl Client
impl Client
Sourcepub fn new(config: ClientConfig) -> Self
pub fn new(config: ClientConfig) -> Self
Create a new SDK client.
Examples found in repository?
examples/delete_basin.rs (line 10)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let basin: BasinName = "my-favorite-basin".parse()?;
13
14 let delete_basin_request = DeleteBasinRequest::new(basin)
15 // Don't error if the basin doesn't exist.
16 .with_if_exists(true);
17
18 client.delete_basin(delete_basin_request).await?;
19
20 Ok(())
21}
More examples
examples/create_stream.rs (line 10)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let basin: BasinName = "my-favorite-basin".parse()?;
13 let basin_client = client.basin_client(basin);
14
15 let stream = "my-favorite-stream";
16
17 let stream_config = StreamConfig::new().with_storage_class(StorageClass::Express);
18
19 let create_stream_request = CreateStreamRequest::new(stream).with_config(stream_config);
20
21 let created_stream = basin_client.create_stream(create_stream_request).await?;
22 println!("{created_stream:#?}");
23
24 let stream_config = basin_client.get_stream_config(stream).await?;
25 println!("{stream_config:#?}");
26
27 Ok(())
28}
examples/list_all_basins.rs (line 10)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let mut all_basins = Vec::new();
13
14 let mut has_more = true;
15 let mut start_after: Option<String> = None;
16
17 while has_more {
18 let mut list_basins_request = ListBasinsRequest::new();
19 if let Some(start_after) = start_after.take() {
20 list_basins_request = list_basins_request.with_start_after(start_after);
21 }
22
23 let list_basins_response = client.list_basins(list_basins_request).await?;
24
25 all_basins.extend(list_basins_response.basins);
26
27 start_after = all_basins.last().map(|b| b.name.clone());
28 has_more = list_basins_response.has_more;
29 }
30
31 println!("{all_basins:#?}");
32
33 Ok(())
34}
examples/issue_access_token.rs (line 13)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let token = std::env::var("S2_ACCESS_TOKEN")?;
12 let config = ClientConfig::new(token);
13 let client = Client::new(config);
14
15 let access_token_id: AccessTokenId = "my-access-token".parse()?;
16 let access_token_info = AccessTokenInfo::new(access_token_id).with_scope(
17 AccessTokenScope::new()
18 .with_op_groups(
19 PermittedOperationGroups::new()
20 .with_account(ReadWritePermissions::new().with_read(true)),
21 )
22 .with_op(Operation::CreateStream)
23 .with_streams(ResourceSet::Prefix("my-stream-prefix".to_string()))
24 .with_basins(ResourceSet::Exact("my-perfect-basin".to_string())),
25 );
26 let token = client.issue_access_token(access_token_info).await?;
27
28 println!("Access token: {token}");
29
30 Ok(())
31}
examples/create_basin.rs (line 12)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let token = std::env::var("S2_ACCESS_TOKEN")?;
11 let config = ClientConfig::new(token);
12 let client = Client::new(config);
13
14 let basin: BasinName = "my-favorite-basin".parse()?;
15
16 let default_stream_config = StreamConfig::new().with_retention_policy(RetentionPolicy::Age(
17 // Set the default retention age to 10 days.
18 Duration::from_secs(10 * 24 * 60 * 60),
19 ));
20
21 let basin_config = BasinConfig::new()
22 .with_default_stream_config(default_stream_config)
23 .with_create_stream_on_append(false)
24 .with_create_stream_on_read(false);
25
26 let create_basin_request = CreateBasinRequest::new(basin.clone()).with_config(basin_config);
27
28 let created_basin = client.create_basin(create_basin_request).await?;
29 println!("{created_basin:#?}");
30
31 let basin_config = client.get_basin_config(basin).await?;
32 println!("{basin_config:#?}");
33
34 Ok(())
35}
examples/reconfigure_basin.rs (line 10)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let basin: BasinName = "my-favorite-basin".parse()?;
13
14 let default_stream_config_updates =
15 StreamConfig::new().with_storage_class(StorageClass::Standard);
16 let basin_config_updates = BasinConfig::new()
17 .with_default_stream_config(default_stream_config_updates)
18 .with_create_stream_on_append(true)
19 .with_create_stream_on_read(true);
20
21 let reconfigure_basin_request = ReconfigureBasinRequest::new(basin)
22 .with_config(basin_config_updates)
23 // Field mask specifies which fields to update.
24 .with_mask(vec!["default_stream_config.retention_policy".to_string()]);
25
26 let updated_basin_config = client.reconfigure_basin(reconfigure_basin_request).await?;
27
28 println!("{updated_basin_config:#?}");
29
30 Ok(())
31}
Sourcepub fn new_with_connector<C>(config: ClientConfig, connector: C) -> Self
pub fn new_with_connector<C>(config: ClientConfig, connector: C) -> Self
Create a new SDK client using a custom connector.
Sourcepub fn basin_client(&self, basin: BasinName) -> BasinClient
pub fn basin_client(&self, basin: BasinName) -> BasinClient
Create basin client from the given name.
Examples found in repository?
examples/create_stream.rs (line 13)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let basin: BasinName = "my-favorite-basin".parse()?;
13 let basin_client = client.basin_client(basin);
14
15 let stream = "my-favorite-stream";
16
17 let stream_config = StreamConfig::new().with_storage_class(StorageClass::Express);
18
19 let create_stream_request = CreateStreamRequest::new(stream).with_config(stream_config);
20
21 let created_stream = basin_client.create_stream(create_stream_request).await?;
22 println!("{created_stream:#?}");
23
24 let stream_config = basin_client.get_stream_config(stream).await?;
25 println!("{stream_config:#?}");
26
27 Ok(())
28}
Sourcepub async fn list_basins(
&self,
req: ListBasinsRequest,
) -> Result<ListBasinsResponse, ClientError>
pub async fn list_basins( &self, req: ListBasinsRequest, ) -> Result<ListBasinsResponse, ClientError>
List basins.
Examples found in repository?
examples/list_all_basins.rs (line 23)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let mut all_basins = Vec::new();
13
14 let mut has_more = true;
15 let mut start_after: Option<String> = None;
16
17 while has_more {
18 let mut list_basins_request = ListBasinsRequest::new();
19 if let Some(start_after) = start_after.take() {
20 list_basins_request = list_basins_request.with_start_after(start_after);
21 }
22
23 let list_basins_response = client.list_basins(list_basins_request).await?;
24
25 all_basins.extend(list_basins_response.basins);
26
27 start_after = all_basins.last().map(|b| b.name.clone());
28 has_more = list_basins_response.has_more;
29 }
30
31 println!("{all_basins:#?}");
32
33 Ok(())
34}
Sourcepub async fn create_basin(
&self,
req: CreateBasinRequest,
) -> Result<BasinInfo, ClientError>
pub async fn create_basin( &self, req: CreateBasinRequest, ) -> Result<BasinInfo, ClientError>
Create a new basin.
Provide a client request token with the S2-Request-Token
header for idempotent retry behaviour.
Examples found in repository?
examples/create_basin.rs (line 28)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let token = std::env::var("S2_ACCESS_TOKEN")?;
11 let config = ClientConfig::new(token);
12 let client = Client::new(config);
13
14 let basin: BasinName = "my-favorite-basin".parse()?;
15
16 let default_stream_config = StreamConfig::new().with_retention_policy(RetentionPolicy::Age(
17 // Set the default retention age to 10 days.
18 Duration::from_secs(10 * 24 * 60 * 60),
19 ));
20
21 let basin_config = BasinConfig::new()
22 .with_default_stream_config(default_stream_config)
23 .with_create_stream_on_append(false)
24 .with_create_stream_on_read(false);
25
26 let create_basin_request = CreateBasinRequest::new(basin.clone()).with_config(basin_config);
27
28 let created_basin = client.create_basin(create_basin_request).await?;
29 println!("{created_basin:#?}");
30
31 let basin_config = client.get_basin_config(basin).await?;
32 println!("{basin_config:#?}");
33
34 Ok(())
35}
Sourcepub async fn delete_basin(
&self,
req: DeleteBasinRequest,
) -> Result<(), ClientError>
pub async fn delete_basin( &self, req: DeleteBasinRequest, ) -> Result<(), ClientError>
Delete a basin. Basin deletion is asynchronous, and may take a few minutes to complete.
Examples found in repository?
examples/delete_basin.rs (line 18)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let basin: BasinName = "my-favorite-basin".parse()?;
13
14 let delete_basin_request = DeleteBasinRequest::new(basin)
15 // Don't error if the basin doesn't exist.
16 .with_if_exists(true);
17
18 client.delete_basin(delete_basin_request).await?;
19
20 Ok(())
21}
Sourcepub async fn get_basin_config(
&self,
basin: BasinName,
) -> Result<BasinConfig, ClientError>
pub async fn get_basin_config( &self, basin: BasinName, ) -> Result<BasinConfig, ClientError>
Get basin configuration.
Examples found in repository?
examples/create_basin.rs (line 31)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let token = std::env::var("S2_ACCESS_TOKEN")?;
11 let config = ClientConfig::new(token);
12 let client = Client::new(config);
13
14 let basin: BasinName = "my-favorite-basin".parse()?;
15
16 let default_stream_config = StreamConfig::new().with_retention_policy(RetentionPolicy::Age(
17 // Set the default retention age to 10 days.
18 Duration::from_secs(10 * 24 * 60 * 60),
19 ));
20
21 let basin_config = BasinConfig::new()
22 .with_default_stream_config(default_stream_config)
23 .with_create_stream_on_append(false)
24 .with_create_stream_on_read(false);
25
26 let create_basin_request = CreateBasinRequest::new(basin.clone()).with_config(basin_config);
27
28 let created_basin = client.create_basin(create_basin_request).await?;
29 println!("{created_basin:#?}");
30
31 let basin_config = client.get_basin_config(basin).await?;
32 println!("{basin_config:#?}");
33
34 Ok(())
35}
Sourcepub async fn reconfigure_basin(
&self,
req: ReconfigureBasinRequest,
) -> Result<BasinConfig, ClientError>
pub async fn reconfigure_basin( &self, req: ReconfigureBasinRequest, ) -> Result<BasinConfig, ClientError>
Update basin configuration.
Examples found in repository?
examples/reconfigure_basin.rs (line 26)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let client = Client::new(config);
11
12 let basin: BasinName = "my-favorite-basin".parse()?;
13
14 let default_stream_config_updates =
15 StreamConfig::new().with_storage_class(StorageClass::Standard);
16 let basin_config_updates = BasinConfig::new()
17 .with_default_stream_config(default_stream_config_updates)
18 .with_create_stream_on_append(true)
19 .with_create_stream_on_read(true);
20
21 let reconfigure_basin_request = ReconfigureBasinRequest::new(basin)
22 .with_config(basin_config_updates)
23 // Field mask specifies which fields to update.
24 .with_mask(vec!["default_stream_config.retention_policy".to_string()]);
25
26 let updated_basin_config = client.reconfigure_basin(reconfigure_basin_request).await?;
27
28 println!("{updated_basin_config:#?}");
29
30 Ok(())
31}
Sourcepub async fn issue_access_token(
&self,
info: AccessTokenInfo,
) -> Result<String, ClientError>
pub async fn issue_access_token( &self, info: AccessTokenInfo, ) -> Result<String, ClientError>
Issue a new access token.
Examples found in repository?
examples/issue_access_token.rs (line 26)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let token = std::env::var("S2_ACCESS_TOKEN")?;
12 let config = ClientConfig::new(token);
13 let client = Client::new(config);
14
15 let access_token_id: AccessTokenId = "my-access-token".parse()?;
16 let access_token_info = AccessTokenInfo::new(access_token_id).with_scope(
17 AccessTokenScope::new()
18 .with_op_groups(
19 PermittedOperationGroups::new()
20 .with_account(ReadWritePermissions::new().with_read(true)),
21 )
22 .with_op(Operation::CreateStream)
23 .with_streams(ResourceSet::Prefix("my-stream-prefix".to_string()))
24 .with_basins(ResourceSet::Exact("my-perfect-basin".to_string())),
25 );
26 let token = client.issue_access_token(access_token_info).await?;
27
28 println!("Access token: {token}");
29
30 Ok(())
31}
Sourcepub async fn revoke_access_token(
&self,
id: AccessTokenId,
) -> Result<AccessTokenInfo, ClientError>
pub async fn revoke_access_token( &self, id: AccessTokenId, ) -> Result<AccessTokenInfo, ClientError>
Revoke an access token.
Sourcepub async fn list_access_tokens(
&self,
req: ListAccessTokensRequest,
) -> Result<ListAccessTokensResponse, ClientError>
pub async fn list_access_tokens( &self, req: ListAccessTokensRequest, ) -> Result<ListAccessTokensResponse, ClientError>
List access tokens.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Client
impl !RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl !UnwindSafe for Client
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request