@Override
public void giveMeARandomBeer(String customerName, Handler<AsyncResult<Beer>> handler) {
webClient
.get(443, "www.craftbeernamegenerator.com", "/api/api.php?type=classic")
.ssl(true)
.send(ar -> { // (1)
if (ar.failed()) handler.handle(Future.failedFuture(ar.cause())); // (2)
else {
JsonObject result = ar.result().bodyAsJsonObject();
if (result.getInteger("status") != 200) // (2)
handler.handle(Future.failedFuture("Beer Generator Service replied with " + result.getInteger("status") + ": " + result.getString("status_message")));
else {
Beer beer = new Beer( // (3)
result.getJsonObject("data").getString("name"),
result.getJsonObject("data").getString("style"),
3 + random.nextInt(5)
);
System.out.println("Generated a new Beer! " + beer);
bills.merge(customerName, beer.getPrice(), (oldVal, newVal) -> oldVal + newVal); // (4)
handler.handle(Future.succeededFuture(beer)); // (5)
}
}
});
}