Skip to content

Commit 491f8ec

Browse files
committed
feat: proper error handling for startup
1 parent 6f69e48 commit 491f8ec

3 files changed

Lines changed: 19 additions & 27 deletions

File tree

lambdas/http/src/main.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,13 @@ async fn main() -> Result<(), Error> {
3939

4040
tracing::init_default_subscriber();
4141

42-
let app = app()
43-
.await
44-
// TODO: Handle
45-
.unwrap();
42+
let app = app().await?;
4643

4744
run_with_streaming_response(app).await
4845
}
4946

5047
// TODO: Needs a db_cache.close_all() cleanup logic when the program exits
51-
async fn app() -> Result<Router, Box<dyn std::error::Error>> {
48+
async fn app() -> Result<Router, Box<dyn std::error::Error + Send + Sync>> {
5249
let max_file_size_bytes = match std::env::var("DOCBOX_MAX_FILE_SIZE_BYTES") {
5350
Ok(value) => value.parse::<i32>()?,
5451
// Default max file size in bytes (100MB)

lambdas/presigned-cleanup/src/event_handler.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub struct Dependencies {
2222
pub storage: StorageLayerFactory,
2323
}
2424

25-
async fn dependencies() -> Result<Dependencies, Box<dyn std::error::Error>> {
25+
async fn dependencies() -> Result<Dependencies, Box<dyn std::error::Error + Send + Sync>> {
2626
let aws_config = aws_config().await;
2727

2828
// Create secrets manager
@@ -48,11 +48,7 @@ async fn dependencies() -> Result<Dependencies, Box<dyn std::error::Error>> {
4848
pub(crate) async fn outer_function_handler(
4949
event: LambdaEvent<EventBridgeEvent>,
5050
) -> Result<(), Error> {
51-
let dependencies = DEPENDENCIES
52-
.get_or_try_init(dependencies)
53-
.await
54-
// TODO: Map error
55-
.unwrap();
51+
let dependencies = DEPENDENCIES.get_or_try_init(dependencies).await?;
5652
function_handler(event, dependencies).await
5753
}
5854

lambdas/upload-completion/src/event_handler.rs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

8989
pub(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

9894
async 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

Comments
 (0)