@@ -31,7 +31,7 @@ pub struct Dependencies {
3131 pub processing : ProcessingLayer ,
3232}
3333
34- async fn dependencies ( ) -> Result < Dependencies , Box < dyn std:: error:: Error > > {
34+ async fn dependencies ( ) -> Result < Dependencies , Box < dyn std:: error:: Error + Send + Sync > > {
3535 // Create the converter
3636 let converter_config = OfficeConverterConfig :: from_env ( ) ;
3737 let converter = OfficeConverter :: from_config ( converter_config) ?;
@@ -87,33 +87,32 @@ async fn dependencies() -> Result<Dependencies, Box<dyn std::error::Error>> {
8787}
8888
8989pub ( crate ) async fn outer_function_handler ( event : LambdaEvent < S3Event > ) -> Result < ( ) , Error > {
90- let dependencies = DEPENDENCIES
91- . get_or_try_init ( dependencies)
92- . await
93- // TODO: Map error type
94- . unwrap ( ) ;
90+ let dependencies = DEPENDENCIES . get_or_try_init ( dependencies) . await ?;
9591 function_handler ( event, dependencies) . await
9692}
9793
9894async fn function_handler (
9995 event : LambdaEvent < S3Event > ,
10096 dependencies : & Dependencies ,
10197) -> Result < ( ) , Error > {
102- // Extract some useful information from the request
103- let payload = event. payload ;
104- tracing:: info!( "Payload: {:?}" , payload) ;
98+ let ( bucket_name, object_key) = match get_object_parts ( & event. payload ) {
99+ Some ( value) => value,
100+ None => return Ok ( ( ) ) ,
101+ } ;
102+
103+ handle_file_uploaded ( dependencies, bucket_name, object_key) . await ;
104+ Ok ( ( ) )
105+ }
105106
106- // TODO: Replace unwraps with errors
107- let record = payload. records . first ( ) . unwrap ( ) ;
107+ fn get_object_parts ( payload : & S3Event ) -> Option < ( String , String ) > {
108+ let record = payload. records . first ( ) ? ;
108109 let bucket = & record. s3 . bucket ;
109110 let object = & record. s3 . object ;
110111
111- let bucket_name = bucket. name . as_ref ( ) . unwrap ( ) . clone ( ) ;
112- let object_key = object. key . as_ref ( ) . unwrap ( ) . clone ( ) ;
113-
114- handle_file_uploaded ( dependencies, bucket_name, object_key) . await ;
112+ let bucket_name = bucket. name . as_ref ( ) ?. clone ( ) ;
113+ let object_key = object. key . as_ref ( ) ?. clone ( ) ;
115114
116- Ok ( ( ) )
115+ Some ( ( bucket_name , object_key ) )
117116}
118117
119118/// Handle file upload notifications
0 commit comments