package net.rrm.ehour.update; import com.google.common.base.Optional; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service public class LatestVersionFetcherHttpImpl implements LatestVersionFetcher { private static final Logger LOGGER = Logger.getLogger(LatestVersionFetcherHttpImpl.class); private String versionUrl; @Autowired public LatestVersionFetcherHttpImpl(@Value("${versionUrl:http://ehour.nl/latest_version.txt}") String versionUrl) { this.versionUrl = versionUrl; } @Override public Optional<String> getLatestVersionNumber(String currentVersion, boolean isScheduled) { HttpClient client = HttpClientBuilder.create().build(); try { LOGGER.info("Fetching latest version number of eHour release from " + versionUrl); HttpGet request = new HttpGet(versionUrl); request.setHeader("User-Agent", String.format("%s eHour update client v%s", isScheduled ? "Scheduled" : "Bootstrap", currentVersion)); BasicResponseHandler responseHandler = new BasicResponseHandler(); String response = client.execute(request, responseHandler); return Optional.of(response); } catch (Exception e) { LOGGER.info("Failed to retrieve latest published eHour version: " + e.getMessage()); } return Optional.absent(); } }