in services/audit/src/main/java/com/example/audit/web/AuditEventController.java [70:126]
public ResponseEntity<String> receiveMessage(
@RequestBody Map<String, Object> body, @RequestHeader Map<String, String> headers) throws IOException, InterruptedException, ExecutionException {
// Validate the number of available processors
logger.info("EventController: Active processors: " + Runtime.getRuntime().availableProcessors());
System.out.println("Header elements");
for (String field : requiredFields) {
if (headers.get(field) == null) {
String msg = String.format("Missing expected header: %s.", field);
System.out.println(msg);
return new ResponseEntity<String>(msg, HttpStatus.BAD_REQUEST);
} else {
System.out.println(field + " : " + headers.get(field));
}
}
System.out.println("Body elements");
for (String bodyField : body.keySet()) {
System.out.println(bodyField + " : " + body.get(bodyField));
}
if (headers.get("ce-subject") == null) {
String msg = "Missing expected header: ce-subject.";
System.out.println(msg);
return new ResponseEntity<String>(msg, HttpStatus.BAD_REQUEST);
}
String msg = "OK";
Map<String, String> message = (Map<String, String>) body.get("message");
String quote = message.get("quote");
String author = message.get("author");
String book = message.get("book");
String randomID = message.get("randomId");
// Saving result to Firestore
try {
ApiFuture<WriteResult> writeResult = eventService.auditQuote(quote, author, book, randomID);
msg = String.format("Book metadata saved in Firestore at %s",
writeResult.get().getUpdateTime());
logger.info(msg);
} catch(IllegalArgumentException e) {
System.out.println("Could not write quote data to Firestore" + e.getMessage());
return new ResponseEntity<String>(msg, HttpStatus.FAILED_DEPENDENCY);
} catch(PermissionDeniedException | StatusRuntimeException e){
String.format("Can not access the Firestore service - permission denied: %s", e.getMessage());
System.out.println(msg);
return new ResponseEntity<String>(msg, HttpStatus.UNAUTHORIZED);
} catch(Exception e) {
msg = String.format("Can not access the Firestore service: %s", e.getMessage());
System.out.println(msg);
return new ResponseEntity<String>(msg, HttpStatus.UNAUTHORIZED);
}
return new ResponseEntity<String>(msg, HttpStatus.OK);
}