diff --git a/src/main/java/com/github/prominence/openweathermap/api/OpenWeatherMapClient.java b/src/main/java/com/github/prominence/openweathermap/api/OpenWeatherMapClient.java index deb2965..1ebe83d 100644 --- a/src/main/java/com/github/prominence/openweathermap/api/OpenWeatherMapClient.java +++ b/src/main/java/com/github/prominence/openweathermap/api/OpenWeatherMapClient.java @@ -48,6 +48,8 @@ public class OpenWeatherMapClient { private final String apiKey; private final TimeoutSettings timeoutSettings = new TimeoutSettings(); + private boolean useInsecureConnection = false; + private HttpClient httpClient = new HttpURLConnectionBasedHttpClient(); /** @@ -66,6 +68,10 @@ public class OpenWeatherMapClient { timeoutSettings.setReadTimeout(readTimeout); } + public void useInsecureConnection(boolean value) { + this.useInsecureConnection = value; + } + public void setHttpClient(HttpClient httpClient) { this.httpClient = httpClient; } @@ -159,7 +165,7 @@ public class OpenWeatherMapClient { } private RequestSettings getRequestSettings() { - final RequestSettings requestSettings = new RequestSettings(apiKey, timeoutSettings); + final RequestSettings requestSettings = new RequestSettings(apiKey, timeoutSettings, useInsecureConnection); requestSettings.setHttpClient(httpClient); return requestSettings; } diff --git a/src/main/java/com/github/prominence/openweathermap/api/core/net/RequestExecutor.java b/src/main/java/com/github/prominence/openweathermap/api/core/net/RequestExecutor.java index 6ce4947..282c802 100644 --- a/src/main/java/com/github/prominence/openweathermap/api/core/net/RequestExecutor.java +++ b/src/main/java/com/github/prominence/openweathermap/api/core/net/RequestExecutor.java @@ -67,7 +67,11 @@ public final class RequestExecutor { } private String buildRequestUrl() { - StringBuilder requestUrlBuilder = new StringBuilder(OWM_URL_BASE.replace("SUBDOMAIN", requestSettings.getSubdomain())); + String baseUrl = OWM_URL_BASE.replace("SUBDOMAIN", requestSettings.getSubdomain()); + if (requestSettings.isUseInsecureConnection()) { + baseUrl = baseUrl.replace("https", "http"); + } + StringBuilder requestUrlBuilder = new StringBuilder(baseUrl); requestUrlBuilder.append(requestSettings.getUrlAppender()); requestUrlBuilder.append('?'); String parameters = requestSettings.getRequestParameters().entrySet().stream() diff --git a/src/main/java/com/github/prominence/openweathermap/api/enums/WeatherCondition.java b/src/main/java/com/github/prominence/openweathermap/api/enums/WeatherCondition.java index bb42470..2add033 100644 --- a/src/main/java/com/github/prominence/openweathermap/api/enums/WeatherCondition.java +++ b/src/main/java/com/github/prominence/openweathermap/api/enums/WeatherCondition.java @@ -354,7 +354,7 @@ public enum WeatherCondition { * @return the icon url */ public static String getIconUrl(String iconId) { - return "http://openweathermap.org/img/w/" + iconId + ".png"; + return "https://openweathermap.org/img/w/" + iconId + ".png"; } /** diff --git a/src/main/java/com/github/prominence/openweathermap/api/request/RequestSettings.java b/src/main/java/com/github/prominence/openweathermap/api/request/RequestSettings.java index 388b5a3..6264ba7 100644 --- a/src/main/java/com/github/prominence/openweathermap/api/request/RequestSettings.java +++ b/src/main/java/com/github/prominence/openweathermap/api/request/RequestSettings.java @@ -51,15 +51,18 @@ public class RequestSettings { private HttpClient httpClient; + private final boolean useInsecureConnection; + private String subdomain = "api"; private Language language = Language.ENGLISH; private UnitSystem unitSystem = UnitSystem.STANDARD; - public RequestSettings(String apiKey, TimeoutSettings timeoutSettings) { + public RequestSettings(String apiKey, TimeoutSettings timeoutSettings, boolean useInsecureConnection) { this.putRequestParameter(API_KEY_PARAM_NAME, apiKey); // make a copy this.timeoutSettings = new TimeoutSettings(timeoutSettings); + this.useInsecureConnection = useInsecureConnection; } public TimeoutSettings getTimeoutSettings() { @@ -74,6 +77,10 @@ public class RequestSettings { this.httpClient = httpClient; } + public boolean isUseInsecureConnection() { + return useInsecureConnection; + } + public String getSubdomain() { return subdomain; }