in ExportTenantData/src/main/java/tenant/export/ApiGatewayHandler.java [42:75]
public APIGatewayProxyResponseEvent handlePostRequest(final APIGatewayProxyRequestEvent input, final Context context) {
// we vending the token by extracting the tenant ID from the JWT token contained in
// the request headers
TokenVendor tokenVendor = new TokenVendor();
final AwsCredentialsProvider awsCredentialsProvider =
tokenVendor.vendTokenJwt(input.getHeaders());
// we parse the body of the POST request, currently we only accept a 'data' parameter to
// be written to DynamoDB, anything else will be ignored
Map<String, String> body;
try {
TypeReference<Map<String,String>> typeRef = new TypeReference<Map<String,String>>() {};
body = mapper.readValue(input.getBody(), typeRef);
} catch (JsonProcessingException e) {
logger.error("Error parsing JSON body.", e);
throw new RuntimeException(createBadRequestResponse(context.getAwsRequestId(),
"Error parsing JSON body."));
}
String tenant = tokenVendor.getTenant();
logger.info("TENANT ID: " + tenant);
// TenantProduct class encapsulates writing to DynamoDB using the enhanced DynamoDB
// client, which allows us to use POJOs
TenantProduct tenantProduct = new TenantProduct(awsCredentialsProvider, tenant, body.get("data"));
tenantProduct.save();
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
return new APIGatewayProxyResponseEvent()
.withHeaders(headers)
.withStatusCode(201);
}