
io.mstream.trader.datafeed.handlers.monitoring.healthcheck.QuandlHealthCheck Maven / Gradle / Ivy
The newest version!
package io.mstream.trader.datafeed.handlers.monitoring.healthcheck;
import io.mstream.trader.datafeed.stocks.Stock;
import io.mstream.trader.datafeed.stocks.quandl.QuandlClient;
import ratpack.exec.Promise;
import ratpack.health.HealthCheck;
import ratpack.registry.Registry;
import javax.inject.Inject;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import static java.lang.String.format;
import static ratpack.rx.RxRatpack.promiseSingle;
class QuandlHealthCheck
implements HealthCheck {
private static final String ERROR_MESSAGE_FORMAT =
"Could not get price for stock %s on %s because of: %s";
private final QuandlClient quandlClient;
private final Stock stock;
private final LocalDate date;
private final DateTimeFormatter dateFormatter;
@Inject
public QuandlHealthCheck(
QuandlClient quandlClient,
@HealthCheckData
Stock stock,
@HealthCheckData
LocalDate date,
DateTimeFormatter dateFormatter
) {
this.quandlClient = quandlClient;
this.stock = stock;
this.date = date;
this.dateFormatter = dateFormatter;
}
@Override
public String getName() {
return "quandl";
}
@Override
public Promise check(Registry registry)
throws Exception {
return promiseSingle(
quandlClient
.price(
stock,
date
)
.toObservable()
)
.onError(throwable ->
HealthCheck.Result.unhealthy(
format(
ERROR_MESSAGE_FORMAT,
stock.getName(),
dateFormatter.format(date),
"exception thrown"
),
throwable
)
)
.flatMap(valueText ->
Promise.value(HealthCheck.Result.healthy())
);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy