outbox_pattern_processor/
aws.rs1use std::borrow::Cow;
2use std::env;
3
4use aws_config::default_provider::credentials::DefaultCredentialsChain;
5use aws_config::Region;
6
7#[derive(Clone)]
8pub struct SnsClient {
9 pub client: aws_sdk_sns::Client,
10}
11
12#[derive(Clone)]
13pub struct SqsClient {
14 pub client: aws_sdk_sqs::Client,
15}
16
17impl SnsClient {
18 pub async fn new(aws_config: &aws_config::SdkConfig) -> SnsClient {
19 let endpoint = env::var("LOCAL_ENDPOINT").ok();
20 let region = env::var("LOCAL_REGION").map(|region| Region::new(Cow::Owned(region))).ok();
21
22 let client = match endpoint {
23 None => aws_sdk_sns::Client::new(aws_config),
24 Some(url) => aws_sdk_sns::Client::from_conf(
25 aws_sdk_sns::config::Builder::from(aws_config)
26 .endpoint_url(url)
27 .region(region)
28 .credentials_provider(DefaultCredentialsChain::builder().build().await)
29 .build(),
30 ),
31 };
32
33 SnsClient { client }
34 }
35}
36
37impl SqsClient {
38 pub async fn new(aws_config: &aws_config::SdkConfig) -> SqsClient {
39 let endpoint = env::var("LOCAL_ENDPOINT").ok();
40 let region = env::var("LOCAL_REGION").map(|region| Region::new(Cow::Owned(region))).ok();
41
42 let client = match endpoint {
43 None => aws_sdk_sqs::Client::new(aws_config),
44 Some(url) => aws_sdk_sqs::Client::from_conf(
45 aws_sdk_sqs::config::Builder::from(aws_config)
46 .endpoint_url(url)
47 .region(region)
48 .credentials_provider(DefaultCredentialsChain::builder().build().await)
49 .build(),
50 ),
51 };
52
53 SqsClient { client }
54 }
55}