Skip to content

Commit 5fdf651

Browse files
committed
Implement new filters for user media list and hentai restriction
1 parent 0980c35 commit 5fdf651

8 files changed

Lines changed: 62 additions & 8 deletions

File tree

library/src/main/java/me/proxer/library/api/info/InternalApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ ProxerCall<List<Comment>> comments(@Query("id") String id, @Query("p") Integer p
3030
@Query("sort") CommentSortCriteria criteria);
3131

3232
@GET("info/relations")
33-
ProxerCall<List<Relation>> relations(@Query("id") String id);
33+
ProxerCall<List<Relation>> relations(@Query("id") String id, @Query("isH") Boolean includeHentai);
3434

3535
@GET("info/translatorgroup")
3636
ProxerCall<TranslatorGroup> translatorGroup(@Query("id") String id);

library/src/main/java/me/proxer/library/api/info/RelationsEndpoint.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package me.proxer.library.api.info;
22

3+
import lombok.Setter;
34
import lombok.experimental.Accessors;
45
import me.proxer.library.api.Endpoint;
56
import me.proxer.library.api.ProxerCall;
67
import me.proxer.library.entitiy.info.Entry;
78
import me.proxer.library.entitiy.info.Relation;
89
import org.jetbrains.annotations.NotNull;
10+
import org.jetbrains.annotations.Nullable;
911

1012
import java.util.List;
1113

@@ -21,6 +23,13 @@ public class RelationsEndpoint implements Endpoint {
2123

2224
private final String id;
2325

26+
/**
27+
* Sets if hentai should be included in the result.
28+
*/
29+
@Nullable
30+
@Setter(onMethod = @__({@NotNull}))
31+
private Boolean includeHentai;
32+
2433
RelationsEndpoint(@NotNull final InternalApi internalApi, @NotNull final String id) {
2534
this.internalApi = internalApi;
2635
this.id = id;
@@ -32,6 +41,6 @@ public class RelationsEndpoint implements Endpoint {
3241
@Override
3342
@NotNull
3443
public ProxerCall<List<Relation>> build() {
35-
return internalApi.relations(id);
44+
return internalApi.relations(id, includeHentai);
3645
}
3746
}

library/src/main/java/me/proxer/library/api/user/InternalApi.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import me.proxer.library.entitiy.user.UserInfo;
77
import me.proxer.library.entitiy.user.UserMediaListEntry;
88
import me.proxer.library.enums.Category;
9+
import me.proxer.library.enums.UserMediaListFilterType;
910
import me.proxer.library.enums.UserMediaListSortCriteria;
1011
import retrofit2.http.*;
1112

@@ -26,7 +27,7 @@ ProxerCall<User> login(@Field("username") String username, @Field("password") St
2627

2728
@GET("user/topten")
2829
ProxerCall<List<TopTenEntry>> topTen(@Query("uid") String userId, @Query("username") String username,
29-
@Query("kat") Category category);
30+
@Query("kat") Category category, @Query("isH") Boolean includeHentai);
3031

3132
@GET("user/userinfo")
3233
ProxerCall<UserInfo> userInfo(@Query("uid") String userId, @Query("username") String username);
@@ -36,5 +37,7 @@ ProxerCall<List<UserMediaListEntry>> userMediaList(@Query("uid") String userId,
3637
@Query("kat") Category category, @Query("p") Integer page,
3738
@Query("limit") Integer limit, @Query("search") String query,
3839
@Query("search_start") String startQuery,
39-
@Query("sort") UserMediaListSortCriteria sortCriteria);
40+
@Query("filter") UserMediaListFilterType filter,
41+
@Query("sort") UserMediaListSortCriteria sortCriteria,
42+
@Query("isH") Boolean includeHentai);
4043
}

library/src/main/java/me/proxer/library/api/user/UserMediaListEndpoint.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import me.proxer.library.api.ProxerCall;
88
import me.proxer.library.entitiy.user.UserMediaListEntry;
99
import me.proxer.library.enums.Category;
10+
import me.proxer.library.enums.UserMediaListFilterType;
1011
import me.proxer.library.enums.UserMediaListSortCriteria;
1112
import org.jetbrains.annotations.NotNull;
1213
import org.jetbrains.annotations.Nullable;
@@ -61,6 +62,20 @@ public final class UserMediaListEndpoint implements PagingEndpoint, LimitEndpoin
6162
@Setter(onMethod = @__({@NotNull}))
6263
private String searchStart;
6364

