From c5b14e1a2d63112e51d4d6b41514c1ac1f5666f9 Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Wed, 6 Mar 2024 22:41:23 +0000 Subject: [PATCH 01/12] simplify test utils to check for: empty collections, empty maps and nested objects' null fields --- .../movito/themoviedbapi/util/TestUtils.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/test/java/info/movito/themoviedbapi/util/TestUtils.java b/src/test/java/info/movito/themoviedbapi/util/TestUtils.java index c54446a..e78cb48 100644 --- a/src/test/java/info/movito/themoviedbapi/util/TestUtils.java +++ b/src/test/java/info/movito/themoviedbapi/util/TestUtils.java @@ -8,9 +8,12 @@ import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; /** @@ -43,6 +46,7 @@ public static String readTestFile(String fileName) throws IOException { public static void testForNullFieldsAndNewItems(AbstractJsonMapping objectToCheck) { testForNullFields(objectToCheck); testForNewItems(objectToCheck); + testForNestedEmptyCollectionsAndNullObjects(objectToCheck); } /** @@ -65,6 +69,51 @@ public static void testForNewItems(AbstractJsonMapping objectToCheck) { assertTrue(newItems.isEmpty(), "Unknown properties found in " + objectToCheck.getClass().getSimpleName() + ": " + newItems); } + /** + * Tests the given object's fields for instances of objects, collections or maps. If there are any, it tests them for null fields and + * new items. + */ + public static void testForNestedEmptyCollectionsAndNullObjects(Object objectToCheck) { + for (Field field : objectToCheck.getClass().getDeclaredFields()) { + field.setAccessible(true); + + try { + Object fieldValue = field.get(objectToCheck); + if (fieldValue != null) { + if (fieldValue instanceof AbstractJsonMapping abstractJsonMapping) { + testForNullFieldsAndNewItems(abstractJsonMapping); + } + else if (fieldValue instanceof Collection collection) { + assertFalse(collection.isEmpty(), "Empty collection found in " + objectToCheck.getClass().getName() + "." + + field.getName()); + + Object item = collection.iterator().next(); + if (item instanceof AbstractJsonMapping abstractJsonMapping) { + testForNullFieldsAndNewItems(abstractJsonMapping); + } + + assertNotNull(item, "Null item found in " + objectToCheck.getClass().getName() + "." + field.getName()); + + } + else if (fieldValue instanceof Map map) { + assertFalse(map.isEmpty(), "Empty map found in " + objectToCheck.getClass().getName() + "." + field.getName()); + + for (Object item : map.values()) { + if (item instanceof AbstractJsonMapping abstractJsonMapping) { + testForNullFieldsAndNewItems(abstractJsonMapping); + } + + assertNotNull(item, "Null item found in " + objectToCheck.getClass().getName() + "." + field.getName()); + } + } + } + } + catch (IllegalAccessException exception) { + throw new RuntimeException(exception); + } + } + } + /** * Returns all the null fields in the given object. */ From 352f0d82c00fe066949c27707a3f3d5032bbb218 Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Wed, 6 Mar 2024 22:41:48 +0000 Subject: [PATCH 02/12] fix warning caused from not using html entity --- src/main/java/info/movito/themoviedbapi/TmdbMovies.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/info/movito/themoviedbapi/TmdbMovies.java b/src/main/java/info/movito/themoviedbapi/TmdbMovies.java index 8984e10..3dca9d4 100644 --- a/src/main/java/info/movito/themoviedbapi/TmdbMovies.java +++ b/src/main/java/info/movito/themoviedbapi/TmdbMovies.java @@ -307,7 +307,7 @@ public ProviderResults getWatchProviders(int movieId) throws TmdbException { * @param movieId The TMDb id of the movie. * @param guestSessionId optional - The guest session id of the user. * @param sessionId optional - The session id of the user. - * @param rating The rating of the movie. Must be: 0 < rating <= 10. + * @param rating The rating of the movie. Must be: 0 < rating ≦ 10. * @return The response status. * @throws TmdbException If there was an error making the request or mapping the response. */ From f9a6523080a1bd0fd65657722f1ed211f9dc256a Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Wed, 6 Mar 2024 22:42:54 +0000 Subject: [PATCH 03/12] fix/improve failing tests --- .../themoviedbapi/TmdbConfiguration.java | 2 +- .../themoviedbapi/model/account/Avatar.java | 6 +- .../model/configuration/ImageConfig.java | 3 + .../themoviedbapi/model/movies/MovieDb.java | 77 +- .../themoviedbapi/model/people/PersonDb.java | 37 +- .../movito/themoviedbapi/TmdbAccountTest.java | 4 +- .../themoviedbapi/TmdbConfigurationTest.java | 6 +- .../movito/themoviedbapi/TmdbMoviesTest.java | 81 +- .../movito/themoviedbapi/TmdbPeopleTest.java | 2 + .../details_with_append_to_response.json | 85 +- .../api_responses/movies/watch_providers.json | 3658 +---------------- .../details_with_append_to_response.json | 108 +- 12 files changed, 220 insertions(+), 3849 deletions(-) diff --git a/src/main/java/info/movito/themoviedbapi/TmdbConfiguration.java b/src/main/java/info/movito/themoviedbapi/TmdbConfiguration.java index 41418d7..10928bb 100644 --- a/src/main/java/info/movito/themoviedbapi/TmdbConfiguration.java +++ b/src/main/java/info/movito/themoviedbapi/TmdbConfiguration.java @@ -32,7 +32,7 @@ public class TmdbConfiguration extends AbstractTmdbApi { * @return The configuration details * @throws TmdbException If there was an error making the request or mapping the response. */ - public Configuration getConfig() throws TmdbException { + public Configuration getDetails() throws TmdbException { ApiUrl apiUrl = new ApiUrl(TMDB_METHOD_CONFIGURATION); return mapJsonResult(apiUrl, Configuration.class); } diff --git a/src/main/java/info/movito/themoviedbapi/model/account/Avatar.java b/src/main/java/info/movito/themoviedbapi/model/account/Avatar.java index 0d66601..e2a2287 100644 --- a/src/main/java/info/movito/themoviedbapi/model/account/Avatar.java +++ b/src/main/java/info/movito/themoviedbapi/model/account/Avatar.java @@ -5,16 +5,16 @@ import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.HashMap; +import java.util.Map; @Data @EqualsAndHashCode(callSuper = false) public class Avatar extends AbstractJsonMapping { @JsonProperty("gravatar") - private HashMap gravatar; + private Map gravatar; @JsonProperty("tmdb") - private HashMap tmdb; + private Map tmdb; public String getGravatarHash() { return gravatar.get("hash"); diff --git a/src/main/java/info/movito/themoviedbapi/model/configuration/ImageConfig.java b/src/main/java/info/movito/themoviedbapi/model/configuration/ImageConfig.java index 60f828a..7856f7f 100644 --- a/src/main/java/info/movito/themoviedbapi/model/configuration/ImageConfig.java +++ b/src/main/java/info/movito/themoviedbapi/model/configuration/ImageConfig.java @@ -29,6 +29,9 @@ public class ImageConfig extends AbstractJsonMapping { @JsonProperty("logo_sizes") private List logoSizes; + @JsonProperty("still_sizes") + private List stillSizes; + /** * Check that the poster size is valid. */ diff --git a/src/main/java/info/movito/themoviedbapi/model/movies/MovieDb.java b/src/main/java/info/movito/themoviedbapi/model/movies/MovieDb.java index f7d609e..9bf9aae 100644 --- a/src/main/java/info/movito/themoviedbapi/model/movies/MovieDb.java +++ b/src/main/java/info/movito/themoviedbapi/model/movies/MovieDb.java @@ -15,7 +15,6 @@ import lombok.EqualsAndHashCode; import java.util.List; -import java.util.Optional; @Data @EqualsAndHashCode(callSuper = true) @@ -94,111 +93,67 @@ public class MovieDb extends IdElement implements Multi { private Integer voteCount; /* append to responses */ + + /** Can be null if not appended to the request (append to response). */ @JsonProperty("account_states") private AccountStates accountStates; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("alternative_titles") private AlternativeTitles alternativeTitles; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("credits") private Credits credits; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("changes") private ChangeResults changes; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("external_ids") private ExternalIds externalIds; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("images") private Images images; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("keywords") private KeywordResults keywords; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("recommendations") private MovieResultsPage recommendations; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("release_dates") private ReleaseDateResults releaseDates; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("lists") private MovieListResultsPage lists; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("reviews") private ReviewResultsPage reviews; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("similar") private MovieResultsPage similar; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("translations") private Translations translations; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("videos") private VideoResults videos; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("watch/providers") private ProviderResults watchProviders; - public Optional getAccountStates() { - return Optional.ofNullable(accountStates); - } - - public Optional getAlternativeTitles() { - return Optional.ofNullable(alternativeTitles); - } - - public Optional getCredits() { - return Optional.ofNullable(credits); - } - - public Optional getChanges() { - return Optional.ofNullable(changes); - } - - public Optional getExternalIds() { - return Optional.ofNullable(externalIds); - } - - public Optional getImages() { - return Optional.ofNullable(images); - } - - public Optional getKeywords() { - return Optional.ofNullable(keywords); - } - - public Optional getRecommendations() { - return Optional.ofNullable(recommendations); - } - - public Optional getReleaseDates() { - return Optional.ofNullable(releaseDates); - } - - public Optional getLists() { - return Optional.ofNullable(lists); - } - - public Optional getReviews() { - return Optional.ofNullable(reviews); - } - - public Optional getSimilar() { - return Optional.ofNullable(similar); - } - - public Optional getTranslations() { - return Optional.ofNullable(translations); - } - - public Optional getVideos() { - return Optional.ofNullable(videos); - } - - public Optional getWatchProviders() { - return Optional.ofNullable(watchProviders); - } - @Override public MediaType getMediaType() { return MediaType.MOVIE; diff --git a/src/main/java/info/movito/themoviedbapi/model/people/PersonDb.java b/src/main/java/info/movito/themoviedbapi/model/people/PersonDb.java index a516af5..9f32391 100644 --- a/src/main/java/info/movito/themoviedbapi/model/people/PersonDb.java +++ b/src/main/java/info/movito/themoviedbapi/model/people/PersonDb.java @@ -12,7 +12,6 @@ import lombok.EqualsAndHashCode; import java.util.List; -import java.util.Optional; @Data @EqualsAndHashCode(callSuper = true) @@ -55,55 +54,35 @@ public class PersonDb extends NamedIdElement implements Multi { private String profilePath; /* append to responses */ + + /** Can be null if not appended to the request (append to response). */ @JsonProperty("combined_credits") private CombinedPersonCredits combinedCredits; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("changes") private ChangeResults changes; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("external_ids") private ExternalIds externalIds; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("images") private PersonImages images; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("movie_credits") private MovieCredits movieCredits; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("tv_credits") private TvCredits tvCredits; + /** Can be null if not appended to the request (append to response). */ @JsonProperty("translations") private Translations translations; - public Optional getCombinedCredits() { - return Optional.ofNullable(combinedCredits); - } - - public Optional getChanges() { - return Optional.ofNullable(changes); - } - - public Optional getExternalIds() { - return Optional.ofNullable(externalIds); - } - - public Optional getImages() { - return Optional.ofNullable(images); - } - - public Optional getMovieCredits() { - return Optional.ofNullable(movieCredits); - } - - public Optional getTvCredits() { - return Optional.ofNullable(tvCredits); - } - - public Optional getTranslations() { - return Optional.ofNullable(translations); - } - @Override public MediaType getMediaType() { return MediaType.PERSON; diff --git a/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java b/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java index 59279cc..f80ae7d 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java @@ -1,13 +1,13 @@ package info.movito.themoviedbapi; -import info.movito.themoviedbapi.model.movies.MovieList; -import info.movito.themoviedbapi.model.movies.MovieListResultsPage; import info.movito.themoviedbapi.model.account.Account; import info.movito.themoviedbapi.model.core.Movie; import info.movito.themoviedbapi.model.core.MovieResultsPage; import info.movito.themoviedbapi.model.core.TvSeries; import info.movito.themoviedbapi.model.core.TvSeriesResultsPage; import info.movito.themoviedbapi.model.core.responses.ResponseStatus; +import info.movito.themoviedbapi.model.movies.MovieList; +import info.movito.themoviedbapi.model.movies.MovieListResultsPage; import info.movito.themoviedbapi.model.rated.RatedMovie; import info.movito.themoviedbapi.model.rated.RatedMovieResultsPage; import info.movito.themoviedbapi.model.rated.RatedTvEpisode; diff --git a/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java b/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java index e6bdb90..d09ae70 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java @@ -26,16 +26,16 @@ */ public class TmdbConfigurationTest extends AbstractTmdbApiTest { /** - * Test for {@link TmdbConfiguration#getConfig()} with an expected result. + * Test for {@link TmdbConfiguration#getDetails()} with an expected result. */ @Test - public void testGetConfig() throws IOException, TmdbException { + public void testGetDetails() throws IOException, TmdbException { String body = TestUtils.readTestFile("api_responses/configuration/details.json"); URL url = new URL(TMDB_API_BASE_URL + TMDB_METHOD_CONFIGURATION); when(getTmdbUrlReader().readUrl(url, null, RequestType.GET)).thenReturn(body); TmdbConfiguration tmdbConfiguration = getTmdbApi().getConfiguration(); - Configuration configuration = tmdbConfiguration.getConfig(); + Configuration configuration = tmdbConfiguration.getDetails(); assertNotNull(configuration); testForNullFieldsAndNewItems(configuration); } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java b/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java index 3892f0a..b810fb3 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java @@ -59,6 +59,7 @@ import static info.movito.themoviedbapi.util.TestUtils.testForNewItems; import static info.movito.themoviedbapi.util.TestUtils.testForNullFields; import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.testForNestedEmptyCollectionsAndNullObjects; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -84,6 +85,7 @@ public void testGetDetails() throws IOException, TmdbException { testForNullFields(movie, "accountStates", "alternativeTitles", "credits", "changes", "externalIds", "images", "keywords", "recommendations", "releaseDates", "lists", "reviews", "similar", "translations", "videos", "watchProviders"); testForNewItems(movie); + testForNestedEmptyCollectionsAndNullObjects(movie); List genres = movie.getGenres(); assertNotNull(genres); @@ -120,84 +122,7 @@ public void testGetDetailsWithAppendToResponse() throws IOException, TmdbExcepti TmdbMovies tmdbMovies = getTmdbApi().getMovies(); MovieDb movie = tmdbMovies.getDetails(123, "en-US", MovieAppendToResponse.values()); assertNotNull(movie); - testForNullFields(movie); - testForNewItems(movie); - - Optional accountStates = movie.getAccountStates(); - assertNotNull(accountStates); - assertTrue(accountStates.isPresent()); - testForNullFields(accountStates.get(), "rated"); // strange case, rated can either be boolean (false) or an object - testForNewItems(accountStates.get()); - - Optional alternativeTitles = movie.getAlternativeTitles(); - assertNotNull(alternativeTitles); - assertTrue(alternativeTitles.isPresent()); - testForNullFieldsAndNewItems(alternativeTitles.get()); - - Optional credits = movie.getCredits(); - assertNotNull(credits); - assertTrue(credits.isPresent()); - testForNullFieldsAndNewItems(credits.get()); - - Optional changes = movie.getChanges(); - assertNotNull(changes); - assertTrue(changes.isPresent()); - testForNullFieldsAndNewItems(changes.get()); - - Optional externalIds = movie.getExternalIds(); - assertNotNull(externalIds); - assertTrue(externalIds.isPresent()); - testForNullFieldsAndNewItems(externalIds.get()); - - Optional images = movie.getImages(); - assertNotNull(images); - assertTrue(images.isPresent()); - testForNullFieldsAndNewItems(images.get()); - - Optional keywords = movie.getKeywords(); - assertNotNull(keywords); - assertTrue(keywords.isPresent()); - testForNullFieldsAndNewItems(keywords.get()); - - Optional lists = movie.getLists(); - assertNotNull(lists); - assertTrue(lists.isPresent()); - testForNullFieldsAndNewItems(lists.get()); - - Optional reviews = movie.getReviews(); - assertNotNull(reviews); - assertTrue(reviews.isPresent()); - testForNullFieldsAndNewItems(reviews.get()); - - Optional recommendations = movie.getRecommendations(); - assertNotNull(recommendations); - assertTrue(recommendations.isPresent()); - testForNullFieldsAndNewItems(recommendations.get()); - - Optional releaseDates = movie.getReleaseDates(); - assertNotNull(releaseDates); - assertTrue(releaseDates.isPresent()); - testForNullFieldsAndNewItems(releaseDates.get()); - - Optional similar = movie.getSimilar(); - assertNotNull(similar); - assertTrue(similar.isPresent()); - testForNullFieldsAndNewItems(similar.get()); - - Optional translations = movie.getTranslations(); - assertNotNull(translations); - assertTrue(translations.isPresent()); - testForNullFieldsAndNewItems(translations.get()); - - Optional videos = movie.getVideos(); - assertNotNull(videos); - assertTrue(videos.isPresent()); - testForNullFieldsAndNewItems(videos.get()); - - Optional watchProviders = movie.getWatchProviders(); - assertNotNull(watchProviders); - assertTrue(watchProviders.isPresent()); - testForNullFieldsAndNewItems(watchProviders.get()); + testForNullFieldsAndNewItems(movie); } /** diff --git a/src/test/java/info/movito/themoviedbapi/TmdbPeopleTest.java b/src/test/java/info/movito/themoviedbapi/TmdbPeopleTest.java index 12bcc03..cced142 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbPeopleTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbPeopleTest.java @@ -32,6 +32,7 @@ import static info.movito.themoviedbapi.TmdbPeople.TMDB_METHOD_PERSON; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; +import static info.movito.themoviedbapi.util.TestUtils.testForNestedEmptyCollectionsAndNullObjects; import static info.movito.themoviedbapi.util.TestUtils.testForNewItems; import static info.movito.themoviedbapi.util.TestUtils.testForNullFields; import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; @@ -59,6 +60,7 @@ public void testGetDetails() throws IOException, TmdbException { testForNullFields(details, "changes", "combinedCredits", "externalIds", "images", "latest", "movieCredits", "tvCredits", "translations"); testForNewItems(details); + testForNestedEmptyCollectionsAndNullObjects(details); List alsoKnownAs = details.getAlsoKnownAs(); assertNotNull(alsoKnownAs); diff --git a/src/test/resources/api_responses/movies/details_with_append_to_response.json b/src/test/resources/api_responses/movies/details_with_append_to_response.json index 8a6f165..b5e1be4 100644 --- a/src/test/resources/api_responses/movies/details_with_append_to_response.json +++ b/src/test/resources/api_responses/movies/details_with_append_to_response.json @@ -24,7 +24,7 @@ "production_companies": [ { "id": 66410, - "logo_path": null, + "logo_path": "/7cxRWzi4LsVm4Utfpr1hfARNurT.png", "name": "Clasart Film- und Fernsehproduktion", "origin_country": "" }, @@ -75,11 +75,19 @@ "vote_count": 5, "account_states": { "favorite": false, - "rated": false, + "rated": { + "value": 9 + }, "watchlist": false }, "alternative_titles": { - "titles": [] + "titles": [ + { + "iso_3166_1": "RU", + "title": "Мост", + "type": "type" + } + ] }, "credits": { "cast": [ @@ -555,7 +563,24 @@ ] }, "changes": { - "changes": [] + "changes": [ + { + "key": "plot_keywords", + "items": [ + { + "id": "6431bb5d8289a000b73bd64d", + "action": "added", + "time": "2023-04-08 19:07:09 UTC", + "iso_639_1": "en", + "iso_3166_1": "en-US", + "value": { + "name": "breaking the fourth wall", + "id": 11687 + } + } + ] + } + ] }, "external_ids": { "imdb_id": "tt0409732", @@ -565,9 +590,39 @@ "twitter_id": "twitter" }, "images": { - "backdrops": [], - "logos": [], - "posters": [] + "backdrops": [ + { + "aspect_ratio": 1.778, + "height": 800, + "iso_639_1": "en", + "file_path": "/hZkgoQYus5vegHoetLkCJzb17zJ.jpg", + "vote_average": 5.622, + "vote_count": 20, + "width": 1422 + } + ], + "logos": [ + { + "aspect_ratio": 5.203, + "height": 79, + "iso_639_1": "he", + "file_path": "/c1KLulrIhUqY5fT42nmC5aERGCp.png", + "vote_average": 5.312, + "vote_count": 1, + "width": 411 + } + ], + "posters": [ + { + "aspect_ratio": 0.667, + "height": 900, + "iso_639_1": "pt", + "file_path": "/r3pPehX4ik8NLYPpbDRAh0YRtMb.jpg", + "vote_average": 5.258, + "vote_count": 6, + "width": 600 + } + ] }, "keywords": { "keywords": [ @@ -1530,6 +1585,14 @@ "results": { "AT": { "link": "https://www.themoviedb.org/movie/12313-bergkristall/watch?locale=AT", + "flatrate": [ + { + "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", + "provider_id": 119, + "provider_name": "Amazon Prime Video", + "display_priority": 12 + } + ], "rent": [ { "logo_path": "/seGSXajazLMCKGB5hnRCidtjay1.jpg", @@ -1609,6 +1672,14 @@ }, "CH": { "link": "https://www.themoviedb.org/movie/12313-bergkristall/watch?locale=CH", + "flatrate": [ + { + "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", + "provider_id": 119, + "provider_name": "Amazon Prime Video", + "display_priority": 12 + } + ], "buy": [ { "logo_path": "/9ghgSC0MA082EL6HLCW3GalykFD.jpg", diff --git a/src/test/resources/api_responses/movies/watch_providers.json b/src/test/resources/api_responses/movies/watch_providers.json index d3aa826..b53b851 100644 --- a/src/test/resources/api_responses/movies/watch_providers.json +++ b/src/test/resources/api_responses/movies/watch_providers.json @@ -55,3630 +55,38 @@ "provider_name": "Google Play Movies", "display_priority": 1000 } - ] - }, - "AR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=AR", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 6 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 4 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 5 - }, - { - "logo_path": "/cDzkhgvozSr4GW2aRdV22uDuFpw.jpg", - "provider_id": 339, - "provider_name": "Movistar Play", - "display_priority": 9 - } - ], - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 6 - } - ] - }, - "AT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=AT", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 3 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 11 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - }, - { - "logo_path": "/2PTFxgrswnEuK0szl87iSd8Yszz.jpg", - "provider_id": 20, - "provider_name": "maxdome Store", - "display_priority": 16 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 24 - } - ], - "rent": [ - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 3 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/3WN3S7D5f41d3RhI2jtVbTehlf2.jpg", - "provider_id": 1856, - "provider_name": "Magenta TV", - "display_priority": 6 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 11 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - }, - { - "logo_path": "/2PTFxgrswnEuK0szl87iSd8Yszz.jpg", - "provider_id": 20, - "provider_name": "maxdome Store", - "display_priority": 16 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 24 - } - ] - }, - "AU": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=AU", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 10 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 12 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 14 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 18 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 22 - }, - { - "logo_path": "/zXDDsD9M5vO7lqoqlBQCOcZtKBS.jpg", - "provider_id": 429, - "provider_name": "Telstra TV", - "display_priority": 32 - } - ] - }, - "BA": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BA", - "buy": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 9 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 28 - } - ] - }, - "BB": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BB", - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 28 - } - ] - }, - "BE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BE", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 10 - }, - { - "logo_path": "/jWKX6kO7JqQbqVnu9QtEO6FC85n.jpg", - "provider_id": 697, - "provider_name": "meJane", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 10 - } - ] - }, - "BG": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BG", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 15 - } - ] - }, - "BH": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BH", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ] - }, - "BO": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BO", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 3 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 4 - } - ] - }, - "BR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BR", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 3 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 7 - }, - { - "logo_path": "/oBoWstXQFHAlPApyxIQ31CIbNQk.jpg", - "provider_id": 307, - "provider_name": "Globoplay", - "display_priority": 10 - }, - { - "logo_path": "/cQQYtdaCg7vDo28JPru4v8Ypi8x.jpg", - "provider_id": 484, - "provider_name": "NOW", - "display_priority": 29 - }, - { - "logo_path": "/5jdN9E9Ftxxbg711crjOyCagTy8.jpg", - "provider_id": 227, - "provider_name": "Telecine Play", - "display_priority": 1000 - } - ] - }, - "BS": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=BS", - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 28 - } - ] - }, - "CA": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CA", - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/yNr05VQlKK4dI0Ncwf9InIVGKs9.jpg", - "provider_id": 140, - "provider_name": "Cineplex", - "display_priority": 13 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 16 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 30 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 58 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/yNr05VQlKK4dI0Ncwf9InIVGKs9.jpg", - "provider_id": 140, - "provider_name": "Cineplex", - "display_priority": 13 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 16 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 30 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 58 - } - ], - "flatrate": [ - { - "logo_path": "/sB5vHrmYmliwUvBwZe8HpXo9r8m.jpg", - "provider_id": 305, - "provider_name": "Crave Starz", - "display_priority": 5 - }, - { - "logo_path": "/x36C6aseF5l4uX99Kpse9dbPwBo.jpg", - "provider_id": 1794, - "provider_name": "Starz Amazon Channel", - "display_priority": 112 - } - ] - }, - "CH": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CH", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - }, - { - "logo_path": "/5OtaT8STJ8ZMkKt994C5XxrEAaP.jpg", - "provider_id": 622, - "provider_name": "UPC TV", - "display_priority": 40 - } - ], - "buy": [ - { - "logo_path": "/rVOOhp6V8FheEAKtFAJMLMbnaMZ.jpg", - "provider_id": 150, - "provider_name": "blue TV", - "display_priority": 3 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 6 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 10 - }, - { - "logo_path": "/jmyYN1124dDIzqMysLekixy3AzF.jpg", - "provider_id": 164, - "provider_name": "Hollystar", - "display_priority": 1000 - } - ], - "rent": [ - { - "logo_path": "/rVOOhp6V8FheEAKtFAJMLMbnaMZ.jpg", - "provider_id": 150, - "provider_name": "blue TV", - "display_priority": 3 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 6 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 10 - }, - { - "logo_path": "/jmyYN1124dDIzqMysLekixy3AzF.jpg", - "provider_id": 164, - "provider_name": "Hollystar", - "display_priority": 1000 - } - ] - }, - "CL": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CL", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 7 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 8 - }, - { - "logo_path": "/cDzkhgvozSr4GW2aRdV22uDuFpw.jpg", - "provider_id": 339, - "provider_name": "Movistar Play", - "display_priority": 9 - } - ], - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ] - }, - "CO": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CO", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 6 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 7 - }, - { - "logo_path": "/cDzkhgvozSr4GW2aRdV22uDuFpw.jpg", - "provider_id": 339, - "provider_name": "Movistar Play", - "display_priority": 9 - } - ], - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ] - }, - "CR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CR", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 4 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 6 - } - ] - }, - "CV": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CV", - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 13 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 13 - } - ] - }, - "CZ": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=CZ", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 22 - } - ], - "rent": [ - { - "logo_path": "/wTF37o4jOkQfjnWe41gmeuASYZA.jpg", - "provider_id": 308, - "provider_name": "O2 TV", - "display_priority": 2 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ] - }, - "DE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=DE", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - }, - { - "logo_path": "/2joD3S2goOB6lmepX35A8dmaqgM.jpg", - "provider_id": 421, - "provider_name": "Joyn Plus", - "display_priority": 49 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 7 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 10 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 11 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 13 - }, - { - "logo_path": "/2PTFxgrswnEuK0szl87iSd8Yszz.jpg", - "provider_id": 20, - "provider_name": "maxdome Store", - "display_priority": 16 - }, - { - "logo_path": "/uULoezj2skPc6amfwru72UPjYXV.jpg", - "provider_id": 178, - "provider_name": "MagentaTV", - "display_priority": 24 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 34 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 7 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 10 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 11 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 13 - }, - { - "logo_path": "/2PTFxgrswnEuK0szl87iSd8Yszz.jpg", - "provider_id": 20, - "provider_name": "maxdome Store", - "display_priority": 16 - }, - { - "logo_path": "/uULoezj2skPc6amfwru72UPjYXV.jpg", - "provider_id": 178, - "provider_name": "MagentaTV", - "display_priority": 24 - } - ] - }, - "DK": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=DK", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 7 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 10 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 18 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 20 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 21 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/cvl65OJnz14LUlC3yGK1KHj8UYs.jpg", - "provider_id": 76, - "provider_name": "Viaplay", - "display_priority": 6 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 7 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 10 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 18 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 20 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 21 - } - ] - }, - "DO": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=DO", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 28 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 31 - } - ] - }, - "EC": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=EC", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 11 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/cDzkhgvozSr4GW2aRdV22uDuFpw.jpg", - "provider_id": 339, - "provider_name": "Movistar Play", - "display_priority": 4 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 5 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 6 - } - ], - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 11 - } - ] - }, - "EE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=EE", - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 24 - } - ], - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ] - }, - "EG": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=EG", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ] - }, - "ES": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=ES", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 11 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 13 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 36 - } - ], - "ads": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 11 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - }, - { - "logo_path": "/9edKQczyuMmQM1yS520hgmJbcaC.jpg", - "provider_id": 528, - "provider_name": "AMC+ Amazon Channel", - "display_priority": 80 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 11 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 13 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 36 - } - ] - }, - "FI": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=FI", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/cvl65OJnz14LUlC3yGK1KHj8UYs.jpg", - "provider_id": 76, - "provider_name": "Viaplay", - "display_priority": 5 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 10 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 11 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 12 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 17 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 18 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 19 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 10 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 12 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 17 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 18 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 19 - }, - { - "logo_path": "/xTVM8uXT9QocigQ07LE7Irc65W2.jpg", - "provider_id": 553, - "provider_name": "Telia Play", - "display_priority": 34 - } - ] - }, - "FJ": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=FJ", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ] - }, - "FR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=FR", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 5 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/ddWcbe8fYAfcQMjighzWGLjjyip.jpg", - "provider_id": 61, - "provider_name": "Orange VOD", - "display_priority": 10 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 15 - }, - { - "logo_path": "/knpqBvBQjyHnFrYPJ9bbtUCv6uo.jpg", - "provider_id": 58, - "provider_name": "Canal VOD", - "display_priority": 18 - }, - { - "logo_path": "/ulTa4e9ysKwMwNpg7EfhYnvAj8q.jpg", - "provider_id": 59, - "provider_name": "Bbox VOD", - "display_priority": 20 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 22 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 46 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 5 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/ddWcbe8fYAfcQMjighzWGLjjyip.jpg", - "provider_id": 61, - "provider_name": "Orange VOD", - "display_priority": 10 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 15 - }, - { - "logo_path": "/knpqBvBQjyHnFrYPJ9bbtUCv6uo.jpg", - "provider_id": 58, - "provider_name": "Canal VOD", - "display_priority": 18 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 22 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 46 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ] - }, - "GB": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=GB", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 9, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 4 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 5 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 12 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 14 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 16 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 22 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 29 - } - ], - "rent": [ - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 4 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 5 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 12 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 14 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 16 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 22 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 29 - } - ] - }, - "GF": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=GF", - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 30 - } - ] - }, - "GI": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=GI", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "GR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=GR", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ] - }, - "GT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=GT", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 4 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 5 - } - ] - }, - "HK": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=HK", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 7 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 37 - } - ] - }, - "HN": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=HN", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 4 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 5 - } - ] - }, - "HR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=HR", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ], - "ads": [ - { - "logo_path": "/xrHrIraInfRXnrz1zHhY1tXJowg.jpg", - "provider_id": 572, - "provider_name": "RTL Play", - "display_priority": 30 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 34 - } - ] - }, - "HU": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=HU", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 22 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 1000 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - } - ] - }, - "ID": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=ID", - "flatrate": [ - { - "logo_path": "/7Fl8ylPDclt3ZYgNbW2t7rbZE9I.jpg", - "provider_id": 122, - "provider_name": "Hotstar", - "display_priority": 3 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 7 - } - ] - }, - "IE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=IE", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 9 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 12 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/2pCbao1J9s0DMak2KKnEzmzHni8.jpg", - "provider_id": 130, - "provider_name": "Sky Store", - "display_priority": 9 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 12 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 14 - } - ] - }, - "IL": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=IL", - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 28 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "IN": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=IN", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 8 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 8 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 10 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 13 - } - ] - }, - "IQ": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=IQ", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "IS": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=IS", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/cvl65OJnz14LUlC3yGK1KHj8UYs.jpg", - "provider_id": 76, - "provider_name": "Viaplay", - "display_priority": 29 - } - ] - }, - "IT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=IT", - "buy": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 3 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 22 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 40 - } - ], - "rent": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 3 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 22 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 40 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ] - }, - "JM": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=JM", - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 27 - } - ] - }, - "JO": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=JO", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ], - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ] - }, - "JP": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=JP", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 3 - }, - { - "logo_path": "/npg1OiBidQSndMsBZwgEPOYU6Jq.jpg", - "provider_id": 84, - "provider_name": "U-NEXT", - "display_priority": 4 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 9, - "provider_name": "Amazon Prime Video", - "display_priority": 5 - } - ], - "rent": [ - { - "logo_path": "/g8jqHtXJsMlc8B1Gb0Rt8AvUJMn.jpg", - "provider_id": 85, - "provider_name": "dTV", - "display_priority": 2 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 6 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 7 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 7 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 9 - } - ] - }, - "KR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=KR", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/2ioan5BX5L9tz4fIGU93blTeFhv.jpg", - "provider_id": 356, - "provider_name": "wavve", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - } - ] - }, - "KW": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=KW", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "LB": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=LB", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ], - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ] - }, - "LI": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=LI", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 30 - } - ] - }, - "LT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=LT", - "rent": [ - { - "logo_path": "/xTVM8uXT9QocigQ07LE7Irc65W2.jpg", - "provider_id": 553, - "provider_name": "Telia Play", - "display_priority": 15 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 25 - } - ] - }, - "LV": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=LV", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 24 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 4 - } - ] - }, - "MD": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MD", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 26 - } - ] - }, - "MK": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MK", - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 29 - } - ], - "buy": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 9 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ] - }, - "MT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MT", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ], - "buy": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 9 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "rent": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 9 - } - ] - }, - "MU": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MU", - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 15 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 15 - } - ] - }, - "MX": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MX", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 3 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 11 - } - ] - }, - "MY": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MY", - "flatrate": [ - { - "logo_path": "/7Fl8ylPDclt3ZYgNbW2t7rbZE9I.jpg", - "provider_id": 122, - "provider_name": "Hotstar", - "display_priority": 0 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 9 - } - ] - }, - "MZ": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=MZ", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 16 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 16 - } - ] - }, - "NL": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=NL", - "buy": [ - { - "logo_path": "/llmnYOyknekZsXtkCaazKjhTLvG.jpg", - "provider_id": 71, - "provider_name": "Pathé Thuis", - "display_priority": 7 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 8 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 11 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 12 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 13 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 40 - } - ], - "rent": [ - { - "logo_path": "/llmnYOyknekZsXtkCaazKjhTLvG.jpg", - "provider_id": 71, - "provider_name": "Pathé Thuis", - "display_priority": 7 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 8 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 11 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 12 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 13 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 40 - }, - { - "logo_path": "/jWKX6kO7JqQbqVnu9QtEO6FC85n.jpg", - "provider_id": 697, - "provider_name": "meJane", - "display_priority": 48 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/bVClgB5bpaTRM3sVPlboaxkFD0U.jpg", - "provider_id": 563, - "provider_name": "KPN", - "display_priority": 35 - } - ] - }, - "NO": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=NO", - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 9 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 16 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 18 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 19 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 8 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 9 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 16 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 18 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 19 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/cvl65OJnz14LUlC3yGK1KHj8UYs.jpg", - "provider_id": 76, - "provider_name": "Viaplay", - "display_priority": 4 - }, - { - "logo_path": "/5nECaP8nhtrzZfx7oG0yoFMfqiA.jpg", - "provider_id": 431, - "provider_name": "TV 2 Play", - "display_priority": 20 - }, - { - "logo_path": "/gKno1uvHwHyhQTKMflDvEqj5oGJ.jpg", - "provider_id": 578, - "provider_name": "Strim", - "display_priority": 32 - } - ] - }, - "NZ": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=NZ", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 3 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 7 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 10 - } - ] - }, - "OM": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=OM", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "PA": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PA", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 27 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 34 - } - ] - }, - "PE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PE", - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - } - ], - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 4 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 8 - } - ] - }, - "PH": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PH", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 31 - } - ] - }, - "PK": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PK", - "flatrate": [ - { - "logo_path": "/t2yyOv40HZeVlLjYsCsPHnWLk4W.jpg", - "provider_id": 8, - "provider_name": "Netflix", - "display_priority": 0 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "PL": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PL", - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 1 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 8 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 4 - }, - { - "logo_path": "/l5Wxbsgral716BOtZsGyPVNn8GC.jpg", - "provider_id": 250, - "provider_name": "Horizon", - "display_priority": 7 - }, - { - "logo_path": "/uXc2fJqhtXfuNq6ha8tTLL9VnXj.jpg", - "provider_id": 505, - "provider_name": "Player", - "display_priority": 13 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 28 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 1 - } - ] - }, - "PS": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PS", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "PT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PT", - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 7 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 8 - } - ], - "rent": [ - { - "logo_path": "/dUeHhim2WUZz8S7EWjv0Ws6anRP.jpg", - "provider_id": 242, - "provider_name": "Meo", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 7 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 8 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - } - ] - }, - "PY": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=PY", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 3 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 5 - } - ] - }, - "QA": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=QA", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ], - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ] - }, - "RO": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=RO", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 17 - }, - { - "logo_path": "/l5Wxbsgral716BOtZsGyPVNn8GC.jpg", - "provider_id": 250, - "provider_name": "Horizon", - "display_priority": 1000 - } - ] - }, - "RS": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=RS", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 32 - } - ], - "buy": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 9 - } - ] - }, - "RU": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=RU", - "rent": [ - { - "logo_path": "/o9ExgOSLF3OTwR6T3DJOuwOKJgq.jpg", - "provider_id": 113, - "provider_name": "Ivi", - "display_priority": 1000 - } - ], - "buy": [ - { - "logo_path": "/o9ExgOSLF3OTwR6T3DJOuwOKJgq.jpg", - "provider_id": 113, - "provider_name": "Ivi", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/zLM7f1w2L8TU2Fspzns72m6h3yY.jpg", - "provider_id": 501, - "provider_name": "Wink", - "display_priority": 1000 - } - ] - }, - "SA": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SA", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 28 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 1 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 1 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ] - }, - "SE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SE", - "buy": [ - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 7 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 8 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 17 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 18 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 19 - } - ], - "rent": [ - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 7 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 8 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 9 - }, - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 17 - }, - { - "logo_path": "/3QsJbibv5dFW2IYuXbTjxDmGGRZ.jpg", - "provider_id": 423, - "provider_name": "Blockbuster", - "display_priority": 18 - }, - { - "logo_path": "/dNcz2AZHPEgt4BIKJe56r4visuK.jpg", - "provider_id": 426, - "provider_name": "SF Anytime", - "display_priority": 19 - } - ], - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 1 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 2 - }, - { - "logo_path": "/cvl65OJnz14LUlC3yGK1KHj8UYs.jpg", - "provider_id": 76, - "provider_name": "Viaplay", - "display_priority": 6 - } - ] - }, - "SG": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SG", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ] - }, - "SI": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SI", - "buy": [ - { - "logo_path": "/5GEbAhFW2S5T8zVc1MNvz00pIzM.jpg", - "provider_id": 35, - "provider_name": "Rakuten TV", - "display_priority": 9 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 31 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 1000 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 29 - } - ] - }, - "SK": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SK", - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - } - ], - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 37 - } - ], - "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 3 - } - ] - }, - "SM": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SM", - "flatrate": [ - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 30 - } - ] - }, - "SV": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=SV", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 25 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 32 - } - ] - }, - "TH": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=TH", - "flatrate": [ - { - "logo_path": "/7Fl8ylPDclt3ZYgNbW2t7rbZE9I.jpg", - "provider_id": 122, - "provider_name": "Hotstar", - "display_priority": 0 - }, - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 3 - } - ] - }, - "TR": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=TR", - "rent": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - } ], "flatrate": [ { "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", "provider_id": 119, "provider_name": "Amazon Prime Video", - "display_priority": 4 + "display_priority": 12 } ], - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 5 - }, - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 6 - } - ] - }, - "TT": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=TT", - "flatrate": [ - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 11 - } - ] - }, - "TW": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=TW", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/7rwgEs15tFwyR9NPQ5vpzxTj19Q.jpg", - "provider_id": 337, - "provider_name": "Disney Plus", - "display_priority": 2 - } - ] - }, - "UG": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=UG", "rent": [ { "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", "provider_id": 2, "provider_name": "Apple TV", - "display_priority": 16 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 16 + "display_priority": 1 }, { "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", "provider_id": 3, "provider_name": "Google Play Movies", - "display_priority": 1000 + "display_priority": 3 } ] }, - "US": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=US", - "rent": [ - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 13 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 14 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 15 - }, - { - "logo_path": "/21dEscfO8n1tL35k4DANixhffsR.jpg", - "provider_id": 7, - "provider_name": "Vudu", - "display_priority": 42 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 53 - }, - { - "logo_path": "/gbyLHzl4eYP0oP9oJZ2oKbpkhND.jpg", - "provider_id": 279, - "provider_name": "Redbox", - "display_priority": 54 - }, - { - "logo_path": "/xL9SUR63qrEjFZAhtsipskeAMR7.jpg", - "provider_id": 358, - "provider_name": "DIRECTV", - "display_priority": 58 - }, - { - "logo_path": "/kJlVJLgbNPvKDYC0YMp3yA2OKq2.jpg", - "provider_id": 352, - "provider_name": "AMC on Demand", - "display_priority": 137 - } - ], - "flatrate": [ - { - "logo_path": "/jPXksae158ukMLFhhlNvzsvaEyt.jpg", - "provider_id": 257, - "provider_name": "fuboTV", - "display_priority": 5 - }, - { - "logo_path": "/zxrVdFjIjLqkfnwyghnfywTn3Lh.jpg", - "provider_id": 15, - "provider_name": "Hulu", - "display_priority": 6 - }, - { - "logo_path": "/xbhHHa1YgtpwhC8lb1NQ3ACVcLd.jpg", - "provider_id": 531, - "provider_name": "Paramount Plus", - "display_priority": 16 - }, - { - "logo_path": "/3E0RkIEQrrGYazs63NMsn3XONT6.jpg", - "provider_id": 582, - "provider_name": "Paramount+ Amazon Channel", - "display_priority": 23 - }, - { - "logo_path": "/hoqk74y8HTJTMWcVes1ZVwohCue.jpg", - "provider_id": 583, - "provider_name": "MGM Plus Amazon Channel", - "display_priority": 24 - }, - { - "logo_path": "/qlVSrZgfXlFw0Jj6hsYq2zi70JD.jpg", - "provider_id": 633, - "provider_name": "Paramount+ Roku Premium Channel", - "display_priority": 31 - }, - { - "logo_path": "/3sE2JNYZJRD9Le1P8B6oVEqarad.jpg", - "provider_id": 636, - "provider_name": "MGM Plus Roku Premium Channel", - "display_priority": 35 - }, - { - "logo_path": "/xL9SUR63qrEjFZAhtsipskeAMR7.jpg", - "provider_id": 358, - "provider_name": "DIRECTV", - "display_priority": 58 - }, - { - "logo_path": "/6A1gRIJqLfFHOoTvbTxDAbuU2nQ.jpg", - "provider_id": 34, - "provider_name": "MGM Plus", - "display_priority": 64 - } - ], + "AR": { + "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=AR", "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 4 - }, - { - "logo_path": "/5NyLm42TmCqCMOZFvH4fcoSNKEW.jpg", - "provider_id": 10, - "provider_name": "Amazon Video", - "display_priority": 13 - }, - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 14 - }, - { - "logo_path": "/oIkQkEkwfmcG7IGpRR1NB8frZZM.jpg", - "provider_id": 192, - "provider_name": "YouTube", - "display_priority": 15 - }, - { - "logo_path": "/21dEscfO8n1tL35k4DANixhffsR.jpg", - "provider_id": 7, - "provider_name": "Vudu", - "display_priority": 42 - }, - { - "logo_path": "/shq88b09gTBYC4hA7K7MUL8Q4zP.jpg", - "provider_id": 68, - "provider_name": "Microsoft Store", - "display_priority": 53 - }, - { - "logo_path": "/gbyLHzl4eYP0oP9oJZ2oKbpkhND.jpg", - "provider_id": 279, - "provider_name": "Redbox", - "display_priority": 54 - }, - { - "logo_path": "/xL9SUR63qrEjFZAhtsipskeAMR7.jpg", - "provider_id": 358, - "provider_name": "DIRECTV", - "display_priority": 58 - }, - { - "logo_path": "/kJlVJLgbNPvKDYC0YMp3yA2OKq2.jpg", - "provider_id": 352, - "provider_name": "AMC on Demand", - "display_priority": 137 - } - ] - }, - "UY": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=UY", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - }, - { - "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", - "provider_id": 619, - "provider_name": "Star Plus", - "display_priority": 2 - }, - { - "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", - "provider_id": 384, - "provider_name": "HBO Max", - "display_priority": 30 - } - ] - }, - "VE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=VE", - "rent": [ { "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", "provider_id": 3, "provider_name": "Google Play Movies", - "display_priority": 3 + "display_priority": 6 } ], "flatrate": [ @@ -3692,65 +100,27 @@ "logo_path": "/hR9vWd8hWEVQKD6eOnBneKRFEW3.jpg", "provider_id": 619, "provider_name": "Star Plus", - "display_priority": 6 + "display_priority": 4 }, { "logo_path": "/Ajqyt5aNxNGjmF9uOfxArGrdf3X.jpg", "provider_id": 384, "provider_name": "HBO Max", - "display_priority": 8 - } - ], - "buy": [ - { - "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", - "provider_id": 3, - "provider_name": "Google Play Movies", - "display_priority": 3 - } - ] - }, - "YE": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=YE", - "flatrate": [ - { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 - } - ] - }, - "ZA": { - "link": "https://www.themoviedb.org/movie/550-fight-club/watch?locale=ZA", - "flatrate": [ + "display_priority": 5 + }, { - "logo_path": "/emthp39XA2YScoYL1p0sdbAH2WA.jpg", - "provider_id": 119, - "provider_name": "Amazon Prime Video", - "display_priority": 1 + "logo_path": "/cDzkhgvozSr4GW2aRdV22uDuFpw.jpg", + "provider_id": 339, + "provider_name": "Movistar Play", + "display_priority": 9 } ], "rent": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - } - ], - "buy": [ - { - "logo_path": "/peURlLlr8jggOwK53fJ5wdQl05y.jpg", - "provider_id": 2, - "provider_name": "Apple TV", - "display_priority": 2 - }, { "logo_path": "/tbEdFQDwx5LEVr8WpSeXQSIirVq.jpg", "provider_id": 3, "provider_name": "Google Play Movies", - "display_priority": 3 + "display_priority": 6 } ] } diff --git a/src/test/resources/api_responses/people/details_with_append_to_response.json b/src/test/resources/api_responses/people/details_with_append_to_response.json index 6f2f2fd..f7168fe 100644 --- a/src/test/resources/api_responses/people/details_with_append_to_response.json +++ b/src/test/resources/api_responses/people/details_with_append_to_response.json @@ -22,7 +22,7 @@ "cast": [ { "adult": false, - "backdrop_path": null, + "backdrop_path": "backdrop path", "genre_ids": [ 99, 10770 @@ -1052,30 +1052,44 @@ ] }, "changes": { - "changes": [] + "changes": [ + { + "key": "biography", + "items": [ + { + "id": "640469b113654500ba4e859a", + "action": "added", + "time": "2023-03-05 10:06:41 UTC", + "iso_639_1": "ca", + "iso_3166_1": "ES", + "value": "Thomas \"Tom\" Jeffrey Hanks (Concord, Califòrnia, 9 de juliol de 1956) és un actor de cinema i productor estatunidenc, guanyador dues vegades de l'Oscar al millor actor i considerat un dels més versàtils i talentosos del cinema actual.\n\nHanks és l'actor que més diners ha guanyat de tota la història del cinema amb un total de gairebé sis mil milions de dòlars (setembre 2006). És també copropietari de Playtone, una companyia de producció de pel·lícules." + } + ] + } + ] }, "external_ids": { - "freebase_mid": null, - "freebase_id": null, - "imdb_id": "nm0651614", - "tvrage_id": null, - "wikidata_id": null, - "facebook_id": null, - "instagram_id": null, - "tiktok_id": null, - "twitter_id": null, - "youtube_id": null + "freebase_mid": "/m/0bxtg", + "freebase_id": "/en/tom_hanks", + "imdb_id": "nm0000158", + "tvrage_id": 14293, + "wikidata_id": "Q2263", + "facebook_id": "TomHanks", + "instagram_id": "tomhanks", + "tiktok_id": "tomhanks", + "twitter_id": "tomhanks", + "youtube_id": "tomhanks" }, "images": { "profiles": [ { "aspect_ratio": 0.667, - "height": 1500, - "iso_639_1": null, - "file_path": "/xWtXYk6M5NFroddcQDviLlxOnkU.jpg", - "vote_average": 0, - "vote_count": 0, - "width": 1000 + "height": 1489, + "iso_639_1": "en", + "file_path": "/50rqDkmvXwjwVhFH7q6ph2Rkw7S.jpg", + "vote_average": 5.4, + "vote_count": 16, + "width": 993 } ] }, @@ -1083,7 +1097,7 @@ "cast": [ { "adult": false, - "backdrop_path": null, + "backdrop_path": "backdrop path", "genre_ids": [ 99, 10770 @@ -2069,8 +2083,60 @@ ] }, "tv_credits": { - "cast": [], - "crew": [] + "cast": [ + { + "adult": false, + "backdrop_path": "/ttvojTMgaIN7U8gqB5LlNqO4vPN.jpg", + "genre_ids": [ + 10767 + ], + "id": 1900, + "origin_country": [ + "US" + ], + "original_language": "en", + "original_name": "LIVE with Kelly and Mark", + "overview": "A morning talk show with A-list celebrity guests, top-notch performances and one-of-a-kind segments that are unrivaled on daytime television, plus spontaneous, hilarious and unpredictable talk.", + "popularity": 700.508, + "poster_path": "/l5y8egG27p2fSTyq8s21SQMmQLy.jpg", + "first_air_date": "1988-09-05", + "name": "LIVE with Kelly and Mark", + "vote_average": 5.4, + "vote_count": 25, + "character": "", + "credit_id": "52571af019c29571140d5c92", + "episode_count": 1 + } + ], + "crew": [ + { + "adult": false, + "backdrop_path": "/6uMA6EAiwcsCqQJwWgYwtORvE0v.jpg", + "genre_ids": [ + 35, + 9648, + 80, + 10765 + ], + "id": 2391, + "origin_country": [ + "US" + ], + "original_language": "en", + "original_name": "Tales from the Crypt", + "overview": "Cadaverous scream legend the Crypt Keeper is your macabre host for these forays of fright and fun based on the classic E.C. Comics tales from back in the day. So shamble up to the bar and pick your poison. Will it be an insane Santa on a personal slay ride? Honeymooners out to fulfill the \"til death do we part\" vow ASAP?", + "popularity": 24.88, + "poster_path": "/dDfXQH6Kg2JNASI0dqNALukjhk1.jpg", + "first_air_date": "1989-06-10", + "name": "Tales from the Crypt", + "vote_average": 7.978, + "vote_count": 757, + "credit_id": "525734f3760ee3776a397211", + "department": "Directing", + "episode_count": 1, + "job": "Director" + } + ] }, "translations": { "translations": [ From 80fd30d40431419627c9138378e7e26b9eaac9d8 Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Thu, 7 Mar 2024 22:03:26 +0000 Subject: [PATCH 04/12] create validator to simplify writing tests for field checks --- .../util/AbstractJsonMappingValidator.java | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 src/test/java/info/movito/themoviedbapi/util/AbstractJsonMappingValidator.java diff --git a/src/test/java/info/movito/themoviedbapi/util/AbstractJsonMappingValidator.java b/src/test/java/info/movito/themoviedbapi/util/AbstractJsonMappingValidator.java new file mode 100644 index 0000000..1b3d757 --- /dev/null +++ b/src/test/java/info/movito/themoviedbapi/util/AbstractJsonMappingValidator.java @@ -0,0 +1,124 @@ +package info.movito.themoviedbapi.util; + +import info.movito.themoviedbapi.model.core.AbstractJsonMapping; + +import java.lang.reflect.Field; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +/* + Todo: + - Change current usages of existing TestUtils methods for checking fields to use ObjectValidator in some form + */ + +/** + * Validates an {@link AbstractJsonMapping} object's fields. + */ +public class AbstractJsonMappingValidator { + private final Map nullFields = new HashMap<>(); + private final Map emptyCollections = new HashMap<>(); + private final Map nullContainingCollection = new HashMap<>(); + private final Map emptyMaps = new HashMap<>(); + private final Map nullContainingMaps = new HashMap<>(); + private final Map> newItems = new HashMap<>(); + + /** + * Creates a new instance of the validator. + * + * @param objectToCheck the object to check. + * @throws IllegalAccessException if an error occurs. + */ + public AbstractJsonMappingValidator(AbstractJsonMapping objectToCheck) throws IllegalAccessException { + addNullAndEmptyFields(objectToCheck, null); + } + + /** + * Validates the object for: null fields, empty collections, collections containing null, empty maps, maps containing null, + * and new items. + */ + public void validateAll() { + assertTrue(nullFields.isEmpty(), "Null fields found: " + getFormattedFieldNames(nullFields)); + assertTrue(emptyCollections.isEmpty(), "Empty collections found in: " + getFormattedFieldNames(emptyCollections)); + assertTrue(nullContainingCollection.isEmpty(), "Collections containing null found: " + + getFormattedFieldNames(nullContainingCollection)); + assertTrue(emptyMaps.isEmpty(), "Empty maps found: " + getFormattedFieldNames(emptyMaps)); + assertTrue(nullContainingMaps.isEmpty(), "Maps containing null found: " + getFormattedFieldNames(nullContainingMaps)); + assertTrue(newItems.isEmpty(), "New items found: " + getFormattedFieldNamesForNewItems(newItems)); + } + + private void addNullAndEmptyFields(AbstractJsonMapping objectToCheck, Field initialField) throws IllegalAccessException { + Class clazz = objectToCheck.getClass(); + + Map newItems = objectToCheck.getNewItems(); + if (!newItems.isEmpty()) { + this.newItems.put(getMapKey(objectToCheck, initialField), newItems); + } + + while (clazz != null && clazz != AbstractJsonMapping.class) { + for (Field field : clazz.getDeclaredFields()) { + field.setAccessible(true); + + Object fieldValue = field.get(objectToCheck); + Field parentField = initialField != null ? initialField : field; + + if (fieldValue == null) { + nullFields.put(getMapKey(objectToCheck, parentField), field); + } + else if (fieldValue instanceof AbstractJsonMapping abstractJsonMapping) { + addNullAndEmptyFields(abstractJsonMapping, parentField); + } + else if (fieldValue instanceof Collection collection) { + if (collection.isEmpty()) { + emptyCollections.put(getMapKey(objectToCheck, parentField), field); + } + else { + Object item = collection.iterator().next(); + if (item == null) { + nullContainingCollection.put(getMapKey(objectToCheck, parentField), field); + } + else if (item instanceof AbstractJsonMapping abstractJsonMapping) { + addNullAndEmptyFields(abstractJsonMapping, parentField); + } + } + } + else if (fieldValue instanceof Map map) { + if (map.isEmpty()) { + emptyMaps.put(getMapKey(objectToCheck, parentField), field); + } + else { + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() == null) { + nullContainingMaps.put(getMapKey(objectToCheck, parentField), field); + } + else if (entry.getValue() instanceof AbstractJsonMapping abstractJsonMapping) { + addNullAndEmptyFields(abstractJsonMapping, parentField); + } + } + } + } + } + + clazz = clazz.getSuperclass(); + } + } + + private String getMapKey(AbstractJsonMapping objectToCheck, Field initialField) { + StringBuilder key = new StringBuilder(); + key.append(objectToCheck.getClass().getName()); + if (initialField != null) { + key.append('.').append(initialField.getName()); + } + return key.toString(); + } + + private String getFormattedFieldNamesForNewItems(Map> newItems) { + return newItems.entrySet().stream().map(entry -> entry.getKey() + ": " + entry.getValue()).toList().toString(); + } + + private String getFormattedFieldNames(Map fields) { + return fields.entrySet().stream().map(entry -> entry.getKey() + ": " + entry.getValue().getName()).toList().toString(); + } +} From 388554f1b9796f040a3ea1a5466296a88a92b560 Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Thu, 7 Mar 2024 22:04:41 +0000 Subject: [PATCH 05/12] small formatting + fix --- .../java/info/movito/themoviedbapi/model/ReleaseDate.java | 2 +- .../movito/themoviedbapi/model/core/MovieResultsPage.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/info/movito/themoviedbapi/model/ReleaseDate.java b/src/main/java/info/movito/themoviedbapi/model/ReleaseDate.java index 14d5f61..ccbc9b5 100644 --- a/src/main/java/info/movito/themoviedbapi/model/ReleaseDate.java +++ b/src/main/java/info/movito/themoviedbapi/model/ReleaseDate.java @@ -15,7 +15,7 @@ public class ReleaseDate extends AbstractJsonMapping { private String certification; @JsonProperty("descriptors") - private List descriptors; + private List descriptors; @JsonProperty("iso_639_1") private String language; diff --git a/src/main/java/info/movito/themoviedbapi/model/core/MovieResultsPage.java b/src/main/java/info/movito/themoviedbapi/model/core/MovieResultsPage.java index 48a2144..eb197bb 100644 --- a/src/main/java/info/movito/themoviedbapi/model/core/MovieResultsPage.java +++ b/src/main/java/info/movito/themoviedbapi/model/core/MovieResultsPage.java @@ -1,3 +1,5 @@ package info.movito.themoviedbapi.model.core; -public class MovieResultsPage extends ResultsPage { } +public class MovieResultsPage extends ResultsPage { + +} From 7397401b7ddcb1eadbbb0403dce4802fde10cd04 Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Thu, 7 Mar 2024 22:07:02 +0000 Subject: [PATCH 06/12] fix failing test --- .../details_with_append_to_response.json | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/src/test/resources/api_responses/movies/details_with_append_to_response.json b/src/test/resources/api_responses/movies/details_with_append_to_response.json index b5e1be4..d262e5e 100644 --- a/src/test/resources/api_responses/movies/details_with_append_to_response.json +++ b/src/test/resources/api_responses/movies/details_with_append_to_response.json @@ -1080,7 +1080,9 @@ "release_dates": [ { "certification": "", - "descriptors": [], + "descriptors": [ + "descriptor" + ], "iso_639_1": "", "note": "", "release_date": "2004-11-19T00:00:00.000Z", @@ -1093,7 +1095,9 @@ "release_dates": [ { "certification": "6", - "descriptors": [], + "descriptors": [ + "descriptor" + ], "iso_639_1": "", "note": "", "release_date": "2004-11-18T00:00:00.000Z", @@ -1112,10 +1116,9 @@ "id": 8203598, "item_count": 21537, "iso_639_1": "en", - "iso_3166_1": "US", "list_type": "movie", "name": "list0", - "poster_path": null + "poster_path": "poster path" } ], "total_pages": 1, @@ -1123,7 +1126,22 @@ }, "reviews": { "page": 1, - "results": [], + "results": [ + { + "author": "John Chard", + "author_details": { + "name": "name", + "username": "John Chard", + "avatar_path": "/utEXl2EDiXBK6f41wCLsvprvMg4.jpg", + "rating": 5 + }, + "content": "It's cinema Jim, but not as we know it. \r\n\r\nSo here it is then, what has been in gestation in James Cameron's mind for over 12 years finally hit the silver screen towards the back end of 2009. Made for gazillions amount of cash, Avatar went on to make a billion trillion in Worldwide receipts-and this before the rush rush release of DVD/BLU RAY sales are factored into the equation. The film, and all its technical wizardry, is quite simply a gargantuan piece of cinematic history. Released in 2d and 3d, and probably some other format that I'm forgetting, every advanced tool of the trade has been utilised by Cameron and his team to create what is now the ultimate popcorn blockbuster. Shame then, that away from the visual extravaganza the film is as shallow as this review will ultimately end up being.\r\n\r\nNo doubt about it, this is a joy for the eyes and ears, the minuscule details are wonderful and the colour positively pings from every frame. But in the eagerness to create such splendour they forgot to put any substance into the writing. This is plot simplicity. And even its messages, as Cameron smugly preaches his sermon from the pulpit, now seem old hat. Do we really need another boink over the head about eco invasion? Or a curt reminder of American infiltration into some land where motives are suspicious at best? No we don't really do we? Worse still is some of the dialogue, which quite frankly could have come from some playground encounter as the kiddies play kiss chase or bang bang your dead army. There's also a sense of familiarity with other better scripted film's, Dances *cough* With *cough* Wolves *cough* It's as if Cameron just knew that narrative structure wasn't as important as having the expensive gimmicks. He's like a modern day William Castle-only with considerably more readies at his disposal.\r\n\r\nThe cast are OK, Zoe Saldana puts a sexy feistiness to her blue alien Neytiri, Sam Worthington keeps the humanistic elements just about above water, while Sigourney Weaver is as ever the consummate professional. But ironically, in a film shimmering bright in 2d & 3d, the characters are all one dimensional. None more so than Stephen \"The Party Crasher\" Lang's Colonel. A man so gruff and gung-ho menacing he really ought to be in Sly Stallone's upcoming testo movie The Expendables. Nominated for nine Academy Awards, including Best Picture and Best Director, it won three, for Best Cinematography, Best Visual Effects, and Best Art Direction. Those were richly deserved. They also tell us all we need to now about Cameron's Behemoth. 5/10", + "created_at": "2020-04-25T14:27:48.316Z", + "id": "5ea448e4bdc34c0020261327", + "updated_at": "2021-06-23T15:58:37.447Z", + "url": "https://www.themoviedb.org/review/5ea448e4bdc34c0020261327" + } + ], "total_pages": 0, "total_results": 0 }, @@ -1579,7 +1597,20 @@ ] }, "videos": { - "results": [] + "results": [ + { + "iso_639_1": "en", + "iso_3166_1": "US", + "name": "Back for a Limited Time", + "key": "LgZ2MDuJvhc", + "site": "YouTube", + "size": 1080, + "type": "Teaser", + "official": true, + "published_at": "2022-09-30T16:30:02.000Z", + "id": "63372b210a517c009cd540ff" + } + ] }, "watch/providers": { "results": { From 1c01c2e3c7ff19b88c23d847f426263256241133 Mon Sep 17 00:00:00 2001 From: Conor Egan <68134729+c-eg@users.noreply.github.com> Date: Thu, 7 Mar 2024 22:07:19 +0000 Subject: [PATCH 07/12] method refactor --- .../movito/themoviedbapi/TmdbAccountTest.java | 44 ++++----- .../themoviedbapi/TmdbAuthenticationTest.java | 14 +-- .../themoviedbapi/TmdbCertificationsTest.java | 10 +- .../movito/themoviedbapi/TmdbChangesTest.java | 14 +-- .../themoviedbapi/TmdbCollectionsTest.java | 22 ++--- .../themoviedbapi/TmdbCompaniesTest.java | 12 +-- .../themoviedbapi/TmdbConfigurationTest.java | 12 +-- .../themoviedbapi/TmdbDiscoverTest.java | 18 ++-- .../movito/themoviedbapi/TmdbGenresTest.java | 6 +- .../themoviedbapi/TmdbGuestSessionsTest.java | 14 +-- .../themoviedbapi/TmdbKeywordsTest.java | 4 +- .../themoviedbapi/TmdbMovieListsTest.java | 22 ++--- .../movito/themoviedbapi/TmdbMoviesTest.java | 96 +++++++++---------- .../themoviedbapi/TmdbNetworksTest.java | 12 +-- .../themoviedbapi/TmdbPeopleListsTest.java | 8 +- .../movito/themoviedbapi/TmdbPeopleTest.java | 44 ++++----- .../movito/themoviedbapi/TmdbReviewsTest.java | 6 +- .../themoviedbapi/TmdbWatchProvidersTest.java | 14 +-- .../movito/themoviedbapi/util/TestUtils.java | 15 ++- 19 files changed, 197 insertions(+), 190 deletions(-) diff --git a/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java b/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java index f80ae7d..50a4f87 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbAccountTest.java @@ -29,7 +29,7 @@ import static info.movito.themoviedbapi.AbstractTmdbApi.getObjectMapper; import static info.movito.themoviedbapi.TmdbAccount.TMDB_METHOD_ACCOUNT; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -51,7 +51,7 @@ public void testGetAccount() throws IOException, TmdbException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); Account account = tmdbAccount.getDetails(1234, "testSessionId"); assertNotNull(account); - testForNullFieldsAndNewItems(account); + checkForNullAndEmptyFieldsAndNewItems(account); } /** @@ -77,7 +77,7 @@ public void testAddFavourite() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); ResponseStatus responseStatus = tmdbAccount.addFavorite(accountId, sessionId, mediaId, mediaType); assertNotNull(responseStatus); - testForNullFieldsAndNewItems(responseStatus); + checkForNullAndEmptyFieldsAndNewItems(responseStatus); assertEquals(1, responseStatus.getStatusCode()); assertEquals("Success.", responseStatus.getStatusMessage()); } @@ -105,7 +105,7 @@ public void testRemoveFavorite() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); ResponseStatus responseStatus = tmdbAccount.removeFavorite(accountId, sessionId, mediaId, mediaType); assertNotNull(responseStatus); - testForNullFieldsAndNewItems(responseStatus); + checkForNullAndEmptyFieldsAndNewItems(responseStatus); assertEquals(1, responseStatus.getStatusCode()); assertEquals("Success.", responseStatus.getStatusMessage()); } @@ -133,7 +133,7 @@ public void testAddToWatchList() throws IOException, TmdbException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); ResponseStatus responseStatus = tmdbAccount.addToWatchList(accountId, sessionId, mediaId, mediaType); assertNotNull(responseStatus); - testForNullFieldsAndNewItems(responseStatus); + checkForNullAndEmptyFieldsAndNewItems(responseStatus); assertEquals(1, responseStatus.getStatusCode()); assertEquals("Success.", responseStatus.getStatusMessage()); } @@ -161,7 +161,7 @@ public void testRemoveFromWatchList() throws IOException, TmdbException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); ResponseStatus responseStatus = tmdbAccount.removeFromWatchList(accountId, sessionId, mediaId, mediaType); assertNotNull(responseStatus); - testForNullFieldsAndNewItems(responseStatus); + checkForNullAndEmptyFieldsAndNewItems(responseStatus); assertEquals(1, responseStatus.getStatusCode()); assertEquals("Success.", responseStatus.getStatusMessage()); } @@ -185,14 +185,14 @@ public void testGetFavouriteMovies() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); MovieResultsPage movieResultsPage = tmdbAccount.getFavoriteMovies(accountId, sessionId, language, page, sortBy); assertNotNull(movieResultsPage); - testForNullFieldsAndNewItems(movieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPage); List movieResults = movieResultsPage.getResults(); assertFalse(movieResults.isEmpty()); Movie movie = movieResults.get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -214,14 +214,14 @@ public void testGetFavouriteTv() throws IOException, TmdbException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); TvSeriesResultsPage tvSeriesResultsPage = tmdbAccount.getFavoriteTv(accountId, sessionId, language, page, sortBy); assertNotNull(tvSeriesResultsPage); - testForNullFieldsAndNewItems(tvSeriesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(tvSeriesResultsPage); List tvResults = tvSeriesResultsPage.getResults(); assertFalse(tvResults.isEmpty()); TvSeries tvSeries = tvResults.get(0); assertNotNull(tvSeries); - testForNullFieldsAndNewItems(tvSeries); + checkForNullAndEmptyFieldsAndNewItems(tvSeries); } /** @@ -240,14 +240,14 @@ public void testGetLists() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); MovieListResultsPage movieListResultsPage = tmdbAccount.getLists(accountId, sessionId, page); assertNotNull(movieListResultsPage); - testForNullFieldsAndNewItems(movieListResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieListResultsPage); List movieLists = movieListResultsPage.getResults(); assertFalse(movieLists.isEmpty()); MovieList movieList = movieLists.get(0); assertNotNull(movieList); - testForNullFieldsAndNewItems(movieList); + checkForNullAndEmptyFieldsAndNewItems(movieList); } /** @@ -269,14 +269,14 @@ public void testGetRatedMovies() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); RatedMovieResultsPage ratedMovieResultsPage = tmdbAccount.getRatedMovies(accountId, sessionId, language, page, sortBy); assertNotNull(ratedMovieResultsPage); - testForNullFieldsAndNewItems(ratedMovieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(ratedMovieResultsPage); List ratedMovies = ratedMovieResultsPage.getResults(); assertFalse(ratedMovies.isEmpty()); RatedMovie ratedMovie = ratedMovies.get(0); assertNotNull(ratedMovie); - testForNullFieldsAndNewItems(ratedMovie); + checkForNullAndEmptyFieldsAndNewItems(ratedMovie); } /** @@ -298,14 +298,14 @@ public void testGetRatedTvSeries() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); RatedTvSeriesResultsPage ratedTvSeriesResultsPage = tmdbAccount.getRatedTvSeries(accountId, sessionId, language, page, sortBy); assertNotNull(ratedTvSeriesResultsPage); - testForNullFieldsAndNewItems(ratedTvSeriesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(ratedTvSeriesResultsPage); List ratedTvSeriess = ratedTvSeriesResultsPage.getResults(); assertFalse(ratedTvSeriess.isEmpty()); RatedTvSeries ratedTvSeries = ratedTvSeriess.get(0); assertNotNull(ratedTvSeries); - testForNullFieldsAndNewItems(ratedTvSeries); + checkForNullAndEmptyFieldsAndNewItems(ratedTvSeries); } /** @@ -328,14 +328,14 @@ public void testGetRatedTvEpisodes() throws TmdbException, IOException { RatedTvEpisodeResultsPage ratedTvEpisodesResultsPage = tmdbAccount.getRatedTvEpisodes(accountId, sessionId, language, page, sortBy); assertNotNull(ratedTvEpisodesResultsPage); - testForNullFieldsAndNewItems(ratedTvEpisodesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(ratedTvEpisodesResultsPage); List ratedTvEpisodes = ratedTvEpisodesResultsPage.getResults(); assertFalse(ratedTvEpisodes.isEmpty()); RatedTvEpisode ratedTvEpisode = ratedTvEpisodes.get(0); assertNotNull(ratedTvEpisode); - testForNullFieldsAndNewItems(ratedTvEpisode); + checkForNullAndEmptyFieldsAndNewItems(ratedTvEpisode); } /** @@ -357,14 +357,14 @@ public void testGetWatchListMovies() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); MovieResultsPage movieResultsPage = tmdbAccount.getWatchListMovies(accountId, sessionId, language, page, sortBy); assertNotNull(movieResultsPage); - testForNullFieldsAndNewItems(movieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPage); List movies = movieResultsPage.getResults(); assertFalse(movies.isEmpty()); Movie movie = movies.get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -386,13 +386,13 @@ public void testGetWatchListTvSeries() throws TmdbException, IOException { TmdbAccount tmdbAccount = getTmdbApi().getAccount(); TvSeriesResultsPage tvSeriesResultsPage = tmdbAccount.getWatchListTvSeries(accountId, sessionId, language, page, sortBy); assertNotNull(tvSeriesResultsPage); - testForNullFieldsAndNewItems(tvSeriesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(tvSeriesResultsPage); List tvSeriess = tvSeriesResultsPage.getResults(); assertFalse(tvSeriess.isEmpty()); TvSeries tvSeries = tvSeriess.get(0); assertNotNull(tvSeries); - testForNullFieldsAndNewItems(tvSeries); + checkForNullAndEmptyFieldsAndNewItems(tvSeries); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbAuthenticationTest.java b/src/test/java/info/movito/themoviedbapi/TmdbAuthenticationTest.java index fde3fc0..a1b6ecb 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbAuthenticationTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbAuthenticationTest.java @@ -20,7 +20,7 @@ import static info.movito.themoviedbapi.TmdbAuthentication.TMDB_METHOD_AUTH; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; import static info.movito.themoviedbapi.tools.TmdbResponseCode.INVALID_API_KEY; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -44,7 +44,7 @@ public void testCreateGuestSession() throws TmdbException, IOException { TmdbAuthentication tmdbAuthentication = getTmdbApi().getAuthentication(); GuestSession guestSession = tmdbAuthentication.createGuestSession(); assertNotNull(guestSession); - testForNullFieldsAndNewItems(guestSession); + checkForNullAndEmptyFieldsAndNewItems(guestSession); } /** @@ -59,7 +59,7 @@ public void testCreateRequestToken() throws TmdbException, IOException { TmdbAuthentication tmdbAuthentication = getTmdbApi().getAuthentication(); RequestToken requestToken = tmdbAuthentication.createRequestToken(); assertNotNull(requestToken); - testForNullFieldsAndNewItems(requestToken); + checkForNullAndEmptyFieldsAndNewItems(requestToken); } /** @@ -116,7 +116,7 @@ public void testCreateSession() throws TmdbException, IOException { requestToken.setRequestToken(requestTokenStr); Session session = tmdbAuthentication.createSession(requestToken); assertNotNull(session); - testForNullFieldsAndNewItems(session); + checkForNullAndEmptyFieldsAndNewItems(session); } /** @@ -152,7 +152,7 @@ public void testCreateAuthenticatedRequestToken() throws TmdbException, IOExcept RequestToken authenticatedRequestToken = tmdbAuthentication.createAuthenticatedRequestToken(requestToken, "username", "password"); assertNotNull(authenticatedRequestToken); - testForNullFieldsAndNewItems(authenticatedRequestToken); + checkForNullAndEmptyFieldsAndNewItems(authenticatedRequestToken); } /** @@ -186,7 +186,7 @@ public void testDeleteSession() throws TmdbException, IOException { TmdbAuthentication tmdbAuthentication = getTmdbApi().getAuthentication(); ResponseStatusDelete responseStatusDelete = tmdbAuthentication.deleteSession("sessionId"); assertNotNull(responseStatusDelete); - testForNullFieldsAndNewItems(responseStatusDelete); + checkForNullAndEmptyFieldsAndNewItems(responseStatusDelete); assertTrue(responseStatusDelete.getSuccess()); } @@ -212,7 +212,7 @@ public void testValidateKey() throws TmdbException, IOException { TmdbAuthentication tmdbAuthentication = getTmdbApi().getAuthentication(); ResponseStatusAuthentication responseStatusAuthentication = tmdbAuthentication.validateKey(); assertNotNull(responseStatusAuthentication); - testForNullFieldsAndNewItems(responseStatusAuthentication); + checkForNullAndEmptyFieldsAndNewItems(responseStatusAuthentication); assertTrue(responseStatusAuthentication.getSuccess()); } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbCertificationsTest.java b/src/test/java/info/movito/themoviedbapi/TmdbCertificationsTest.java index ec58151..f2c8b14 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbCertificationsTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbCertificationsTest.java @@ -16,7 +16,7 @@ import static info.movito.themoviedbapi.TmdbCertifications.TMDB_METHOD_MOVIE_CERTIFICATIONS; import static info.movito.themoviedbapi.TmdbCertifications.TMDB_METHOD_TV_CERTIFICATIONS; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -37,7 +37,7 @@ public void testGetMovieCertifications() throws IOException, TmdbException { TmdbCertifications tmdbCertifications = getTmdbApi().getCertifications(); CertificationResults movieCertifications = tmdbCertifications.getMovieCertifications(); assertNotNull(movieCertifications); - testForNullFieldsAndNewItems(movieCertifications); + checkForNullAndEmptyFieldsAndNewItems(movieCertifications); Map> certifications = movieCertifications.getCertifications(); assertFalse(certifications.isEmpty()); @@ -47,7 +47,7 @@ public void testGetMovieCertifications() throws IOException, TmdbException { Certification auCertification = auCertifications.get(0); assertNotNull(auCertification); - testForNullFieldsAndNewItems(auCertification); + checkForNullAndEmptyFieldsAndNewItems(auCertification); } /** @@ -62,7 +62,7 @@ public void testGetTvCertifications() throws IOException, TmdbException { TmdbCertifications tmdbCertifications = getTmdbApi().getCertifications(); CertificationResults tvCertifications = tmdbCertifications.getTvCertifications(); assertNotNull(tvCertifications); - testForNullFieldsAndNewItems(tvCertifications); + checkForNullAndEmptyFieldsAndNewItems(tvCertifications); Map> certifications = tvCertifications.getCertifications(); assertFalse(certifications.isEmpty()); @@ -72,6 +72,6 @@ public void testGetTvCertifications() throws IOException, TmdbException { Certification auCertification = auCertifications.get(0); assertNotNull(auCertification); - testForNullFieldsAndNewItems(auCertification); + checkForNullAndEmptyFieldsAndNewItems(auCertification); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbChangesTest.java b/src/test/java/info/movito/themoviedbapi/TmdbChangesTest.java index 26960bb..e06eed0 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbChangesTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbChangesTest.java @@ -15,7 +15,7 @@ import static info.movito.themoviedbapi.TmdbChanges.TMDB_METHOD_PERSON; import static info.movito.themoviedbapi.TmdbChanges.TMDB_METHOD_TV; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -43,11 +43,11 @@ public void testGetMovieChangesList() throws TmdbException, IOException { long end = System.currentTimeMillis(); System.out.println("Time: " + (end - start)); assertNotNull(changesResultsPage); - testForNullFieldsAndNewItems(changesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(changesResultsPage); Change change = changesResultsPage.getResults().get(0); assertNotNull(change); - testForNullFieldsAndNewItems(change); + checkForNullAndEmptyFieldsAndNewItems(change); } /** @@ -67,11 +67,11 @@ public void testGetPeopleChangesList() throws TmdbException, IOException { TmdbChanges tmdbChanges = getTmdbApi().getChanges(); ChangesResultsPage changesResultsPage = tmdbChanges.getPeopleChangesList(startDate, endDate, page); assertNotNull(changesResultsPage); - testForNullFieldsAndNewItems(changesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(changesResultsPage); Change change = changesResultsPage.getResults().get(0); assertNotNull(change); - testForNullFieldsAndNewItems(change); + checkForNullAndEmptyFieldsAndNewItems(change); } /** @@ -91,10 +91,10 @@ public void testGetTvChangesList() throws TmdbException, IOException { TmdbChanges tmdbChanges = getTmdbApi().getChanges(); ChangesResultsPage changesResultsPage = tmdbChanges.getTvChangesList(startDate, endDate, page); assertNotNull(changesResultsPage); - testForNullFieldsAndNewItems(changesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(changesResultsPage); Change change = changesResultsPage.getResults().get(0); assertNotNull(change); - testForNullFieldsAndNewItems(change); + checkForNullAndEmptyFieldsAndNewItems(change); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbCollectionsTest.java b/src/test/java/info/movito/themoviedbapi/TmdbCollectionsTest.java index 91f7000..b381883 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbCollectionsTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbCollectionsTest.java @@ -17,7 +17,7 @@ import static info.movito.themoviedbapi.TmdbCollections.TMDB_METHOD_COLLECTION; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -42,14 +42,14 @@ public void testGetDetails() throws IOException, TmdbException { TmdbCollections tmdbCollections = getTmdbApi().getCollections(); CollectionInfo collectionInfo = tmdbCollections.getDetails(collectionId, language); assertNotNull(collectionInfo); - testForNullFieldsAndNewItems(collectionInfo); + checkForNullAndEmptyFieldsAndNewItems(collectionInfo); List partList = collectionInfo.getParts(); assertFalse(partList.isEmpty()); Part part = partList.get(0); assertNotNull(part); - testForNullFieldsAndNewItems(part); + checkForNullAndEmptyFieldsAndNewItems(part); } /** @@ -69,15 +69,15 @@ public void testGetImages() throws IOException, TmdbException { TmdbCollections tmdbCollections = getTmdbApi().getCollections(); Images images = tmdbCollections.getImages(collectionId, language); assertNotNull(images); - testForNullFieldsAndNewItems(images); + checkForNullAndEmptyFieldsAndNewItems(images); List posters = images.getPosters(); assertFalse(posters.isEmpty()); - testForNullFieldsAndNewItems(posters.get(0)); + checkForNullAndEmptyFieldsAndNewItems(posters.get(0)); List backdrops = images.getBackdrops(); assertFalse(backdrops.isEmpty()); - testForNullFieldsAndNewItems(backdrops.get(0)); + checkForNullAndEmptyFieldsAndNewItems(backdrops.get(0)); } /** @@ -97,15 +97,15 @@ public void testGetImagesMultipleLanguages() throws IOException, TmdbException { TmdbCollections tmdbCollections = getTmdbApi().getCollections(); Images images = tmdbCollections.getImages(collectionId, null, includeImageLanguage); assertNotNull(images); - testForNullFieldsAndNewItems(images); + checkForNullAndEmptyFieldsAndNewItems(images); List posters = images.getPosters(); assertFalse(posters.isEmpty()); - testForNullFieldsAndNewItems(posters.get(0)); + checkForNullAndEmptyFieldsAndNewItems(posters.get(0)); List backdrops = images.getBackdrops(); assertFalse(backdrops.isEmpty()); - testForNullFieldsAndNewItems(backdrops.get(0)); + checkForNullAndEmptyFieldsAndNewItems(backdrops.get(0)); } /** @@ -125,10 +125,10 @@ public void testGetTranslations() throws IOException, TmdbException { Translation translation = translations.get(0); assertNotNull(translation); - testForNullFieldsAndNewItems(translation); + checkForNullAndEmptyFieldsAndNewItems(translation); Data data = translation.getData(); assertNotNull(data); - testForNullFieldsAndNewItems(data); + checkForNullAndEmptyFieldsAndNewItems(data); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbCompaniesTest.java b/src/test/java/info/movito/themoviedbapi/TmdbCompaniesTest.java index ae704e2..465a5e0 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbCompaniesTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbCompaniesTest.java @@ -14,7 +14,7 @@ import static info.movito.themoviedbapi.TmdbCompanies.TMDB_METHOD_COMPANY; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -36,7 +36,7 @@ public void testGetDetails() throws IOException, TmdbException { TmdbCompanies tmdbCompanies = getTmdbApi().getCompanies(); Company company = tmdbCompanies.getDetails(companyId); assertNotNull(company); - testForNullFieldsAndNewItems(company); + checkForNullAndEmptyFieldsAndNewItems(company); } /** @@ -53,11 +53,11 @@ public void testGetAlternativeNames() throws IOException, TmdbException { TmdbCompanies tmdbCompanies = getTmdbApi().getCompanies(); TmdbCompanies.AlternativeNamesResultsPage alternativeNamesResultsPage = tmdbCompanies.getAlternativeNames(1); assertNotNull(alternativeNamesResultsPage); - testForNullFieldsAndNewItems(alternativeNamesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(alternativeNamesResultsPage); AlternativeName alternativeName = alternativeNamesResultsPage.getResults().get(0); assertNotNull(alternativeName); - testForNullFieldsAndNewItems(alternativeName); + checkForNullAndEmptyFieldsAndNewItems(alternativeName); } /** @@ -74,10 +74,10 @@ public void testGetImages() throws IOException, TmdbException { TmdbCompanies tmdbCompanies = getTmdbApi().getCompanies(); ImageResults logoImageResults = tmdbCompanies.getImages(1); assertNotNull(logoImageResults); - testForNullFieldsAndNewItems(logoImageResults); + checkForNullAndEmptyFieldsAndNewItems(logoImageResults); Image image = logoImageResults.getLogos().get(0); assertNotNull(image); - testForNullFieldsAndNewItems(image); + checkForNullAndEmptyFieldsAndNewItems(image); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java b/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java index d09ae70..f90583e 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbConfigurationTest.java @@ -16,7 +16,7 @@ import static info.movito.themoviedbapi.TmdbConfiguration.TMDB_METHOD_CONFIGURATION; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -37,7 +37,7 @@ public void testGetDetails() throws IOException, TmdbException { TmdbConfiguration tmdbConfiguration = getTmdbApi().getConfiguration(); Configuration configuration = tmdbConfiguration.getDetails(); assertNotNull(configuration); - testForNullFieldsAndNewItems(configuration); + checkForNullAndEmptyFieldsAndNewItems(configuration); } /** @@ -56,7 +56,7 @@ public void testGetCountries() throws IOException, TmdbException { Country country = countries.get(0); assertNotNull(country); - testForNullFieldsAndNewItems(country); + checkForNullAndEmptyFieldsAndNewItems(country); } /** @@ -75,7 +75,7 @@ public void testGetJobs() throws IOException, TmdbException { Job job = jobs.get(0); assertNotNull(job); - testForNullFieldsAndNewItems(job); + checkForNullAndEmptyFieldsAndNewItems(job); } /** @@ -94,7 +94,7 @@ public void testGetLanguages() throws IOException, TmdbException { Language language = languages.get(0); assertNotNull(language); - testForNullFieldsAndNewItems(language); + checkForNullAndEmptyFieldsAndNewItems(language); } /** @@ -131,6 +131,6 @@ public void testGetTimezones() throws IOException, TmdbException { Timezone timezone = timezones.get(0); assertNotNull(timezone); - testForNullFieldsAndNewItems(timezone); + checkForNullAndEmptyFieldsAndNewItems(timezone); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbDiscoverTest.java b/src/test/java/info/movito/themoviedbapi/TmdbDiscoverTest.java index a1ece98..ef69622 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbDiscoverTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbDiscoverTest.java @@ -18,7 +18,7 @@ import static info.movito.themoviedbapi.TmdbDiscover.TMDB_METHOD_MOVIE; import static info.movito.themoviedbapi.TmdbDiscover.TMDB_METHOD_TV; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -41,11 +41,11 @@ public void testGetMovie() throws IOException, TmdbException { MovieResultsPage movieResultsPage = tmdbDiscover.getMovie(discoverMovieParamBuilder); assertNotNull(movieResultsPage); - testForNullFieldsAndNewItems(movieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPage); Movie movie = movieResultsPage.getResults().get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -60,11 +60,11 @@ public void testGetMovieNullBuilder() throws IOException, TmdbException { TmdbDiscover tmdbDiscover = getTmdbApi().getDiscover(); MovieResultsPage movieResultsPage = tmdbDiscover.getMovie(null); assertNotNull(movieResultsPage); - testForNullFieldsAndNewItems(movieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPage); Movie movie = movieResultsPage.getResults().get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -82,11 +82,11 @@ public void testGetTv() throws IOException, TmdbException { TvSeriesResultsPage tvSeriesResultsPage = tmdbDiscover.getTv(discoverTvParamBuilder); assertNotNull(tvSeriesResultsPage); - testForNullFieldsAndNewItems(tvSeriesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(tvSeriesResultsPage); TvSeries tvSeries = tvSeriesResultsPage.getResults().get(0); assertNotNull(tvSeries); - testForNullFieldsAndNewItems(tvSeries); + checkForNullAndEmptyFieldsAndNewItems(tvSeries); } /** @@ -101,10 +101,10 @@ public void testGetTvNullBuilder() throws IOException, TmdbException { TmdbDiscover tmdbDiscover = getTmdbApi().getDiscover(); TvSeriesResultsPage tvSeriesResultsPage = tmdbDiscover.getTv(null); assertNotNull(tvSeriesResultsPage); - testForNullFieldsAndNewItems(tvSeriesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(tvSeriesResultsPage); TvSeries tvSeries = tvSeriesResultsPage.getResults().get(0); assertNotNull(tvSeries); - testForNullFieldsAndNewItems(tvSeries); + checkForNullAndEmptyFieldsAndNewItems(tvSeries); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbGenresTest.java b/src/test/java/info/movito/themoviedbapi/TmdbGenresTest.java index 191bc65..82696ef 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbGenresTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbGenresTest.java @@ -12,7 +12,7 @@ import static info.movito.themoviedbapi.TmdbGenre.TMDB_METHOD_GENRE; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -37,7 +37,7 @@ public void testGetMovieList() throws IOException, TmdbException { Genre genre = genres.get(0); assertNotNull(genre); - testForNullFieldsAndNewItems(genre); + checkForNullAndEmptyFieldsAndNewItems(genre); } /** @@ -56,6 +56,6 @@ public void testGetTvList() throws IOException, TmdbException { Genre genre = genres.get(0); assertNotNull(genre); - testForNullFieldsAndNewItems(genre); + checkForNullAndEmptyFieldsAndNewItems(genre); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbGuestSessionsTest.java b/src/test/java/info/movito/themoviedbapi/TmdbGuestSessionsTest.java index 88eb96f..c810703 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbGuestSessionsTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbGuestSessionsTest.java @@ -18,7 +18,7 @@ import static info.movito.themoviedbapi.TmdbGuestSessions.TMDB_METHOD_GUEST_SESSIONS; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -39,14 +39,14 @@ public void testGetRatedMovies() throws IOException, TmdbException { TmdbGuestSessions guestSessions = new TmdbGuestSessions(getTmdbApi()); RatedMovieResultsPage ratedMovieResultsPage = guestSessions.getRatedMovies(1, "en", 1, AccountSortBy.CREATED_AT_DESC); assertNotNull(ratedMovieResultsPage); - testForNullFieldsAndNewItems(ratedMovieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(ratedMovieResultsPage); List ratedMovies = ratedMovieResultsPage.getResults(); assertFalse(ratedMovies.isEmpty()); RatedMovie ratedMovie = ratedMovies.get(0); assertNotNull(ratedMovie); - testForNullFieldsAndNewItems(ratedMovie); + checkForNullAndEmptyFieldsAndNewItems(ratedMovie); } /** @@ -61,14 +61,14 @@ public void testGetRatedTvSeries() throws IOException, TmdbException { TmdbGuestSessions guestSessions = new TmdbGuestSessions(getTmdbApi()); RatedTvSeriesResultsPage ratedTvSeriesResultsPage = guestSessions.getRatedTvSeries(1, "en", 1, AccountSortBy.CREATED_AT_DESC); assertNotNull(ratedTvSeriesResultsPage); - testForNullFieldsAndNewItems(ratedTvSeriesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(ratedTvSeriesResultsPage); List ratedTvSeriess = ratedTvSeriesResultsPage.getResults(); assertFalse(ratedTvSeriess.isEmpty()); RatedTvSeries ratedTvSeries = ratedTvSeriess.get(0); assertNotNull(ratedTvSeries); - testForNullFieldsAndNewItems(ratedTvSeries); + checkForNullAndEmptyFieldsAndNewItems(ratedTvSeries); } /** @@ -84,13 +84,13 @@ public void testGetRatedTvEpisodes() throws IOException, TmdbException { TmdbGuestSessions guestSessions = new TmdbGuestSessions(getTmdbApi()); RatedTvEpisodeResultsPage ratedTvEpisodesResultsPage = guestSessions.getRatedTvEpisodes(1, "en", 1, AccountSortBy.CREATED_AT_DESC); assertNotNull(ratedTvEpisodesResultsPage); - testForNullFieldsAndNewItems(ratedTvEpisodesResultsPage); + checkForNullAndEmptyFieldsAndNewItems(ratedTvEpisodesResultsPage); List ratedTvEpisodes = ratedTvEpisodesResultsPage.getResults(); assertFalse(ratedTvEpisodes.isEmpty()); RatedTvEpisode ratedTvEpisode = ratedTvEpisodes.get(0); assertNotNull(ratedTvEpisode); - testForNullFieldsAndNewItems(ratedTvEpisode); + checkForNullAndEmptyFieldsAndNewItems(ratedTvEpisode); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbKeywordsTest.java b/src/test/java/info/movito/themoviedbapi/TmdbKeywordsTest.java index a859972..4dca39b 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbKeywordsTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbKeywordsTest.java @@ -11,7 +11,7 @@ import static info.movito.themoviedbapi.TmdbKeywords.TMDB_METHOD_KEYWORD; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -31,6 +31,6 @@ public void testGetDetails() throws TmdbException, IOException { TmdbKeywords tmdbKeywords = getTmdbApi().getKeywords(); Keyword keyword = tmdbKeywords.getDetails(1); assertNotNull(keyword); - testForNullFieldsAndNewItems(keyword); + checkForNullAndEmptyFieldsAndNewItems(keyword); } } diff --git a/src/test/java/info/movito/themoviedbapi/TmdbMovieListsTest.java b/src/test/java/info/movito/themoviedbapi/TmdbMovieListsTest.java index 63184bc..3d73fcc 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbMovieListsTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbMovieListsTest.java @@ -15,7 +15,7 @@ import static info.movito.themoviedbapi.TmdbMovieLists.TMDB_METHOD_MOVIE_LISTS; import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -36,11 +36,11 @@ public void testGetNowPlaying() throws IOException, TmdbException { TmdbMovieLists tmdbMovieLists = getTmdbApi().getMovieLists(); MovieResultsPageWithDates movieResultsPageWithDates = tmdbMovieLists.getNowPlaying("en-US", 1, null); assertNotNull(movieResultsPageWithDates); - testForNullFieldsAndNewItems(movieResultsPageWithDates); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPageWithDates); Dates dates = movieResultsPageWithDates.getDates(); assertNotNull(dates); - testForNullFieldsAndNewItems(dates); + checkForNullAndEmptyFieldsAndNewItems(dates); List movies = movieResultsPageWithDates.getResults(); assertNotNull(movies); @@ -48,7 +48,7 @@ public void testGetNowPlaying() throws IOException, TmdbException { Movie movie = movies.get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); List genreIds = movie.getGenreIds(); assertNotNull(genreIds); @@ -68,7 +68,7 @@ public void testGetPopular() throws IOException, TmdbException { TmdbMovieLists tmdbMovieLists = getTmdbApi().getMovieLists(); MovieResultsPage movieResultsPage = tmdbMovieLists.getPopular("en-US", 1, null); assertNotNull(movieResultsPage); - testForNullFieldsAndNewItems(movieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPage); List movies = movieResultsPage.getResults(); assertNotNull(movies); @@ -76,7 +76,7 @@ public void testGetPopular() throws IOException, TmdbException { Movie movie = movies.get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); List genreIds = movie.getGenreIds(); assertNotNull(genreIds); @@ -96,7 +96,7 @@ public void testGetTopRated() throws IOException, TmdbException { TmdbMovieLists tmdbMovieLists = getTmdbApi().getMovieLists(); MovieResultsPage movieResultsPage = tmdbMovieLists.getTopRated("en-US", 1, null); assertNotNull(movieResultsPage); - testForNullFieldsAndNewItems(movieResultsPage); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPage); List movies = movieResultsPage.getResults(); assertNotNull(movies); @@ -104,7 +104,7 @@ public void testGetTopRated() throws IOException, TmdbException { Movie movie = movies.get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); List genreIds = movie.getGenreIds(); assertNotNull(genreIds); @@ -124,11 +124,11 @@ public void testGetUpcoming() throws IOException, TmdbException { TmdbMovieLists tmdbMovieLists = getTmdbApi().getMovieLists(); MovieResultsPageWithDates movieResultsPageWithDates = tmdbMovieLists.getUpcoming("en-US", 1, null); assertNotNull(movieResultsPageWithDates); - testForNullFieldsAndNewItems(movieResultsPageWithDates); + checkForNullAndEmptyFieldsAndNewItems(movieResultsPageWithDates); Dates dates = movieResultsPageWithDates.getDates(); assertNotNull(dates); - testForNullFieldsAndNewItems(dates); + checkForNullAndEmptyFieldsAndNewItems(dates); List movies = movieResultsPageWithDates.getResults(); assertNotNull(movies); @@ -136,7 +136,7 @@ public void testGetUpcoming() throws IOException, TmdbException { Movie movie = movies.get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); List genreIds = movie.getGenreIds(); assertNotNull(genreIds); diff --git a/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java b/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java index b810fb3..7d6d6a0 100644 --- a/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java +++ b/src/test/java/info/movito/themoviedbapi/TmdbMoviesTest.java @@ -58,7 +58,7 @@ import static info.movito.themoviedbapi.tools.ApiUrl.TMDB_API_BASE_URL; import static info.movito.themoviedbapi.util.TestUtils.testForNewItems; import static info.movito.themoviedbapi.util.TestUtils.testForNullFields; -import static info.movito.themoviedbapi.util.TestUtils.testForNullFieldsAndNewItems; +import static info.movito.themoviedbapi.util.TestUtils.checkForNullAndEmptyFieldsAndNewItems; import static info.movito.themoviedbapi.util.TestUtils.testForNestedEmptyCollectionsAndNullObjects; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -90,22 +90,22 @@ public void testGetDetails() throws IOException, TmdbException { List genres = movie.getGenres(); assertNotNull(genres); assertFalse(genres.isEmpty()); - testForNullFieldsAndNewItems(genres.get(0)); + checkForNullAndEmptyFieldsAndNewItems(genres.get(0)); List productionCompanies = movie.getProductionCompanies(); assertNotNull(productionCompanies); assertFalse(productionCompanies.isEmpty()); - testForNullFieldsAndNewItems(productionCompanies.get(0)); + checkForNullAndEmptyFieldsAndNewItems(productionCompanies.get(0)); List productionCountries = movie.getProductionCountries(); assertNotNull(productionCountries); assertFalse(productionCountries.isEmpty()); - testForNullFieldsAndNewItems(productionCountries.get(0)); + checkForNullAndEmptyFieldsAndNewItems(productionCountries.get(0)); List spokenLanguages = movie.getSpokenLanguages(); assertNotNull(spokenLanguages); assertFalse(spokenLanguages.isEmpty()); - testForNullFieldsAndNewItems(spokenLanguages.get(0)); + checkForNullAndEmptyFieldsAndNewItems(spokenLanguages.get(0)); } /** @@ -122,7 +122,7 @@ public void testGetDetailsWithAppendToResponse() throws IOException, TmdbExcepti TmdbMovies tmdbMovies = getTmdbApi().getMovies(); MovieDb movie = tmdbMovies.getDetails(123, "en-US", MovieAppendToResponse.values()); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -137,12 +137,12 @@ public void testGetAccountStates() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); AccountStates accountStates = tmdbMovies.getAccountStates(123, "123", null); assertNotNull(accountStates); - testForNullFieldsAndNewItems(accountStates); + checkForNullAndEmptyFieldsAndNewItems(accountStates); Optional rated = accountStates.getRated(); assertNotNull(rated); assertTrue(rated.isPresent()); - testForNullFieldsAndNewItems(rated.get()); + checkForNullAndEmptyFieldsAndNewItems(rated.get()); } /** @@ -157,12 +157,12 @@ public void testGetAlternativeTitles() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); AlternativeTitles alternativeTitles = tmdbMovies.getAlternativeTitles(123, "US"); assertNotNull(alternativeTitles); - testForNullFieldsAndNewItems(alternativeTitles); + checkForNullAndEmptyFieldsAndNewItems(alternativeTitles); List titles = alternativeTitles.getTitles(); assertNotNull(titles); assertFalse(titles.isEmpty()); - testForNullFieldsAndNewItems(titles.get(0)); + checkForNullAndEmptyFieldsAndNewItems(titles.get(0)); } /** @@ -177,7 +177,7 @@ public void testGetChanges() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); ChangeResults changeResults = tmdbMovies.getChanges(123, null, null, null); assertNotNull(changeResults); - testForNullFieldsAndNewItems(changeResults); + checkForNullAndEmptyFieldsAndNewItems(changeResults); List changedItems = changeResults.getChangedItems(); assertNotNull(changedItems); @@ -185,12 +185,12 @@ public void testGetChanges() throws IOException, TmdbException { Change change = changedItems.get(0); assertNotNull(change); - testForNullFieldsAndNewItems(change); + checkForNullAndEmptyFieldsAndNewItems(change); List changeItems = change.getChangeItems(); assertNotNull(changeItems); assertFalse(changeItems.isEmpty()); - testForNullFieldsAndNewItems(changeItems.get(0)); + checkForNullAndEmptyFieldsAndNewItems(changeItems.get(0)); } /** @@ -205,17 +205,17 @@ public void testGetCredits() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); Credits credits = tmdbMovies.getCredits(123, "en-US"); assertNotNull(credits); - testForNullFieldsAndNewItems(credits); + checkForNullAndEmptyFieldsAndNewItems(credits); List cast = credits.getCast(); assertNotNull(cast); assertFalse(cast.isEmpty()); - testForNullFieldsAndNewItems(cast.get(0)); + checkForNullAndEmptyFieldsAndNewItems(cast.get(0)); List crew = credits.getCrew(); assertNotNull(crew); assertFalse(crew.isEmpty()); - testForNullFieldsAndNewItems(crew.get(0)); + checkForNullAndEmptyFieldsAndNewItems(crew.get(0)); } /** @@ -230,7 +230,7 @@ public void testGetExternalIds() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); ExternalIds externalIds = tmdbMovies.getExternalIds(123); assertNotNull(externalIds); - testForNullFieldsAndNewItems(externalIds); + checkForNullAndEmptyFieldsAndNewItems(externalIds); } /** @@ -245,19 +245,19 @@ public void testGetImages() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); Images images = tmdbMovies.getImages(123, "en-US"); assertNotNull(images); - testForNullFieldsAndNewItems(images); + checkForNullAndEmptyFieldsAndNewItems(images); List posters = images.getPosters(); assertFalse(posters.isEmpty()); - testForNullFieldsAndNewItems(posters.get(0)); + checkForNullAndEmptyFieldsAndNewItems(posters.get(0)); List backdrops = images.getBackdrops(); assertFalse(backdrops.isEmpty()); - testForNullFieldsAndNewItems(backdrops.get(0)); + checkForNullAndEmptyFieldsAndNewItems(backdrops.get(0)); List logos = images.getLogos(); assertFalse(logos.isEmpty()); - testForNullFieldsAndNewItems(logos.get(0)); + checkForNullAndEmptyFieldsAndNewItems(logos.get(0)); } /** @@ -272,11 +272,11 @@ public void testGetKeywords() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); KeywordResults keywords = tmdbMovies.getKeywords(123); assertNotNull(keywords); - testForNullFieldsAndNewItems(keywords); + checkForNullAndEmptyFieldsAndNewItems(keywords); List keywordsList = keywords.getKeywords(); assertFalse(keywordsList.isEmpty()); - testForNullFieldsAndNewItems(keywordsList.get(0)); + checkForNullAndEmptyFieldsAndNewItems(keywordsList.get(0)); } /** @@ -308,11 +308,11 @@ public void testGetLists() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); MovieListResultsPage lists = tmdbMovies.getLists(123, "en-US", null); assertNotNull(lists); - testForNullFieldsAndNewItems(lists); + checkForNullAndEmptyFieldsAndNewItems(lists); MovieList list = lists.getResults().get(0); assertNotNull(list); - testForNullFieldsAndNewItems(list); + checkForNullAndEmptyFieldsAndNewItems(list); } /** @@ -327,11 +327,11 @@ public void testGetRecommendations() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); MovieResultsPage recommendations = tmdbMovies.getRecommendations(123, "en-US", 1); assertNotNull(recommendations); - testForNullFieldsAndNewItems(recommendations); + checkForNullAndEmptyFieldsAndNewItems(recommendations); Movie movie = recommendations.getResults().get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -346,11 +346,11 @@ public void testGetReleaseDates() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); ReleaseDateResults releaseDates = tmdbMovies.getReleaseDates(123); assertNotNull(releaseDates); - testForNullFieldsAndNewItems(releaseDates); + checkForNullAndEmptyFieldsAndNewItems(releaseDates); ReleaseInfo releaseInfo = releaseDates.getResults().get(0); assertNotNull(releaseInfo); - testForNullFieldsAndNewItems(releaseInfo); + checkForNullAndEmptyFieldsAndNewItems(releaseInfo); List releaseDatesList = releaseInfo.getReleaseDates(); assertNotNull(releaseDatesList); @@ -358,9 +358,9 @@ public void testGetReleaseDates() throws IOException, TmdbException { ReleaseDate releaseDate = releaseDatesList.get(0); assertNotNull(releaseDate); - testForNullFieldsAndNewItems(releaseDate); + checkForNullAndEmptyFieldsAndNewItems(releaseDate); - List descriptors = releaseDate.getDescriptors(); + List descriptors = releaseDate.getDescriptors(); assertNotNull(descriptors); assertFalse(descriptors.isEmpty()); assertNotNull(descriptors.get(0)); @@ -378,15 +378,15 @@ public void testGetReviews() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); ReviewResultsPage reviews = tmdbMovies.getReviews(123, "en-US", null); assertNotNull(reviews); - testForNullFieldsAndNewItems(reviews); + checkForNullAndEmptyFieldsAndNewItems(reviews); Review review = reviews.getResults().get(0); assertNotNull(review); - testForNullFieldsAndNewItems(review); + checkForNullAndEmptyFieldsAndNewItems(review); AuthorDetails authorDetails = review.getAuthorDetails(); assertNotNull(authorDetails); - testForNullFieldsAndNewItems(authorDetails); + checkForNullAndEmptyFieldsAndNewItems(authorDetails); } /** @@ -401,11 +401,11 @@ public void testGetSimilar() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); MovieResultsPage similar = tmdbMovies.getSimilar(123, "en-US", null); assertNotNull(similar); - testForNullFieldsAndNewItems(similar); + checkForNullAndEmptyFieldsAndNewItems(similar); Movie movie = similar.getResults().get(0); assertNotNull(movie); - testForNullFieldsAndNewItems(movie); + checkForNullAndEmptyFieldsAndNewItems(movie); } /** @@ -420,7 +420,7 @@ public void testGetTranslations() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); Translations translations = tmdbMovies.getTranslations(123); assertNotNull(translations); - testForNullFieldsAndNewItems(translations); + checkForNullAndEmptyFieldsAndNewItems(translations); List translationsList = translations.getTranslations(); assertNotNull(translationsList); @@ -428,11 +428,11 @@ public void testGetTranslations() throws IOException, TmdbException { Translation translation = translationsList.get(0); assertNotNull(translation); - testForNullFieldsAndNewItems(translation); + checkForNullAndEmptyFieldsAndNewItems(translation); Data data = translation.getData(); assertNotNull(data); - testForNullFieldsAndNewItems(data); + checkForNullAndEmptyFieldsAndNewItems(data); } /** @@ -447,12 +447,12 @@ public void testGetVideos() throws IOException, TmdbException { TmdbMovies tmdbMovies = getTmdbApi().getMovies(); VideoResults videos = tmdbMovies.getVideos(123, "en-US"); assertNotNull(videos); - testForNullFieldsAndNewItems(videos); + checkForNullAndEmptyFieldsAndNewItems(videos); List