1
1
use std:: fs;
2
2
use serde:: Deserialize ;
3
3
use std:: env;
4
- use std:: path:: Path ;
5
4
use http:: { Uri } ;
6
- use aws_sdk_s3:: { Client , ByteStream , Config , Endpoint , Error } ;
5
+ use aws_sdk_s3:: { Client , Config , Endpoint , Error } ;
7
6
8
-
9
- #[ derive( Deserialize ) ]
10
- #[ derive( Debug ) ]
7
+ #[ derive( Debug , Deserialize ) ]
11
8
pub struct ConfigToml {
12
- s3 : S3 ,
9
+ pub s3 : S3 ,
13
10
}
14
11
15
- #[ derive( Deserialize ) ]
16
- #[ derive( Debug ) ]
17
- struct S3 {
12
+ #[ derive( Debug , Deserialize ) ]
13
+ pub struct S3 {
18
14
aws_access_key_id : String ,
19
15
aws_secret_key : String ,
20
16
aws_default_region : String ,
21
17
aws_endpoint_url : String ,
22
- aws_bucket_name : String ,
18
+ pub aws_bucket_name : String ,
23
19
}
24
20
25
21
pub fn read_config ( file_name : & str ) -> ConfigToml {
@@ -28,12 +24,10 @@ pub fn read_config(file_name: &str) -> ConfigToml {
28
24
config_info
29
25
}
30
26
31
- pub fn init_s3client ( config_info : ConfigToml ) -> ( aws_sdk_s3:: Client , String ) {
32
-
27
+ pub fn init_s3client ( config_info : ConfigToml ) -> aws_sdk_s3:: Client {
33
28
let ( secret_key, access_key, region, endpoint_url, bucket_name ) = ( "AWS_SECRET_ACCESS_KEY" , "AWS_ACCESS_KEY_ID" , "AWS_DEFAULT_REGION" , "AWS_ENDPOINT_URL" , "AWS_BUCKET_NAME" ) ;
34
29
let data = vec ! [ secret_key, access_key, region, endpoint_url] ;
35
30
36
-
37
31
for data in data. iter ( ) {
38
32
match data {
39
33
& "AWS_SECRET_ACCESS_KEY" => env:: set_var ( secret_key, & config_info. s3 . aws_secret_key ) ,
@@ -42,40 +36,30 @@ pub fn init_s3client(config_info: ConfigToml) -> (aws_sdk_s3::Client, String) {
42
36
& "AWS_ENDPOINT_URL" => env:: set_var ( endpoint_url, & config_info. s3 . aws_endpoint_url ) ,
43
37
& "AWS_BUCKET_NAME" => env:: set_var ( bucket_name, & config_info. s3 . aws_bucket_name ) ,
44
38
_ => println ! ( "{:?}" , config_info) ,
39
+ }
45
40
}
46
- }
47
-
48
- println ! ( "{}" , & config_info. s3. aws_bucket_name) ;
49
-
50
41
let ep = env:: var ( "AWS_ENDPOINT_URL" ) . unwrap_or ( "none" . to_string ( ) ) ;
51
42
let uri = ep. parse :: < Uri > ( ) . unwrap ( ) ;
52
43
let endpoint = Endpoint :: immutable ( uri) ;
53
44
let config = Config :: builder ( ) . endpoint_resolver ( endpoint) . build ( ) ;
54
-
55
- return ( Client :: from_conf ( config) , config_info. s3 . aws_bucket_name )
45
+ Client :: from_conf ( config)
56
46
}
57
47
58
48
#[ tokio:: main]
59
- pub async fn create_stream ( s3_client : aws_sdk_s3:: Client , bucket_name : String , stream_name : & str ) -> Result < ( ) , Error > {
60
-
61
- let body = ByteStream :: from_path ( Path :: new ( "Cargo.toml" ) ) . await ;
62
-
63
- match body {
64
- Ok ( b) => {
65
- let resp = s3_client
66
- . put_object ( )
67
- . bucket ( bucket_name)
68
- . key ( format ! ( "{}{}" , stream_name, "/.schema" ) )
69
- . body ( b)
70
- . send ( )
71
- . await ?;
72
-
49
+ pub async fn create_stream ( s3_client : Option < aws_sdk_s3:: Client > , bucket_name : String , stream_name : String ) -> Result < ( ) , Error > {
50
+ match s3_client {
51
+ Some ( client) => {
52
+ let resp = client
53
+ . put_object ( )
54
+ . bucket ( bucket_name)
55
+ . key ( format ! ( "{}{}" , stream_name, "/.schema" ) )
56
+ . send ( )
57
+ . await ?;
73
58
println ! ( "Upload success. Version: {:?}" , resp. version_id) ;
74
- }
75
- Err ( e ) => {
76
- println ! ( "Got an error DOING SOMETHING:" ) ;
77
- println ! ( "{}" , e ) ;
78
- }
59
+ Ok ( ( ) )
60
+ } ,
61
+ _ => {
62
+ Ok ( ( ) )
63
+ } ,
79
64
}
80
- Ok ( ( ) )
81
65
}
0 commit comments