From 00f77897c98180272dc81f875cb9c3ce0a1a6be3 Mon Sep 17 00:00:00 2001 From: Martin Eyben Date: Sun, 24 Nov 2024 13:12:17 +0100 Subject: [PATCH] feat: refactor JSON fetcher --- src/main/java/eirb/pg203/City.java | 6 +----- src/main/java/eirb/pg203/OpenMeteo.java | 4 +--- src/main/java/eirb/pg203/OpenWeatherMap.java | 3 +-- src/main/java/eirb/pg203/WeatherAPI.java | 3 +-- src/main/java/eirb/pg203/utils/JSONFetcher.java | 4 +--- .../eirb/pg203/utils/JSONFetcherInterface.java | 16 ---------------- .../fakeJSONFetcher/FakeJSONFetcherCity.java | 3 +-- .../FakeJSONFetcherOpenMeteo.java | 6 ++---- .../FakeJSONFetcherOpenWeatherMap.java | 5 ++--- .../FakeJSONFetcherWeatherAPI.java | 4 ++-- 10 files changed, 12 insertions(+), 42 deletions(-) delete mode 100644 src/main/java/eirb/pg203/utils/JSONFetcherInterface.java diff --git a/src/main/java/eirb/pg203/City.java b/src/main/java/eirb/pg203/City.java index 77fab5d..5084fae 100644 --- a/src/main/java/eirb/pg203/City.java +++ b/src/main/java/eirb/pg203/City.java @@ -1,15 +1,11 @@ package eirb.pg203; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; import java.net.URI; import java.net.URL; import java.util.Locale; import eirb.pg203.utils.JSONFetcher; -import eirb.pg203.utils.JSONFetcherInterface; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -23,7 +19,7 @@ import eirb.pg203.utils.Coords; public class City { private String cityName; private Coords cityCoords; - JSONFetcherInterface JSONFetcher = new JSONFetcher(); + JSONFetcher JSONFetcher = new JSONFetcher(); /** * Fetch data from adresse.data.gouv.fr diff --git a/src/main/java/eirb/pg203/OpenMeteo.java b/src/main/java/eirb/pg203/OpenMeteo.java index 32a9464..b3ff99e 100644 --- a/src/main/java/eirb/pg203/OpenMeteo.java +++ b/src/main/java/eirb/pg203/OpenMeteo.java @@ -1,7 +1,5 @@ package eirb.pg203; -import eirb.pg203.utils.JSONFetcherInterface; -import org.json.JSONArray; import org.json.JSONObject; import eirb.pg203.utils.JSONFetcher; @@ -24,7 +22,7 @@ import eirb.pg203.WeatherData.Condition; public class OpenMeteo implements WeatherDataAPI { private static final String forecastBaseURL = "https://api.open-meteo.com/v1/forecast"; private static final String dailyQuery = "weather_code,temperature_2m_max,temperature_2m_min,wind_speed_10m_max,wind_direction_10m_dominant"; - JSONFetcherInterface JSONFetcher = new JSONFetcher(); + JSONFetcher JSONFetcher = new JSONFetcher(); Clock clock = Clock.systemUTC(); /** diff --git a/src/main/java/eirb/pg203/OpenWeatherMap.java b/src/main/java/eirb/pg203/OpenWeatherMap.java index 580b57f..333b77c 100644 --- a/src/main/java/eirb/pg203/OpenWeatherMap.java +++ b/src/main/java/eirb/pg203/OpenWeatherMap.java @@ -1,6 +1,5 @@ package eirb.pg203; -import eirb.pg203.utils.JSONFetcherInterface; import org.json.JSONObject; import org.json.JSONArray; @@ -25,7 +24,7 @@ public class OpenWeatherMap implements WeatherDataAPI { private static final String forecastBaseURL = "https://api.openweathermap.org/data/2.5/forecast"; private String APIKey; Clock clock = Clock.systemUTC(); - JSONFetcherInterface JSONFetcher = new JSONFetcher(); + JSONFetcher JSONFetcher = new JSONFetcher(); OpenWeatherMap(String APIKey) { this.APIKey = APIKey; diff --git a/src/main/java/eirb/pg203/WeatherAPI.java b/src/main/java/eirb/pg203/WeatherAPI.java index d4f1d83..3431c86 100644 --- a/src/main/java/eirb/pg203/WeatherAPI.java +++ b/src/main/java/eirb/pg203/WeatherAPI.java @@ -1,6 +1,5 @@ package eirb.pg203; -import eirb.pg203.utils.JSONFetcherInterface; import org.json.JSONArray; import org.json.JSONObject; @@ -19,7 +18,7 @@ import java.util.Locale; */ public class WeatherAPI implements WeatherDataAPI{ private final String weatherAPIKey; - JSONFetcherInterface JSONFetcher = new JSONFetcher(); + JSONFetcher JSONFetcher = new JSONFetcher(); private static final String forecastBaseURL = "https://api.weatherapi.com/v1/forecast.json"; WeatherAPI(String weatherAPIKey) { diff --git a/src/main/java/eirb/pg203/utils/JSONFetcher.java b/src/main/java/eirb/pg203/utils/JSONFetcher.java index 16484a9..49d7799 100644 --- a/src/main/java/eirb/pg203/utils/JSONFetcher.java +++ b/src/main/java/eirb/pg203/utils/JSONFetcher.java @@ -12,7 +12,7 @@ import org.json.JSONObject; /** * Util for http calls */ -public class JSONFetcher implements JSONFetcherInterface{ +public class JSONFetcher { /** * No need for constructor @@ -44,7 +44,6 @@ public class JSONFetcher implements JSONFetcherInterface{ * @return Json object of the response * @throws IOException if the request failed */ - @Override public JSONObject fetch(URL url) throws IOException { String result = fetchString(url); @@ -57,7 +56,6 @@ public class JSONFetcher implements JSONFetcherInterface{ * @return JSON array * @throws IOException when request failed */ - @Override public JSONArray fetchArray(URL url) throws IOException { String result = fetchString(url); diff --git a/src/main/java/eirb/pg203/utils/JSONFetcherInterface.java b/src/main/java/eirb/pg203/utils/JSONFetcherInterface.java deleted file mode 100644 index 0adbd33..0000000 --- a/src/main/java/eirb/pg203/utils/JSONFetcherInterface.java +++ /dev/null @@ -1,16 +0,0 @@ -package eirb.pg203.utils; - -import org.json.JSONArray; -import org.json.JSONObject; - -import java.io.IOException; -import java.net.URL; - -/** - * Interface use to be overrided by a fake jsonFetcher during tests - */ -public interface JSONFetcherInterface { - JSONObject fetch(URL url) throws IOException; - - JSONArray fetchArray(URL url) throws IOException; -} diff --git a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherCity.java b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherCity.java index b24b0b5..8634f12 100644 --- a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherCity.java +++ b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherCity.java @@ -2,7 +2,6 @@ package eirb.pg203.fakeJSONFetcher; import eirb.pg203.utils.FileResourcesUtils; import eirb.pg203.utils.JSONFetcher; -import eirb.pg203.utils.JSONFetcherInterface; import eirb.pg203.utils.SplitQueryUrl; import org.json.JSONArray; import org.json.JSONObject; @@ -13,7 +12,7 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; -public class FakeJSONFetcherCity implements JSONFetcherInterface { +public class FakeJSONFetcherCity extends JSONFetcher{ JSONObject unknownCity = FileResourcesUtils.getFileFromResourceAsJson("City/fakeCity.json"); private static HashMap cities(){ diff --git a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenMeteo.java b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenMeteo.java index 7d0e75e..9630f7f 100644 --- a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenMeteo.java +++ b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenMeteo.java @@ -1,16 +1,14 @@ package eirb.pg203.fakeJSONFetcher; import eirb.pg203.utils.FileResourcesUtils; -import eirb.pg203.utils.JSONFetcherInterface; -import eirb.pg203.utils.SplitQueryUrl; +import eirb.pg203.utils.JSONFetcher; import org.json.JSONArray; import org.json.JSONObject; import java.io.IOException; import java.net.URL; -import java.util.Map; -public class FakeJSONFetcherOpenMeteo implements JSONFetcherInterface { +public class FakeJSONFetcherOpenMeteo extends JSONFetcher { private JSONObject responseExample() { return FileResourcesUtils.getFileFromResourceAsJson("OpenMeteo/Bordeaux-partial-cloudy-rain-sunny.json"); } diff --git a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenWeatherMap.java b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenWeatherMap.java index 5583f31..2561930 100644 --- a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenWeatherMap.java +++ b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherOpenWeatherMap.java @@ -1,17 +1,16 @@ package eirb.pg203.fakeJSONFetcher; import eirb.pg203.utils.FileResourcesUtils; -import eirb.pg203.utils.JSONFetcherInterface; +import eirb.pg203.utils.JSONFetcher; import eirb.pg203.utils.SplitQueryUrl; import org.json.JSONArray; import org.json.JSONObject; import java.io.IOException; import java.net.URL; -import java.time.Instant; import java.util.Map; -public class FakeJSONFetcherOpenWeatherMap implements JSONFetcherInterface { +public class FakeJSONFetcherOpenWeatherMap extends JSONFetcher { private final String apiKey = "realKey"; private final JSONObject wrongKeyResponse = FileResourcesUtils.getFileFromResourceAsJson("OpenWeatherMap/wrong-apikey.json"); diff --git a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherWeatherAPI.java b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherWeatherAPI.java index 31d30e2..e5d4170 100644 --- a/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherWeatherAPI.java +++ b/src/test/java/eirb/pg203/fakeJSONFetcher/FakeJSONFetcherWeatherAPI.java @@ -1,7 +1,7 @@ package eirb.pg203.fakeJSONFetcher; import eirb.pg203.utils.FileResourcesUtils; -import eirb.pg203.utils.JSONFetcherInterface; +import eirb.pg203.utils.JSONFetcher; import eirb.pg203.utils.SplitQueryUrl; import org.json.JSONArray; import org.json.JSONObject; @@ -11,7 +11,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Map; -public class FakeJSONFetcherWeatherAPI implements JSONFetcherInterface { +public class FakeJSONFetcherWeatherAPI extends JSONFetcher { private final static String baseUrlFormat = "https://api.weatherapi.com/v1/forecast.json?key=%s&q=%s&days=%d"; private final String apiKey = "realKey"; private static final JSONObject wrongKeyRequest = FileResourcesUtils.getFileFromResourceAsJson("WeatherAPI/wrong-apikey.json");