All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.mstream.trader.simulation.stocks.datafeed.client.UriBuilder Maven / Gradle / Ivy

package io.mstream.trader.simulation.stocks.datafeed.client;

import io.mstream.trader.commons.config.model.DownstreamService;
import io.mstream.trader.simulation.stocks.datafeed.api.DataFeed;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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;


class UriBuilder {

    private static final Logger LOGGER = LoggerFactory.getLogger(UriBuilder.class);

    private static final String STOCK_NAMES_URI = "/api/stocks";
    private static final String STOCK_DATES_URI = "/api/dates";
    private static final String CHECK_PRICE_FORMAT = "/api/stocks/%s/price/%s";

    private final Supplier configSupplier;
    private final DateTimeFormatter dateFormatter;


    @Inject
    public UriBuilder(
            @DataFeed
                    Supplier configSupplier,
            @DataFeed DateTimeFormatter dateFormatter
    ) {
        this.configSupplier = configSupplier;
        this.dateFormatter = dateFormatter;
    }
    
    public URI stockPrice(String stockName, LocalDate date) {
        
        return createUri(format(
                CHECK_PRICE_FORMAT,
                stockName,
                dateFormatter.format(date)
        ));
    }

    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;
    }

    public URI stockNames() {
        return createUri(STOCK_NAMES_URI);
    }

    public URI dates() {
        return createUri(STOCK_DATES_URI);
    }

}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy