aws_utils_kinesis_data_streams/
lib.rs

1use std::time::Duration;
2
3use aws_config::{
4    BehaviorVersion,
5    timeout::{TimeoutConfig, TimeoutConfigBuilder},
6};
7use aws_sdk_kinesis::Client;
8
9pub mod builder;
10pub mod error;
11pub mod kinesis_data_streams;
12
13pub use aws_sdk_kinesis;
14
15pub async fn make_client_with_timeout_default(endpoint_url: Option<String>) -> Client {
16    make_client_with_timeout(
17        endpoint_url,
18        Some(Duration::from_secs(3100)),
19        Some(Duration::from_secs(60)),
20        Some(Duration::from_secs(55)),
21        Some(Duration::from_secs(50)),
22    )
23    .await
24}
25
26pub async fn make_client_with_timeout(
27    endpoint_url: Option<String>,
28    connect_timeout: Option<Duration>,
29    operation_timeout: Option<Duration>,
30    operation_attempt_timeout: Option<Duration>,
31    read_timeout: Option<Duration>,
32) -> Client {
33    let mut timeout_config = TimeoutConfigBuilder::new();
34    timeout_config
35        .set_connect_timeout(connect_timeout)
36        .set_operation_timeout(operation_timeout)
37        .set_operation_attempt_timeout(operation_attempt_timeout)
38        .set_read_timeout(read_timeout);
39    make_client(endpoint_url, Some(timeout_config.build())).await
40}
41
42pub async fn make_client(
43    endpoint_url: Option<String>,
44    timeout_config: Option<TimeoutConfig>,
45) -> Client {
46    let mut config_loader = aws_config::defaults(BehaviorVersion::latest());
47    if let Some(timeout_config) = timeout_config {
48        config_loader = config_loader.timeout_config(timeout_config);
49    }
50    let config = config_loader.load().await;
51    let mut builder = aws_sdk_kinesis::config::Builder::from(&config);
52    if let Some(aws_endpoint_url) = endpoint_url {
53        builder = builder.endpoint_url(aws_endpoint_url)
54    }
55    Client::from_conf(builder.build())
56}