Skip to content

Commit a5aadd5

Browse files
committed
Merge pull request #1 from thelinmichael/update-object-models
Update object models, and enable all tests to be run against production
2 parents 2a1d899 + 24b8f5f commit a5aadd5

39 files changed

Lines changed: 3343 additions & 3236 deletions

‎search-album.json‎

Whitespace-only changes.

‎src/main/java/se/michaelthelin/spotify/Api.java‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package se.michaelthelin.spotify;
22

3-
import com.google.protobuf.RepeatedFieldBuilder;
43
import se.michaelthelin.spotify.UtilProtos.Url.Scheme;
54
import se.michaelthelin.spotify.methods.*;
65

‎src/main/java/se/michaelthelin/spotify/JsonUtil.java‎

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private static Album createAlbum(JSONObject albumJson) {
116116
album.setName(albumJson.getString("name"));
117117
album.setPopularity(albumJson.getInt("popularity"));
118118
album.setReleaseDate(createReleaseDate(albumJson.getJSONObject("release_date")));
119-
album.setTracks(createSimpleTracks(albumJson.getJSONArray("tracks")));
119+
album.setTracks(createSimpleTrackPage(albumJson.getJSONObject("tracks")));
120120
album.setType(createSpotifyEntityType(albumJson.getString("type")));
121121
album.setUri(albumJson.getString("uri"));
122122

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

156156
releaseDate.setYear(releaseDateJson.getInt("year"));
157-
if (!releaseDateJson.getJSONObject("month").isNullObject()) {
157+
if (releaseDateJson.has("month") && !releaseDateJson.get("month").equals("null")) {
158158
releaseDate.setMonth(releaseDateJson.getInt("month"));
159+
} else {
160+
releaseDate.setMonth(null);
159161
}
160162

161-
if (!releaseDateJson.getJSONObject("date").isNullObject()) {
162-
releaseDate.setDate(releaseDateJson.getInt("date"));
163+
if (releaseDateJson.has("day") && !releaseDateJson.get("day").equals("null")) {
164+
releaseDate.setDate(releaseDateJson.getInt("day"));
165+
} else {
166+
releaseDate.setDate(null);
163167
}
164168

165169
return releaseDate;
@@ -191,7 +195,7 @@ public static SimpleAlbum createSimpleAlbum(JSONObject simpleAlbumJson) {
191195
simpleAlbum.setImages(createImages(simpleAlbumJson.getJSONArray("images")));
192196
simpleAlbum.setName(simpleAlbumJson.getString("name"));
193197
simpleAlbum.setType(createSpotifyEntityType(simpleAlbumJson.getString("type")));
194-
simpleAlbum.setUri(simpleAlbumJson.getString("type"));
198+
simpleAlbum.setUri(simpleAlbumJson.getString("uri"));
195199

196200
return simpleAlbum;
197201
}
@@ -211,6 +215,14 @@ public static List<Album> createAlbums(JSONArray jsonArray) {
211215
return returnedAlbums;
212216
}
213217

218+
public static List<SimpleAlbum> createSimpleAlbums(JSONArray jsonArray) {
219+
List<SimpleAlbum> returnedAlbums = new ArrayList<SimpleAlbum>();
220+
for (int i = 0; i < jsonArray.size(); i++) {
221+
returnedAlbums.add(createSimpleAlbum(jsonArray.getJSONObject(i)));
222+
}
223+
return returnedAlbums;
224+
}
225+
214226
public static SimpleArtist createSimpleArtist(JSONObject simpleArtistJson) {
215227
if (simpleArtistJson == null || simpleArtistJson.isNullObject()) {
216228
return null;
@@ -303,8 +315,8 @@ public static Page<Album> createAlbumPage(String albumPageJson) {
303315
}
304316

305317
public static Page<Album> createAlbumPage(JSONObject albumPageJson) {
306-
Page page = createItemlessPage(albumPageJson);
307-
page.setItems(createAlbums(albumPageJson.getJSONArray("items")));
318+
Page page = createItemlessPage(albumPageJson.getJSONObject("albums"));
319+
page.setItems(createAlbums(albumPageJson.getJSONObject("albums").getJSONArray("items")));
308320
return page;
309321
}
310322

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

330342
public static Page<Track> createTrackPage(JSONObject trackPageJson) {
331-
Page page = createItemlessPage(trackPageJson);
332-
page.setItems(createTracks(trackPageJson.getJSONArray("items")));
343+
Page page = createItemlessPage(trackPageJson.getJSONObject("tracks"));
344+
page.setItems(createTracks(trackPageJson.getJSONObject("tracks").getJSONArray("items")));
333345
return page;
334346
}
335347

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

358+
private static Page<SimpleTrack> createSimpleTrackPage(JSONObject simpleTrackPageJson) {
359+
Page page = createItemlessPage(simpleTrackPageJson);
360+
page.setItems(createSimpleTracks(simpleTrackPageJson.getJSONArray("items")));
361+
return page;
362+
}
363+
364+
public static Page<SimpleAlbum> createSimpleAlbumPage(String simpleAlbumPageJson) {
365+
return createSimpleAlbumPage(JSONObject.fromObject(simpleAlbumPageJson));
366+
}
367+
368+
public static Page<SimpleAlbum> createSimpleAlbumPage(JSONObject simpleAlbumPageJson) {
369+
Page page = createItemlessPage(simpleAlbumPageJson);
370+
page.setItems(createSimpleAlbums(simpleAlbumPageJson.getJSONArray("items")));
371+
return page;
372+
}
373+
346374
public static User createUser(String userJson) {
347375
return createUser(JSONObject.fromObject(userJson));
348376
}
@@ -376,4 +404,5 @@ public static User createUser(JSONObject userJson) {
376404
private static Product createProduct(String product) {
377405
return Product.valueOf(product.toUpperCase());
378406
}
407+
379408
}

‎src/main/java/se/michaelthelin/spotify/methods/AlbumSearchRequest.java‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import se.michaelthelin.spotify.exceptions.UnexpectedResponseException;
77
import se.michaelthelin.spotify.models.Album;
88
import se.michaelthelin.spotify.models.Page;
9+
import se.michaelthelin.spotify.models.SimpleAlbum;
910

1011
import java.io.IOException;
1112

@@ -15,13 +16,13 @@ protected AlbumSearchRequest(Builder builder) {
1516
super(builder);
1617
}
1718

18-
public SettableFuture<Page<Album>> getAlbumsPageAsync() {
19-
SettableFuture<Page<Album>> searchResultFuture = SettableFuture.create();
19+
public SettableFuture<Page<SimpleAlbum>> getAsync() {
20+
SettableFuture<Page<SimpleAlbum>> searchResultFuture = SettableFuture.create();
2021

2122
try {
2223
String jsonString = getJson();
2324
JSONObject jsonObject = JSONObject.fromObject(jsonString);
24-
searchResultFuture.set(JsonUtil.createAlbumPage(jsonObject));
25+
searchResultFuture.set(JsonUtil.createSimpleAlbumPage(jsonObject.getJSONObject("albums")));
2526
} catch (IOException e) {
2627
searchResultFuture.setException(e);
2728
} catch (UnexpectedResponseException e) {
@@ -31,8 +32,8 @@ public SettableFuture<Page<Album>> getAlbumsPageAsync() {
3132
return searchResultFuture;
3233
}
3334

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

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

4445
public Builder query(String query) {
4546
assert (query != null);
46-
path("/v1/albums/search");
47-
String massagedQuery = query.replace(" ", "+");
48-
return parameter("q", massagedQuery);
47+
path("/v1/search");
48+
parameter("type","album");
49+
return parameter("q", query);
4950
}
5051

5152
public Builder limit(int limit) {

‎src/main/java/se/michaelthelin/spotify/methods/AlbumsForArtistRequest.java‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import se.michaelthelin.spotify.models.Album;
1111
import se.michaelthelin.spotify.models.AlbumType;
1212
import se.michaelthelin.spotify.models.Page;
13+
import se.michaelthelin.spotify.models.SimpleAlbum;
1314

1415
import java.io.IOException;
1516

@@ -19,13 +20,13 @@ public AlbumsForArtistRequest(Builder builder) {
1920
super(builder);
2021
}
2122

22-
public SettableFuture<Page<Album>> getAsync() {
23-
SettableFuture<Page<Album>> searchResultFuture = SettableFuture.create();
23+
public SettableFuture<Page<SimpleAlbum>> getAsync() {
24+
SettableFuture<Page<SimpleAlbum>> searchResultFuture = SettableFuture.create();
2425

2526
try {
2627
String jsonString = getJson();
2728
JSONObject jsonObject = JSONObject.fromObject(jsonString);
28-
searchResultFuture.set(JsonUtil.createAlbumPage(jsonObject));
29+
searchResultFuture.set(JsonUtil.createSimpleAlbumPage(jsonObject));
2930
} catch (IOException e) {
3031
searchResultFuture.setException(e);
3132
} catch (UnexpectedResponseException e) {
@@ -35,8 +36,8 @@ public SettableFuture<Page<Album>> getAsync() {
3536
return searchResultFuture;
3637
}
3738

38-
public Page<Album> get() throws IOException, UnexpectedResponseException, NotFoundException, BadFieldException {
39-
return JsonUtil.createAlbumPage(getJson());
39+
public Page<SimpleAlbum> get() throws IOException, UnexpectedResponseException, NotFoundException, BadFieldException {
40+
return JsonUtil.createSimpleAlbumPage(getJson());
4041
}
4142

4243
public static Builder builder() {

‎src/main/java/se/michaelthelin/spotify/methods/ArtistSearchRequest.java‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public SettableFuture<Page<Artist>> getAsync() {
2222
try {
2323
String jsonString = getJson();
2424
JSONObject jsonObject = JSONObject.fromObject(jsonString);
25-
searchResultFuture.set(JsonUtil.createArtistPage(jsonObject));
25+
searchResultFuture.set(JsonUtil.createArtistPage(jsonObject.getJSONObject("artists")));
2626
} catch (IOException e) {
2727
searchResultFuture.setException(e);
2828
} catch (UnexpectedResponseException e) {
@@ -33,7 +33,7 @@ public SettableFuture<Page<Artist>> getAsync() {
3333
}
3434

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

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

4545
public Builder query(String query) {
4646
assert (query != null);
47-
path("/v1/artists/search");
48-
String massagedQuery = query.replace(" ", "+");
49-
return parameter("q", massagedQuery);
47+
path("/v1/search");
48+
parameter("type","artist");
49+
return parameter("q", query);
5050
}
5151

5252
public Builder limit(int limit) {

‎src/main/java/se/michaelthelin/spotify/methods/TrackSearchRequest.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ public static final class Builder extends AbstractRequest.Builder<Builder> {
4343

4444
public Builder query(String query) {
4545
assert (query != null);
46-
path("/v1/tracks/search");
47-
String massagedQuery = query.replace(" ", "+");
48-
return parameter("q", massagedQuery);
46+
path("/v1/search");
47+
parameter("type","track");
48+
return parameter("q", query);
4949
}
5050

5151
public Builder limit(int limit) {

‎src/main/java/se/michaelthelin/spotify/models/Album.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class Album {
1616
private String name;
1717
private int popularity;
1818
private ReleaseDate releaseDate;
19-
private List<SimpleTrack> tracks;
19+
private Page<SimpleTrack> tracks;
2020
private SpotifyEntityType type = SpotifyEntityType.ALBUM;
2121
private String uri;
2222

@@ -116,11 +116,11 @@ public void setReleaseDate(ReleaseDate releaseDate) {
116116
this.releaseDate = releaseDate;
117117
}
118118

119-
public List<SimpleTrack> getTracks() {
119+
public Page<SimpleTrack> getTracks() {
120120
return tracks;
121121
}
122122

123-
public void setTracks(List<SimpleTrack> tracks) {
123+
public void setTracks(Page<SimpleTrack> tracks) {
124124
this.tracks = tracks;
125125
}
126126

‎src/main/java/se/michaelthelin/spotify/models/ExternalUrls.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@ public Map<String, String> getExternalUrls() {
1111
return externalUrls;
1212
}
1313

14+
public String get(String key) {
15+
return externalUrls.get(key);
16+
}
17+
1418
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package se.michaelthelin.spotify.models;
2+
3+
public class Followers {
4+
5+
private String href;
6+
private int total;
7+
8+
public String getHref() {
9+
return href;
10+
}
11+
12+
public void setHref(String href) {
13+
this.href = href;
14+
}
15+
}

0 commit comments

Comments
 (0)