
io.mstream.trader.datafeed.stocks.quandl.UriBuilder Maven / Gradle / Ivy
The newest version!
package io.mstream.trader.datafeed.stocks.quandl;
import io.mstream.trader.commons.config.model.DownstreamService;
import io.mstream.trader.datafeed.stocks.Stock;
import org.slf4j.Logger;
import javax.inject.Inject;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.function.Supplier;
import static java.lang.String.format;
import static org.slf4j.LoggerFactory.getLogger;
class UriBuilder {
private static final Logger LOGGER = getLogger(UriBuilder.class);
private static final String PRICE_PATH_FORMAT =
"/api/v3/datasets/WIKI/%s" +
".json?column_index=4&end_date=%s&limit=1&api_key=%s";
private final Supplier quandlApiKeySupplier;
private final Supplier configSupplier;
private final DateTimeFormatter dateFormatter;
@Inject
public UriBuilder(
Supplier quandlApiKeySupplier,
@Quandl
Supplier configSupplier,
@Quandl
DateTimeFormatter dateFormatter
) {
this.quandlApiKeySupplier = quandlApiKeySupplier;
this.configSupplier = configSupplier;
this.dateFormatter = dateFormatter;
}
public URI stockPrice(Stock stock, LocalDate date) {
return createUri(
format(
PRICE_PATH_FORMAT,
stock.getName(),
dateFormatter.format(date),
quandlApiKeySupplier.get()
)
);
}
private URI createUri(String path) {
String baseUrl = configSupplier
.get()
.getUrl()
.url();
URI uri = null;
try {
uri = new URI(baseUrl + path);
LOGGER.debug("created uri: {}", uri);
} catch (URISyntaxException e) {
LOGGER.error("could not create uri from path: {}", path);
}
return uri;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy