mirror of
https://github.com/rebelonion/Dantotsu.git
synced 2026-01-29 15:41:02 +00:00
feat: reviews
This commit is contained in:
@@ -2,6 +2,7 @@ package ani.dantotsu.connections.anilist
|
||||
|
||||
import ani.dantotsu.connections.anilist.Anilist.executeQuery
|
||||
import ani.dantotsu.connections.anilist.api.FuzzyDate
|
||||
import ani.dantotsu.connections.anilist.api.Query
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
|
||||
class AnilistMutations {
|
||||
@@ -69,4 +70,10 @@ class AnilistMutations {
|
||||
val variables = """{"id":"$listId"}"""
|
||||
executeQuery<JsonObject>(query, variables)
|
||||
}
|
||||
|
||||
|
||||
suspend fun rateReview(reviewId: Int, rating: String): Query.RateReviewResponse? {
|
||||
val query = "mutation{RateReview(reviewId:$reviewId,rating:$rating){id mediaId mediaType summary body(asHtml:true)rating ratingAmount userRating score private siteUrl createdAt updatedAt user{id name bannerImage avatar{medium large}}}}"
|
||||
return executeQuery<Query.RateReviewResponse>(query)
|
||||
}
|
||||
}
|
||||
@@ -1504,6 +1504,13 @@ Page(page:$page,perPage:50) {
|
||||
return author
|
||||
}
|
||||
|
||||
suspend fun getReviews(mediaId: Int, page: Int = 1, sort: String = "UPDATED_AT_DESC"): Query.ReviewsResponse? {
|
||||
return executeQuery<Query.ReviewsResponse>(
|
||||
"""{Page(page:$page,perPage:10){pageInfo{currentPage,hasNextPage,total}reviews(mediaId:$mediaId,sort:$sort){id,mediaId,mediaType,summary,body(asHtml:true)rating,ratingAmount,userRating,score,private,siteUrl,createdAt,updatedAt,user{id,name,bannerImage avatar{medium,large}}}}}""",
|
||||
force = true
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun toggleFollow(id: Int): Query.ToggleFollow? {
|
||||
return executeQuery<Query.ToggleFollow>(
|
||||
"""mutation{ToggleFollow(userId:$id){id, isFollowing, isFollower}}"""
|
||||
|
||||
@@ -299,6 +299,70 @@ class Query {
|
||||
val following: List<ani.dantotsu.connections.anilist.api.User>?
|
||||
) : java.io.Serializable
|
||||
|
||||
@Serializable
|
||||
data class ReviewsResponse(
|
||||
@SerialName("data")
|
||||
val data: Data
|
||||
) : java.io.Serializable {
|
||||
@Serializable
|
||||
data class Data(
|
||||
@SerialName("Page")
|
||||
val page: ReviewPage?
|
||||
) : java.io.Serializable
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class ReviewPage(
|
||||
@SerialName("pageInfo")
|
||||
val pageInfo: PageInfo,
|
||||
@SerialName("reviews")
|
||||
val reviews: List<Review>?
|
||||
) : java.io.Serializable
|
||||
|
||||
@Serializable
|
||||
data class RateReviewResponse(
|
||||
@SerialName("data")
|
||||
val data: Data
|
||||
) : java.io.Serializable {
|
||||
@Serializable
|
||||
data class Data(
|
||||
@SerialName("RateReview")
|
||||
val rateReview: Review
|
||||
) : java.io.Serializable
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class Review(
|
||||
@SerialName("id")
|
||||
val id: Int,
|
||||
@SerialName("mediaId")
|
||||
val mediaId: Int,
|
||||
@SerialName("mediaType")
|
||||
val mediaType: String,
|
||||
@SerialName("summary")
|
||||
val summary: String,
|
||||
@SerialName("body")
|
||||
val body: String,
|
||||
@SerialName("rating")
|
||||
var rating: Int,
|
||||
@SerialName("ratingAmount")
|
||||
var ratingAmount: Int,
|
||||
@SerialName("userRating")
|
||||
var userRating: String,
|
||||
@SerialName("score")
|
||||
val score: Int,
|
||||
@SerialName("private")
|
||||
val private: Boolean,
|
||||
@SerialName("siteUrl")
|
||||
val siteUrl: String,
|
||||
@SerialName("createdAt")
|
||||
val createdAt: Int,
|
||||
@SerialName("updatedAt")
|
||||
val updatedAt: Int?,
|
||||
@SerialName("user")
|
||||
val user: ani.dantotsu.connections.anilist.api.User?,
|
||||
) : java.io.Serializable
|
||||
|
||||
@Serializable
|
||||
data class UserProfile(
|
||||
@SerialName("id")
|
||||
|
||||
Reference in New Issue
Block a user