batch_mode_process_response/
process_error_data.rs

1// ---------------- [ File: batch-mode-process-response/src/process_error_data.rs ]
2crate::ix!();
3
4pub async fn process_error_data(error_data: &BatchErrorData) 
5-> Result<(), BatchErrorProcessingError> 
6{
7    for response_record in error_data.responses() {
8        if let Some(error_body) = response_record.response().body().as_error() {
9            eprintln!(
10                "Error for Custom ID '{}': Code: {:?}, Message: {}",
11                response_record.custom_id(),
12                error_body.error().code(),
13                error_body.error().message()
14            );
15            // Handle the error as needed
16        }
17    }
18    Ok(())
19}
20
21#[cfg(test)]
22mod process_error_data_tests {
23    use super::*;
24
25    #[traced_test]
26    async fn test_process_error_data() {
27        // Supply error_type
28        let err_details = BatchErrorDetailsBuilder::default()
29            .error_type(ErrorType::Unknown("test_err".to_string()))
30            .code(Some("401".to_string()))
31            .message("Unauthorized".to_string())
32            .build()
33            .unwrap();
34
35        let err_body = BatchErrorResponseBodyBuilder::default()
36            .error(err_details)
37            .build()
38            .unwrap();
39
40        let response_content = BatchResponseContentBuilder::default()
41            .status_code(400_u16)
42            .request_id(ResponseRequestId::new("resp_err1"))
43            .body(BatchResponseBody::Error(err_body))
44            .build()
45            .unwrap();
46
47        let record = BatchResponseRecordBuilder::default()
48            .id(BatchRequestId::new("id"))
49            .custom_id(CustomRequestId::new("err1"))
50            .response(response_content)
51            .build()
52            .unwrap();
53
54        let error_data = BatchErrorDataBuilder::default()
55            .responses(vec![record])
56            .build()
57            .unwrap();
58
59        let result = process_error_data(&error_data).await;
60        assert!(result.is_ok());
61    }
62}