diff --git a/src/main/java/com/wrapper/spotify/Api.java b/src/main/java/com/wrapper/spotify/Api.java index 0d69f8554..d5976227e 100644 --- a/src/main/java/com/wrapper/spotify/Api.java +++ b/src/main/java/com/wrapper/spotify/Api.java @@ -141,6 +141,13 @@ public TrackRequest.Builder getTrack(String id) { return builder; } + public TrackRequest.Builder getTrack(String id, String market) { + TrackRequest.Builder builder = TrackRequest.builder(); + setDefaults(builder); + builder.id(id).market(market); + return builder; + } + public TracksRequest.Builder getTracks(String... ids) { return getTracks(Arrays.asList(ids)); } diff --git a/src/main/java/com/wrapper/spotify/JsonUtil.java b/src/main/java/com/wrapper/spotify/JsonUtil.java index df66dcd52..7d2290329 100644 --- a/src/main/java/com/wrapper/spotify/JsonUtil.java +++ b/src/main/java/com/wrapper/spotify/JsonUtil.java @@ -223,9 +223,11 @@ public static SimpleAlbum createSimpleAlbum(JSONObject simpleAlbumJson) { simpleAlbum.setName(simpleAlbumJson.getString("name")); simpleAlbum.setType(createSpotifyEntityType(simpleAlbumJson.getString("type"))); simpleAlbum.setUri(simpleAlbumJson.getString("uri")); - simpleAlbum.setAvailableMarkets( - createAvailableMarkets(simpleAlbumJson.getJSONArray("available_markets"))); + if (existsAndNotNull("available_markets", simpleAlbumJson)) { + simpleAlbum.setAvailableMarkets( + createAvailableMarkets(simpleAlbumJson.getJSONArray("available_markets"))); + } return simpleAlbum; } @@ -287,7 +289,10 @@ private static Track createTrack(JSONObject trackJson) { track.setAlbum(createSimpleAlbum(trackJson.getJSONObject("album"))); track.setArtists(createSimpleArtists(trackJson.getJSONArray("artists"))); - track.setAvailableMarkets(createAvailableMarkets(trackJson.getJSONArray("available_markets"))); + if (existsAndNotNull("available_markets", trackJson)) { + track.setAvailableMarkets(createAvailableMarkets(trackJson.getJSONArray("available_markets"))); + } + track.setDiscNumber(trackJson.getInt("disc_number")); track.setDuration(trackJson.getInt("duration_ms")); track.setExplicit(trackJson.getBoolean("explicit")); diff --git a/src/main/java/com/wrapper/spotify/methods/PlaylistTracksRequest.java b/src/main/java/com/wrapper/spotify/methods/PlaylistTracksRequest.java index 528cf640d..e5ad46012 100644 --- a/src/main/java/com/wrapper/spotify/methods/PlaylistTracksRequest.java +++ b/src/main/java/com/wrapper/spotify/methods/PlaylistTracksRequest.java @@ -54,6 +54,11 @@ public Builder limit(int limit) { return parameter("limit", String.valueOf(limit)); } + public Builder market(String market) { + assert (market != null); + return parameter("market", market); + } + public Builder offset(int offset) { assert (offset >= 0); return parameter("offset", String.valueOf(offset)); diff --git a/src/main/java/com/wrapper/spotify/methods/TrackRequest.java b/src/main/java/com/wrapper/spotify/methods/TrackRequest.java index aaccd9b2b..7df32f2b6 100644 --- a/src/main/java/com/wrapper/spotify/methods/TrackRequest.java +++ b/src/main/java/com/wrapper/spotify/methods/TrackRequest.java @@ -49,6 +49,12 @@ public Builder id(String id) { return path(String.format("/v1/tracks/%s", id)); } + /** add Market */ + public Builder market(String market) { + assert (market != null); + return parameter("market", market); + } + public TrackRequest build() { return new TrackRequest(this); } diff --git a/src/test/fixtures/playlist-tracks.json b/src/test/fixtures/playlist-tracks.json index d12dab0f5..c3104debe 100644 --- a/src/test/fixtures/playlist-tracks.json +++ b/src/test/fixtures/playlist-tracks.json @@ -15,9 +15,7 @@ "track": { "album": { "album_type": "single", - "available_markets": [ "AR", "BO", "BR", "CA", "CL", "CO", "CR", "DO", "EC", - "GB", "GT", "HN", "NI", "PA", "PE", "PH", "PY", "SV", - "UY" ], + "external_urls": { "spotify": "https://open.spotify.com/album/4nOrpg3k8viJ5AtL0vOsg4" },