-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmailSenderLambdaRequestHandler.java
72 lines (56 loc) · 2.45 KB
/
EmailSenderLambdaRequestHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.sarzhv.lambda.sendemail;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.sarzhv.lambda.sendemail.apigateway.ApiGatewayRequestExtractor;
import com.sarzhv.lambda.sendemail.apigateway.ApiGatewayResponseBuilder;
import lombok.extern.slf4j.Slf4j;
import javax.mail.MessagingException;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class EmailSenderLambdaRequestHandler implements RequestHandler<Map<String, Object>, Map<String, Object>> {
@Override
public Map<String, Object> handleRequest(Map<String, Object> inputData, Context context) {
log.info("EmailSenderLambdaRequestHandler inputData: " + inputData);
Map<String, Object> transferBookData = ApiGatewayRequestExtractor.extractBodyFromInput(inputData);
Map<String, String> headers = ApiGatewayRequestExtractor.extractHeadersFromInput(inputData);
Map<String, String> responseBody;
int statusCode;
try {
EmailSenderDelegate emailSenderDelegate = new EmailSenderDelegate();
emailSenderDelegate.sendTransferBookEmail(transferBookData);
responseBody = buildSuccessResponseBody();
statusCode = 200;
}
catch (Exception e) {
log.error("Error occurred during handling request", e);
responseBody = buildFailedResponseBody(e);
statusCode = getResponseStatusCodeByException(e);
}
return ApiGatewayResponseBuilder.buildApiGatewayResponse(responseBody, statusCode);
}
private static Map<String, String> buildSuccessResponseBody() {
Map<String, String> response = new HashMap<>();
response.put("result", "success");
return response;
}
private static Map<String, String> buildFailedResponseBody(Exception e) {
String exceptionMessage = e.getMessage();
String errorType = "unknown";
if (exceptionMessage.contains("email address")) {
errorType = "EmailValidation";
}
Map<String, String> response = new HashMap<>();
response.put("result", "failed");
response.put("errorMessage", exceptionMessage);
response.put("errorType", errorType);
return response;
}
private static int getResponseStatusCodeByException(Exception e) {
if (e instanceof MessagingException) {
return 500;
} else {
return 400;
}
}
}