Skip to content

Commit 4d1f070

Browse files
committed
Add new state parameter to user comments api
1 parent 514e4f7 commit 4d1f070

3 files changed

Lines changed: 25 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
@@ -74,7 +74,8 @@ internal interface InternalApi {
7474
@Query("kat") category: Category?,
7575
@Query("p") page: Int?,
7676
@Query("limit") limit: Int?,
77-
@Query("length") minimumLength: Int?
77+
@Query("length") minimumLength: Int?,
78+
@Query("state") state: String?
7879
): ProxerCall<List<UserComment>>
7980

8081
@GET("user/history")

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ 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.UserMediaProgress
8+
import me.proxer.library.util.ProxerUtils
79

810
/**
911
* Endpoint for requesting various information of an user.
@@ -16,11 +18,16 @@ class UserCommentsEndpoint internal constructor(
1618
private val username: String?
1719
) : PagingLimitEndpoint<List<UserComment>> {
1820

21+
private companion object {
22+
private const val DELIMITER = "+"
23+
}
24+
1925
private var page: Int? = null
2026
private var limit: Int? = null
2127

2228
private var category: Category? = null
2329
private var minimumLength: Int? = null
30+
private var states: Set<UserMediaProgress>? = null
2431

2532
init {
2633
require(userId.isNullOrBlank().not() || username.isNullOrBlank().not()) {
@@ -41,7 +48,16 @@ class UserCommentsEndpoint internal constructor(
4148
*/
4249
fun minimumLength(minimumLength: Int?) = this.apply { this.minimumLength = minimumLength }
4350

51+
/**
52+
* Sets the states to filter by.
53+
*/
54+
fun states(vararg states: UserMediaProgress) = this.apply {
55+
this.states = states.toSet()
56+
}
57+
4458
override fun build(): ProxerCall<List<UserComment>> {
45-
return internalApi.comments(userId, username, category, page, limit, minimumLength)
59+
val joinedStates = states?.joinToString(DELIMITER) { ProxerUtils.getSafeApiEnumName(it) }
60+
61+
return internalApi.comments(userId, username, category, page, limit, minimumLength, joinedStates)
4662
}
4763
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ class UserCommentsEndpointTest : ProxerTest() {
3030
fun testDefault() {
3131
val (result, _) = server.runRequest("user_comment.json") {
3232
api.user
33-
.comments("123", "abc")
34-
.build()
33+
.comments("123", "abc")
34+
.build()
3535
.safeExecute()
3636
}
3737

@@ -46,11 +46,14 @@ class UserCommentsEndpointTest : ProxerTest() {
4646
.limit(12)
4747
.minimumLength(1234)
4848
.category(Category.ANIME)
49+
.states(UserMediaProgress.WATCHED, UserMediaProgress.WATCHING)
4950
.build()
5051
.execute()
5152
}
5253

53-
request.path shouldEqual "/api/v1/user/comments?uid=123&username=abc&kat=anime&p=3&limit=12&length=1234"
54+
request.path shouldEqual """
55+
/api/v1/user/comments?uid=123&username=abc&kat=anime&p=3&limit=12&length=1234&state=0%2B1
56+
""".trimIndent().replace("\n", "")
5457
}
5558

5659
@Test

0 commit comments

Comments
 (0)