From 21c8cdf740b7046e6ddcdfb9d29849fd2b9f81a4 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 29 Dec 2023 16:20:35 +0200 Subject: [PATCH] created Genre --- .../github/yvasyliev/deezer/DeezerClient.java | 11 +++- .../yvasyliev/deezer/objects/Genre.java | 63 +++++++++++++++++++ .../yvasyliev/deezer/objects/ObjectType.java | 3 +- 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 src/main/java/io/github/yvasyliev/deezer/objects/Genre.java diff --git a/src/main/java/io/github/yvasyliev/deezer/DeezerClient.java b/src/main/java/io/github/yvasyliev/deezer/DeezerClient.java index 97f2f1d..17a6bbf 100644 --- a/src/main/java/io/github/yvasyliev/deezer/DeezerClient.java +++ b/src/main/java/io/github/yvasyliev/deezer/DeezerClient.java @@ -4,6 +4,7 @@ import io.github.yvasyliev.deezer.methods.GetMethod; import io.github.yvasyliev.deezer.methods.PagingMethod; import io.github.yvasyliev.deezer.objects.Artist; +import io.github.yvasyliev.deezer.objects.Genre; import io.github.yvasyliev.deezer.objects.Page; import io.github.yvasyliev.deezer.objects.Track; import lombok.AllArgsConstructor; @@ -16,7 +17,8 @@ @Builder public class DeezerClient { private static final String GET_ARTIST_TEMPLATE = "/artist/%d"; - private static final String GET_ARTIST_TOP = GET_ARTIST_TEMPLATE + "/top"; + private static final String GET_ARTIST_TOP_TEMPLATE = GET_ARTIST_TEMPLATE + "/top"; + private static final String GET_GENRE_TEMPLATE = "/genre/%d"; @NonNull private DeezerContext context; @@ -31,7 +33,12 @@ public GetMethod getArtist(int artistId) { } public PagingMethod getArtistTop(int artistId) { - return new PagingMethod<>(context, String.format(GET_ARTIST_TOP, artistId), new TypeReference>() { + return new PagingMethod<>(context, String.format(GET_ARTIST_TOP_TEMPLATE, artistId), new TypeReference>() { + }); + } + + public GetMethod getGenre(long genreId) { + return new GetMethod<>(context, String.format(GET_GENRE_TEMPLATE, genreId), new TypeReference() { }); } } diff --git a/src/main/java/io/github/yvasyliev/deezer/objects/Genre.java b/src/main/java/io/github/yvasyliev/deezer/objects/Genre.java new file mode 100644 index 0000000..b469d62 --- /dev/null +++ b/src/main/java/io/github/yvasyliev/deezer/objects/Genre.java @@ -0,0 +1,63 @@ +package io.github.yvasyliev.deezer.objects; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.net.URL; + +/** + * A genre object. + */ +@Data +@JsonIgnoreProperties(value = "type", allowGetters = true, ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Genre { + /** + * The editorial's Deezer id. + */ + @JsonProperty("id") + private Long id; + + /** + * The editorial's name. + */ + @JsonProperty("name") + private String name; + + /** + * The url of the genre picture. Add 'size' parameter to the url to change size. Can be 'small', 'medium', 'big', 'xl'. + */ + @JsonProperty("picture") + private Picture picture; + + /** + * The url of the genre picture in size small. + */ + @JsonProperty("picture_small") + private URL pictureSmall; + + /** + * The url of the genre picture in size medium. + */ + @JsonProperty("picture_medium") + private URL pictureMedium; + + /** + * The url of the genre picture in size big. + */ + @JsonProperty("picture_big") + private URL pictureBig; + + /** + * The url of the genre picture in size xl. + */ + @JsonProperty("picture_xl") + private URL pictureXl; + + @JsonProperty("type") + public ObjectType getType() { + return ObjectType.GENRE; + } +} diff --git a/src/main/java/io/github/yvasyliev/deezer/objects/ObjectType.java b/src/main/java/io/github/yvasyliev/deezer/objects/ObjectType.java index c700b6c..0b106e1 100644 --- a/src/main/java/io/github/yvasyliev/deezer/objects/ObjectType.java +++ b/src/main/java/io/github/yvasyliev/deezer/objects/ObjectType.java @@ -4,5 +4,6 @@ public enum ObjectType { @JsonProperty("artist") ARTIST, - @JsonProperty("track") TRACK + @JsonProperty("track") TRACK, + @JsonProperty("genre") GENRE }