diff --git a/src/main/java/com/omertron/themoviedbapi/TheMovieDbApi.java b/src/main/java/com/omertron/themoviedbapi/TheMovieDbApi.java index 34f1a204b..8a4529caa 100644 --- a/src/main/java/com/omertron/themoviedbapi/TheMovieDbApi.java +++ b/src/main/java/com/omertron/themoviedbapi/TheMovieDbApi.java @@ -47,10 +47,10 @@ import com.omertron.themoviedbapi.model.change.ChangedMedia; import com.omertron.themoviedbapi.model2.collection.Collection; import com.omertron.themoviedbapi.model2.collection.CollectionInfo; import com.omertron.themoviedbapi.model2.company.Company; -import com.omertron.themoviedbapi.model2.Configuration; +import com.omertron.themoviedbapi.model2.config.Configuration; import com.omertron.themoviedbapi.model2.discover.Discover; import com.omertron.themoviedbapi.model.Genre; -import com.omertron.themoviedbapi.model2.JobDepartment; +import com.omertron.themoviedbapi.model2.config.JobDepartment; import com.omertron.themoviedbapi.model.keyword.Keyword; import com.omertron.themoviedbapi.model.keyword.KeywordMovie; import com.omertron.themoviedbapi.model.MovieDb; @@ -79,6 +79,7 @@ import com.omertron.themoviedbapi.tools.HttpTools; import com.omertron.themoviedbapi.tools.MethodBase; import java.net.URL; import java.util.List; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.http.client.HttpClient; import org.yamj.api.common.http.SimpleHttpClientBuilder; @@ -653,8 +654,17 @@ public class TheMovieDbApi { public TmdbResultsList getJobs() throws MovieDbException { return tmdbConfiguration.getJobs(); } - // + /** + * Get the list of supported timezones for the API methods that support them. + * + * @return @throws MovieDbException + */ + public Map> getTimezones() throws MovieDbException { + return tmdbConfiguration.getTimezones(); + } + // + // /** * Get the detailed information about a particular credit record. @@ -875,7 +885,6 @@ public class TheMovieDbApi { public StatusCode removeItemFromList(String sessionId, String listId, Integer mediaId) throws MovieDbException { return tmdbList.removeItem(sessionId, listId, mediaId); } - // // @@ -1223,15 +1232,11 @@ public class TheMovieDbApi { // /** * - * @param movieId - * @param language - * @param page - * @param appendToResponse - * @return - * @throws MovieDbException + * @param reviewId + * @return @throws MovieDbException */ - public TmdbResultsList getReviews(int movieId, String language, int page, String... appendToResponse) throws MovieDbException { - return tmdbReviews.getReviews(movieId, language, page, appendToResponse); + public Review getReviews(String reviewId) throws MovieDbException { + return tmdbReviews.getReview(reviewId); } // diff --git a/src/main/java/com/omertron/themoviedbapi/methods/TmdbConfiguration.java b/src/main/java/com/omertron/themoviedbapi/methods/TmdbConfiguration.java index 7cd8d57bc..469af49bd 100644 --- a/src/main/java/com/omertron/themoviedbapi/methods/TmdbConfiguration.java +++ b/src/main/java/com/omertron/themoviedbapi/methods/TmdbConfiguration.java @@ -19,10 +19,11 @@ */ package com.omertron.themoviedbapi.methods; +import com.fasterxml.jackson.core.type.TypeReference; import com.omertron.themoviedbapi.MovieDbException; import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER; -import com.omertron.themoviedbapi.model2.Configuration; -import com.omertron.themoviedbapi.model2.JobDepartment; +import com.omertron.themoviedbapi.model2.config.Configuration; +import com.omertron.themoviedbapi.model2.config.JobDepartment; import com.omertron.themoviedbapi.results.TmdbResultsList; import com.omertron.themoviedbapi.tools.ApiUrl; import com.omertron.themoviedbapi.tools.HttpTools; @@ -32,6 +33,9 @@ import com.omertron.themoviedbapi.wrapper.WrapperConfig; import com.omertron.themoviedbapi.wrapper.WrapperJobList; import java.io.IOException; import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.yamj.api.common.exception.ApiExceptionType; /** @@ -99,4 +103,27 @@ public class TmdbConfiguration extends AbstractMethod { } } + public Map> getTimezones() throws MovieDbException { + URL url = new ApiUrl(apiKey, MethodBase.TIMEZONES).setSubMethod(MethodSub.LIST).buildUrl(); + String webpage = httpTools.getRequest(url); + + List>> tzList; + try { + tzList = MAPPER.readValue(webpage, new TypeReference>>>() { + }); + } catch (IOException ex) { + throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get timezone list", url, ex); + } + + Map> timezones = new HashMap>(); + + for (Map> tzMap : tzList) { + for (Map.Entry> x : tzMap.entrySet()) { + timezones.put(x.getKey(), x.getValue()); + } + } + + return timezones; + } + } diff --git a/src/main/java/com/omertron/themoviedbapi/methods/_Method_List.txt b/src/main/java/com/omertron/themoviedbapi/methods/_Method_List.txt index 2b0e38894..35502c4e1 100644 --- a/src/main/java/com/omertron/themoviedbapi/methods/_Method_List.txt +++ b/src/main/java/com/omertron/themoviedbapi/methods/_Method_List.txt @@ -51,7 +51,7 @@ Genres (Done) Guest Sessions (Partial - in Account) /guest_session/{guest_session_id}/rated_movies Get a list of rated movies for a specific guest session id. -Jobs (Done) +Jobs (Done - part of configuration) /job/list Get a list of valid jobs. Keyword (Done) @@ -115,7 +115,7 @@ Search /search/person Search for people by name. /search/tv Search for TV shows by title. -Timezones +Timezones (Done - part of configuration) /timezones/list Get the list of supported timezones for the API methods that support them. TV diff --git a/src/main/java/com/omertron/themoviedbapi/model2/Configuration.java b/src/main/java/com/omertron/themoviedbapi/model2/config/Configuration.java similarity index 98% rename from src/main/java/com/omertron/themoviedbapi/model2/Configuration.java rename to src/main/java/com/omertron/themoviedbapi/model2/config/Configuration.java index 069f8a9ef..501e04450 100644 --- a/src/main/java/com/omertron/themoviedbapi/model2/Configuration.java +++ b/src/main/java/com/omertron/themoviedbapi/model2/config/Configuration.java @@ -17,11 +17,12 @@ * along with TheMovieDB API. If not, see . * */ -package com.omertron.themoviedbapi.model2; +package com.omertron.themoviedbapi.model2.config; import com.omertron.themoviedbapi.model2.AbstractJsonMapping; import com.fasterxml.jackson.annotation.JsonProperty; import com.omertron.themoviedbapi.MovieDbException; +import com.omertron.themoviedbapi.model2.AbstractJsonMapping; import java.net.MalformedURLException; import java.net.URL; import java.util.List; diff --git a/src/main/java/com/omertron/themoviedbapi/model2/JobDepartment.java b/src/main/java/com/omertron/themoviedbapi/model2/config/JobDepartment.java similarity index 93% rename from src/main/java/com/omertron/themoviedbapi/model2/JobDepartment.java rename to src/main/java/com/omertron/themoviedbapi/model2/config/JobDepartment.java index e50763d9b..403d48584 100644 --- a/src/main/java/com/omertron/themoviedbapi/model2/JobDepartment.java +++ b/src/main/java/com/omertron/themoviedbapi/model2/config/JobDepartment.java @@ -17,10 +17,11 @@ * along with TheMovieDB API. If not, see . * */ -package com.omertron.themoviedbapi.model2; +package com.omertron.themoviedbapi.model2.config; import com.omertron.themoviedbapi.model2.AbstractJsonMapping; import com.fasterxml.jackson.annotation.JsonProperty; +import com.omertron.themoviedbapi.model2.AbstractJsonMapping; import java.util.List; diff --git a/src/main/java/com/omertron/themoviedbapi/tools/MethodBase.java b/src/main/java/com/omertron/themoviedbapi/tools/MethodBase.java index 59a3f039a..249a63e03 100644 --- a/src/main/java/com/omertron/themoviedbapi/tools/MethodBase.java +++ b/src/main/java/com/omertron/themoviedbapi/tools/MethodBase.java @@ -43,6 +43,7 @@ public enum MethodBase { PERSON("person"), REVIEW("review"), SEARCH("search"), + TIMEZONES("timezones"), TV("tv"); private final String value; diff --git a/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperConfig.java b/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperConfig.java index fd535cbee..b06c26a1b 100644 --- a/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperConfig.java +++ b/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperConfig.java @@ -20,7 +20,7 @@ package com.omertron.themoviedbapi.wrapper; import com.fasterxml.jackson.annotation.JsonProperty; -import com.omertron.themoviedbapi.model2.Configuration; +import com.omertron.themoviedbapi.model2.config.Configuration; import java.util.Collections; import java.util.List; diff --git a/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperJobList.java b/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperJobList.java index e21e509e3..76734f607 100644 --- a/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperJobList.java +++ b/src/main/java/com/omertron/themoviedbapi/wrapper/WrapperJobList.java @@ -20,7 +20,7 @@ package com.omertron.themoviedbapi.wrapper; import com.fasterxml.jackson.annotation.JsonProperty; -import com.omertron.themoviedbapi.model2.JobDepartment; +import com.omertron.themoviedbapi.model2.config.JobDepartment; import java.util.List; /** diff --git a/src/test/java/com/omertron/themoviedbapi/methods/TmdbConfigurationTest.java b/src/test/java/com/omertron/themoviedbapi/methods/TmdbConfigurationTest.java index 65f661a18..324e34800 100644 --- a/src/test/java/com/omertron/themoviedbapi/methods/TmdbConfigurationTest.java +++ b/src/test/java/com/omertron/themoviedbapi/methods/TmdbConfigurationTest.java @@ -21,11 +21,16 @@ package com.omertron.themoviedbapi.methods; import com.omertron.themoviedbapi.AbstractTests; import com.omertron.themoviedbapi.MovieDbException; -import com.omertron.themoviedbapi.model2.Configuration; +import com.omertron.themoviedbapi.model2.config.Configuration; +import com.omertron.themoviedbapi.model2.config.JobDepartment; +import com.omertron.themoviedbapi.results.TmdbResultsList; +import java.util.List; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.junit.After; import org.junit.AfterClass; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.BeforeClass; @@ -65,7 +70,7 @@ public class TmdbConfigurationTest extends AbstractTests { * * @throws com.omertron.themoviedbapi.MovieDbException */ - @Test +// @Test public void testGetConfig() throws MovieDbException { LOG.info("getConfig"); Configuration result = instance.getConfig(); @@ -83,7 +88,7 @@ public class TmdbConfigurationTest extends AbstractTests { * * @throws MovieDbException */ - @Test +// @Test public void testCreateImageUrl() throws MovieDbException { LOG.info("createImageUrl"); Configuration config = instance.getConfig(); @@ -92,4 +97,33 @@ public class TmdbConfigurationTest extends AbstractTests { assertTrue("Error compiling image URL", !result.isEmpty()); } + /** + * Test of getJobs method, of class TmdbConfiguration. + * + * @throws com.omertron.themoviedbapi.MovieDbException + */ +// @Test + public void testGetJobs() throws MovieDbException { + LOG.info("getJobs"); + TmdbResultsList result = instance.getJobs(); + assertNotNull("Null results", result); + assertFalse("Empty results", result.getResults().isEmpty()); + assertTrue("No results", result.getResults().size() > 0); + } + + /** + * Test of getTimezones method, of class TmdbConfiguration. + * + * @throws com.omertron.themoviedbapi.MovieDbException + */ + @Test + public void testGetTimezones() throws MovieDbException { + LOG.info("getTimezones"); + Map> result = instance.getTimezones(); + assertNotNull("Null results", result); + assertFalse("Empty results", result.isEmpty()); + assertTrue("No US TZ",result.containsKey("US")); + assertTrue("No GB TZ",result.containsKey("GB")); + } + }