65+
/**
66+
* Sets the filter.
67+
*/
68+
@Nullable
69+
@Setter(onMethod = @__({@NotNull}))
70+
private UserMediaListFilterType filter;
71+
72+
/**
73+
* Sets if hentai should be included in the result.
74+
*/
75+
@Nullable
76+
@Setter(onMethod = @__({@NotNull}))
77+
private Boolean includeHentai;
78+
6479
/**
6580
* Set the criteria for sorting.
6681
*/
@@ -85,6 +100,7 @@ public final class UserMediaListEndpoint implements PagingEndpoint, LimitEndpoin
85100
@Override
86101
@NotNull
87102
public ProxerCall<List<UserMediaListEntry>> build() {
88-
return internalApi.userMediaList(userId, username, category, page, limit, search, searchStart, sort);
103+
return internalApi.userMediaList(userId, username, category, page, limit, search, searchStart, filter, sort,
104+
includeHentai);
89105
}
90106
}

library/src/main/java/me/proxer/library/api/user/UserTopTenEndpoint.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ public final class UserTopTenEndpoint implements Endpoint {
3131
@Setter(onMethod = @__({@NotNull}))
3232
private Category category;
3333

34+
/**
35+
* Sets if hentai should be included in the result.
36+
*/
37+
@Nullable
38+
@Setter(onMethod = @__({@NotNull}))
39+
private Boolean includeHentai;
40+
3441
UserTopTenEndpoint(@NotNull final InternalApi internalApi, @Nullable final String userId,
3542
@Nullable final String username) {
3643
if (userId == null && username == null) {
@@ -48,6 +55,6 @@ public final class UserTopTenEndpoint implements Endpoint {
4855
@Override
4956
@NotNull
5057
public ProxerCall<List<TopTenEntry>> build() {
51-
return internalApi.topTen(userId, username, category);
58+
return internalApi.topTen(userId, username, category, includeHentai);
5259
}
5360
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package me.proxer.library.enums;
2+
3+
import com.squareup.moshi.Json;
4+
5+
/**
6+
* Enum holding the possible filter options for the user media list.
7+
*
8+
* @author Ruben Gees
9+
*/
10+
public enum UserMediaListFilterType {
11+
@Json(name = "stateFilter0")WATCHED,
12+
@Json(name = "stateFilter1")WATCHING,
13+
@Json(name = "stateFilter2")WILL_WATCH,
14+
@Json(name = "stateFilter3")CANCELLED
15+
}

library/src/test/java/me/proxer/library/api/user/UserMediaListEndpointTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,15 @@ public void testPath() throws ProxerException, IOException, InterruptedException
4040
.limit(5)
4141
.search("test")
4242
.searchStart("startTest")
43+
.filter(UserMediaListFilterType.WATCHING)
4344
.sort(UserMediaListSortCriteria.STATE_CHANGE_DATE_ASCENDING)
45+
.includeHentai(true)
4446
.build()
4547
.execute();
4648

4749
assertThat(server.takeRequest().getPath()).isEqualTo("/api/v1/user/list?uid=1&username=rubygee" +
48-
"&kat=anime&p=0&limit=5&search=test&search_start=startTest&sort=stateChangeDateASC");
50+
"&kat=anime&p=0&limit=5&search=test&search_start=startTest" +
51+
"&filter=stateFilter1&sort=stateChangeDateASC&isH=true");
4952
}
5053

5154
@Test

library/src/test/java/me/proxer/library/api/user/UserTopTenEndpointTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,12 @@ public void testPath() throws ProxerException, IOException, InterruptedException
5252

5353
api.user().topTen("123", "rubygee")
5454
.category(Category.ANIME)
55+
.includeHentai(true)
5556
.build()
5657
.execute();
5758

5859
Assertions.assertThat(server.takeRequest().getPath())
59-
.isEqualTo("/api/v1/user/topten?uid=123&username=rubygee&kat=anime");
60+
.isEqualTo("/api/v1/user/topten?uid=123&username=rubygee&kat=anime&isH=true");
6061
}
6162

6263
@Test

0 commit comments

Comments
 (0)