Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added search-album.json
Empty file.
1 change: 0 additions & 1 deletion src/main/java/se/michaelthelin/spotify/Api.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package se.michaelthelin.spotify;

import com.google.protobuf.RepeatedFieldBuilder;
import se.michaelthelin.spotify.UtilProtos.Url.Scheme;
import se.michaelthelin.spotify.methods.*;

Expand Down
47 changes: 38 additions & 9 deletions src/main/java/se/michaelthelin/spotify/JsonUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ private static Album createAlbum(JSONObject albumJson) {
album.setName(albumJson.getString("name"));
album.setPopularity(albumJson.getInt("popularity"));
album.setReleaseDate(createReleaseDate(albumJson.getJSONObject("release_date")));
album.setTracks(createSimpleTracks(albumJson.getJSONArray("tracks")));
album.setTracks(createSimpleTrackPage(albumJson.getJSONObject("tracks")));
album.setType(createSpotifyEntityType(albumJson.getString("type")));
album.setUri(albumJson.getString("uri"));

Expand Down Expand Up @@ -154,12 +154,16 @@ public static ReleaseDate createReleaseDate(JSONObject releaseDateJson) {
ReleaseDate releaseDate = new ReleaseDate();

releaseDate.setYear(releaseDateJson.getInt("year"));
if (!releaseDateJson.getJSONObject("month").isNullObject()) {
if (releaseDateJson.has("month") && !releaseDateJson.get("month").equals("null")) {
releaseDate.setMonth(releaseDateJson.getInt("month"));
} else {
releaseDate.setMonth(null);
}

if (!releaseDateJson.getJSONObject("date").isNullObject()) {
releaseDate.setDate(releaseDateJson.getInt("date"));
if (releaseDateJson.has("day") && !releaseDateJson.get("day").equals("null")) {
releaseDate.setDate(releaseDateJson.getInt("day"));
} else {
releaseDate.setDate(null);
}

return releaseDate;
Expand Down Expand Up @@ -191,7 +195,7 @@ public static SimpleAlbum createSimpleAlbum(JSONObject simpleAlbumJson) {
simpleAlbum.setImages(createImages(simpleAlbumJson.getJSONArray("images")));
simpleAlbum.setName(simpleAlbumJson.getString("name"));
simpleAlbum.setType(createSpotifyEntityType(simpleAlbumJson.getString("type")));
simpleAlbum.setUri(simpleAlbumJson.getString("type"));
simpleAlbum.setUri(simpleAlbumJson.getString("uri"));

return simpleAlbum;
}
Expand All @@ -211,6 +215,14 @@ public static List<Album> createAlbums(JSONArray jsonArray) {
return returnedAlbums;
}

public static List<SimpleAlbum> createSimpleAlbums(JSONArray jsonArray) {
List<SimpleAlbum> returnedAlbums = new ArrayList<SimpleAlbum>();
for (int i = 0; i < jsonArray.size(); i++) {
returnedAlbums.add(createSimpleAlbum(jsonArray.getJSONObject(i)));
}
return returnedAlbums;
}

public static SimpleArtist createSimpleArtist(JSONObject simpleArtistJson) {
if (simpleArtistJson == null || simpleArtistJson.isNullObject()) {
return null;
Expand Down Expand Up @@ -303,8 +315,8 @@ public static Page<Album> createAlbumPage(String albumPageJson) {
}

public static Page<Album> createAlbumPage(JSONObject albumPageJson) {
Page page = createItemlessPage(albumPageJson);
page.setItems(createAlbums(albumPageJson.getJSONArray("items")));
Page page = createItemlessPage(albumPageJson.getJSONObject("albums"));
page.setItems(createAlbums(albumPageJson.getJSONObject("albums").getJSONArray("items")));
return page;
}

Expand All @@ -328,8 +340,8 @@ public static Page<Track> createTrackPage(String trackPageJson) {
}

public static Page<Track> createTrackPage(JSONObject trackPageJson) {
Page page = createItemlessPage(trackPageJson);
page.setItems(createTracks(trackPageJson.getJSONArray("items")));
Page page = createItemlessPage(trackPageJson.getJSONObject("tracks"));
page.setItems(createTracks(trackPageJson.getJSONObject("tracks").getJSONArray("items")));
return page;
}

Expand All @@ -343,6 +355,22 @@ public static Page<Artist> createArtistPage(JSONObject artistPageJson) {
return page;
}

private static Page<SimpleTrack> createSimpleTrackPage(JSONObject simpleTrackPageJson) {
Page page = createItemlessPage(simpleTrackPageJson);
page.setItems(createSimpleTracks(simpleTrackPageJson.getJSONArray("items")));
return page;
}

public static Page<SimpleAlbum> createSimpleAlbumPage(String simpleAlbumPageJson) {
return createSimpleAlbumPage(JSONObject.fromObject(simpleAlbumPageJson));
}

public static Page<SimpleAlbum> createSimpleAlbumPage(JSONObject simpleAlbumPageJson) {
Page page = createItemlessPage(simpleAlbumPageJson);
page.setItems(createSimpleAlbums(simpleAlbumPageJson.getJSONArray("items")));
return page;
}

public static User createUser(String userJson) {
return createUser(JSONObject.fromObject(userJson));
}
Expand Down Expand Up @@ -376,4 +404,5 @@ public static User createUser(JSONObject userJson) {
private static Product createProduct(String product) {
return Product.valueOf(product.toUpperCase());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import se.michaelthelin.spotify.exceptions.UnexpectedResponseException;
import se.michaelthelin.spotify.models.Album;
import se.michaelthelin.spotify.models.Page;
import se.michaelthelin.spotify.models.SimpleAlbum;

import java.io.IOException;

Expand All @@ -15,13 +16,13 @@ protected AlbumSearchRequest(Builder builder) {
super(builder);
}

public SettableFuture<Page<Album>> getAlbumsPageAsync() {
SettableFuture<Page<Album>> searchResultFuture = SettableFuture.create();
public SettableFuture<Page<SimpleAlbum>> getAsync() {
SettableFuture<Page<SimpleAlbum>> searchResultFuture = SettableFuture.create();

try {
String jsonString = getJson();
JSONObject jsonObject = JSONObject.fromObject(jsonString);
searchResultFuture.set(JsonUtil.createAlbumPage(jsonObject));
searchResultFuture.set(JsonUtil.createSimpleAlbumPage(jsonObject.getJSONObject("albums")));
} catch (IOException e) {
searchResultFuture.setException(e);
} catch (UnexpectedResponseException e) {
Expand All @@ -31,8 +32,8 @@ public SettableFuture<Page<Album>> getAlbumsPageAsync() {
return searchResultFuture;
}

public Page<Album> getAlbumsPage() throws IOException, UnexpectedResponseException {
return JsonUtil.createAlbumPage(getJson());
public Page<SimpleAlbum> get() throws IOException, UnexpectedResponseException {
return JsonUtil.createSimpleAlbumPage(JSONObject.fromObject(getJson()).getJSONObject("albums"));
}

public static Builder builder() {
Expand All @@ -43,9 +44,9 @@ public static final class Builder extends AbstractRequest.Builder<Builder> {

public Builder query(String query) {
assert (query != null);
path("/v1/albums/search");
String massagedQuery = query.replace(" ", "+");
return parameter("q", massagedQuery);
path("/v1/search");
parameter("type","album");
return parameter("q", query);
}

public Builder limit(int limit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import se.michaelthelin.spotify.models.Album;
import se.michaelthelin.spotify.models.AlbumType;
import se.michaelthelin.spotify.models.Page;
import se.michaelthelin.spotify.models.SimpleAlbum;

import java.io.IOException;

Expand All @@ -19,13 +20,13 @@ public AlbumsForArtistRequest(Builder builder) {
super(builder);
}

public SettableFuture<Page<Album>> getAsync() {
SettableFuture<Page<Album>> searchResultFuture = SettableFuture.create();
public SettableFuture<Page<SimpleAlbum>> getAsync() {
SettableFuture<Page<SimpleAlbum>> searchResultFuture = SettableFuture.create();

try {
String jsonString = getJson();
JSONObject jsonObject = JSONObject.fromObject(jsonString);
searchResultFuture.set(JsonUtil.createAlbumPage(jsonObject));
searchResultFuture.set(JsonUtil.createSimpleAlbumPage(jsonObject));
} catch (IOException e) {
searchResultFuture.setException(e);
} catch (UnexpectedResponseException e) {
Expand All @@ -35,8 +36,8 @@ public SettableFuture<Page<Album>> getAsync() {
return searchResultFuture;
}

public Page<Album> get() throws IOException, UnexpectedResponseException, NotFoundException, BadFieldException {
return JsonUtil.createAlbumPage(getJson());
public Page<SimpleAlbum> get() throws IOException, UnexpectedResponseException, NotFoundException, BadFieldException {
return JsonUtil.createSimpleAlbumPage(getJson());
}

public static Builder builder() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public SettableFuture<Page<Artist>> getAsync() {
try {
String jsonString = getJson();
JSONObject jsonObject = JSONObject.fromObject(jsonString);
searchResultFuture.set(JsonUtil.createArtistPage(jsonObject));
searchResultFuture.set(JsonUtil.createArtistPage(jsonObject.getJSONObject("artists")));
} catch (IOException e) {
searchResultFuture.setException(e);
} catch (UnexpectedResponseException e) {
Expand All @@ -33,7 +33,7 @@ public SettableFuture<Page<Artist>> getAsync() {
}

public Page<Artist> get() throws IOException, UnexpectedResponseException {
return JsonUtil.createArtistPage(getJson());
return JsonUtil.createArtistPage(JSONObject.fromObject(getJson()).getJSONObject("artists"));
}

public static Builder builder() {
Expand All @@ -44,9 +44,9 @@ public static final class Builder extends AbstractRequest.Builder<Builder> {

public Builder query(String query) {
assert (query != null);
path("/v1/artists/search");
String massagedQuery = query.replace(" ", "+");
return parameter("q", massagedQuery);
path("/v1/search");
parameter("type","artist");
return parameter("q", query);
}

public Builder limit(int limit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ public static final class Builder extends AbstractRequest.Builder<Builder> {

public Builder query(String query) {
assert (query != null);
path("/v1/tracks/search");
String massagedQuery = query.replace(" ", "+");
return parameter("q", massagedQuery);
path("/v1/search");
parameter("type","track");
return parameter("q", query);
}

public Builder limit(int limit) {
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/se/michaelthelin/spotify/models/Album.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class Album {
private String name;
private int popularity;
private ReleaseDate releaseDate;
private List<SimpleTrack> tracks;
private Page<SimpleTrack> tracks;
private SpotifyEntityType type = SpotifyEntityType.ALBUM;
private String uri;

Expand Down Expand Up @@ -116,11 +116,11 @@ public void setReleaseDate(ReleaseDate releaseDate) {
this.releaseDate = releaseDate;
}

public List<SimpleTrack> getTracks() {
public Page<SimpleTrack> getTracks() {
return tracks;
}

public void setTracks(List<SimpleTrack> tracks) {
public void setTracks(Page<SimpleTrack> tracks) {
this.tracks = tracks;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,8 @@ public Map<String, String> getExternalUrls() {
return externalUrls;
}

public String get(String key) {
return externalUrls.get(key);
}

}
15 changes: 15 additions & 0 deletions src/main/java/se/michaelthelin/spotify/models/Followers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package se.michaelthelin.spotify.models;

public class Followers {

private String href;
private int total;

public String getHref() {
return href;
}

public void setHref(String href) {
this.href = href;
}
}
20 changes: 6 additions & 14 deletions src/main/java/se/michaelthelin/spotify/models/Playlist.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ public class Playlist {
private boolean collaborative;
private String description;
private ExternalUrls externalUrls;
private int followersCount;
private Followers followers;
private String href;
private String id;
private List<Image> images;
private User owner;
private String name;
private boolean publicAccess;
private int tracksCount;
private Page<PlaylistTrack> tracks;
private SpotifyEntityType type = SpotifyEntityType.PLAYLIST;
private String uri;

Expand Down Expand Up @@ -42,12 +42,12 @@ public void setExternalUrls(ExternalUrls externalUrls) {
this.externalUrls = externalUrls;
}

public int getFollowersCount() {
return followersCount;
public Followers getFollowers() {
return followers;
}

public void setFollowersCount(int followersCount) {
this.followersCount = followersCount;
public void setFollowers(Followers followers) {
this.followers = followers;
}

public String getHref() {
Expand Down Expand Up @@ -90,14 +90,6 @@ public void setName(String name) {
this.name = name;
}

public int getTracksCount() {
return tracksCount;
}

public void setTracksCount(int tracksCount) {
this.tracksCount = tracksCount;
}

public SpotifyEntityType getType() {
return type;
}
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/se/michaelthelin/spotify/models/PlaylistTrack.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package se.michaelthelin.spotify.models;

import java.util.Date;

public class PlaylistTrack {

private Date addedAt;
private User addedBy;
private SimpleTrack track;

public Date getAddedAt() {
return addedAt;
}

public void setAddedAt(Date addedAt) {
this.addedAt = addedAt;
}

public User getAddedBy() {
return addedBy;
}

public void setAddedBy(User addedBy) {
this.addedBy = addedBy;
}

public SimpleTrack getTrack() {
return track;
}

public void setTrack(SimpleTrack track) {
this.track = track;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package se.michaelthelin.spotify.models;

public class PlaylistTracksInformation {

private String href;
private int total;

public String getHref() {
return href;
}

public void setHref(String href) {
this.href = href;
}

public int getTotal() {
return total;
}

public void setTotal(int total) {
this.total = total;
}
}
Loading