in DeliveryApi/ApiHandlers/src/com/ilmlf/delivery/api/handlers/BookDelivery.java [72:124]
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent event, Context context) {
Integer httpStatus;
String returnVal;
Integer farmId;
Integer slotId;
Integer userId;
JSONObject jsonObjDelivery;
try {
farmId = Integer.parseInt(event.getPathParameters().get("farm-id"));
slotId = Integer.parseInt(event.getPathParameters().get("slot-id"));
String body = event.getBody();
JSONObject bodyJson = new JSONObject(body);
Object userIdInJson = bodyJson.get("userId");
if (!(userIdInJson instanceof Integer)) {
metricsLogger.putMetric("InvalidUserId", 1, Unit.COUNT);
throw new JSONException("userId must be an integer");
}
userId = (Integer) userIdInJson;
Delivery delivery = slotService.bookDelivery(farmId, slotId, userId);
jsonObjDelivery = new JSONObject(delivery);
httpStatus = 200;
returnVal = jsonObjDelivery.toString();
metricsLogger.putMetric("DeliveryBooked", 1, Unit.COUNT);
} catch (NumberFormatException exception) {
logger.error(exception.getMessage(), exception);
httpStatus = 400;
returnVal = HandlerErrorMessage.FARM_AND_SLOT_INVALID.toString();
metricsLogger.putMetric("FarmAndSlotInvalid", 1, Unit.COUNT);
} catch (JSONException exception) {
logger.error(exception.getMessage(), exception);
httpStatus = 400;
returnVal = HandlerErrorMessage.USER_INVALID.toString();
metricsLogger.putMetric("InvalidUserId", 1, Unit.COUNT);
} catch (SQLException exception) {
logger.error(exception.getMessage(), exception);
httpStatus = 500;
returnVal = HandlerErrorMessage.SQL_FAILED.toString();
metricsLogger.putMetric("SqlException", 1, Unit.COUNT);
} catch (IllegalStateException exception) {
logger.error(exception.getMessage(), exception);
httpStatus = 500;
returnVal = HandlerErrorMessage.NO_AVAILABLE_DELIVERY.toString();
metricsLogger.putMetric("NoAvailableDelivery", 1, Unit.COUNT);
}
metricsLogger.flush();
return ApiUtil.generateReturnData(httpStatus, returnVal);
}