Adjusted to use HTTPS protocol by default. Added possibility to change request protocol.

This commit is contained in:
Alexey Zinchenko 2022-08-13 16:08:35 +03:00
parent fb2e0e01be
commit b83b121e90
4 changed files with 21 additions and 4 deletions

View File

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

View File

@ -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()

View File

@ -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";
}
/**

View File

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