Skip to content

Commit 7ae84ce

Browse files
committed
Implement new "has" filter for the user comments endpoint
1 parent 15cdc5b commit 7ae84ce

4 files changed

Lines changed: 34 additions & 5 deletions

File tree

library/src/main/kotlin/me/proxer/library/api/user/InternalApi.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ internal interface InternalApi {
7575
@Query("p") page: Int?,
7676
@Query("limit") limit: Int?,
7777
@Query("length") minimumLength: Int?,
78-
@Query("state") state: String?
78+
@Query("state") state: String?,
79+
@Query("has") has: String?
7980
): ProxerCall<List<UserComment>>
8081

8182
@GET("user/history")

library/src/main/kotlin/me/proxer/library/api/user/UserCommentsEndpoint.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import me.proxer.library.ProxerCall
44
import me.proxer.library.api.PagingLimitEndpoint
55
import me.proxer.library.entity.user.UserComment
66
import me.proxer.library.enums.Category
7+
import me.proxer.library.enums.CommentContentType
78
import me.proxer.library.enums.UserMediaProgress
89
import me.proxer.library.util.ProxerUtils
910

@@ -28,6 +29,7 @@ class UserCommentsEndpoint internal constructor(
2829
private var category: Category? = null
2930
private var minimumLength: Int? = null
3031
private var states: Set<UserMediaProgress>? = null
32+
private var hasContent: Set<CommentContentType>? = null
3133

3234
init {
3335
require(userId.isNullOrBlank().not() || username.isNullOrBlank().not()) {
@@ -51,13 +53,19 @@ class UserCommentsEndpoint internal constructor(
5153
/**
5254
* Sets the states to filter by.
5355
*/
54-
fun states(vararg states: UserMediaProgress) = this.apply {
55-
this.states = states.toSet()
56-
}
56+
fun states(vararg states: UserMediaProgress) = this.apply { this.states = states.toSet() }
57+
58+
/**
59+
* Content types to filter by.
60+
*/
61+
fun hasContent(vararg contentTypes: CommentContentType) = this.apply { this.hasContent = contentTypes.toSet() }
5762

5863
override fun build(): ProxerCall<List<UserComment>> {
5964
val joinedStates = states?.joinToString(DELIMITER) { ProxerUtils.getSafeApiEnumName(it) }
65+
val joinedHasContent = hasContent?.joinToString(DELIMITER) { ProxerUtils.getSafeApiEnumName(it) }
6066

61-
return internalApi.comments(userId, username, category, page, limit, minimumLength, joinedStates)
67+
return internalApi.comments(
68+
userId, username, category, page, limit, minimumLength, joinedStates, joinedHasContent
69+
)
6270
}
6371
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package me.proxer.library.enums
2+
3+
import com.squareup.moshi.Json
4+
5+
/**
6+
* Enum holding possiblke values for the "has"-filter of the [me.proxer.library.api.user.UserCommentsEndpoint].
7+
*
8+
* @author Ruben Gees
9+
*/
10+
enum class CommentContentType {
11+
12+
@Json(name = "rating")
13+
RATING,
14+
15+
@Json(name = "comment")
16+
COMMENT
17+
}

library/src/test/kotlin/me/proxer/library/api/user/UserCommentsEndpointTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import me.proxer.library.ProxerTest
44
import me.proxer.library.entity.info.RatingDetails
55
import me.proxer.library.entity.user.UserComment
66
import me.proxer.library.enums.Category
7+
import me.proxer.library.enums.CommentContentType
78
import me.proxer.library.enums.Medium
89
import me.proxer.library.enums.UserMediaProgress
910
import me.proxer.library.runRequest
@@ -47,12 +48,14 @@ class UserCommentsEndpointTest : ProxerTest() {
4748
.minimumLength(1234)
4849
.category(Category.ANIME)
4950
.states(UserMediaProgress.WATCHED, UserMediaProgress.WATCHING)
51+
.hasContent(CommentContentType.COMMENT, CommentContentType.RATING)
5052
.build()
5153
.execute()
5254
}
5355

5456
request.path shouldEqual """
5557
/api/v1/user/comments?uid=123&username=abc&kat=anime&p=3&limit=12&length=1234&state=0%2B1
58+
&has=comment%2Brating
5659
""".trimIndent().replace("\n", "")
5760
}
5861

0 commit comments

Comments
 (0)