MAL update №1

pull/302/head
Zakhar Timoshenko 3 years ago
parent 8514cc3da7
commit 56ed8a787a

@ -25,8 +25,6 @@ private const val BASE_API_URL = "https://api.myanimelist.net/v2"
private const val MANGA_PAGE_SIZE = 10 private const val MANGA_PAGE_SIZE = 10
private const val AVATAR_STUB = "https://cdn.myanimelist.net/images/questionmark_50.gif" private const val AVATAR_STUB = "https://cdn.myanimelist.net/images/questionmark_50.gif"
// af16954886b040673378423f5d62cccd
class MALRepository( class MALRepository(
private val okHttp: OkHttpClient, private val okHttp: OkHttpClient,
private val storage: ScrobblerStorage, private val storage: ScrobblerStorage,
@ -93,13 +91,16 @@ class MALRepository(
val response = okHttp.newCall(request).await().parseJson() val response = okHttp.newCall(request).await().parseJson()
val data = response.getJSONArray("data") val data = response.getJSONArray("data")
val mangas = data.mapJSON { jsonToManga(it) } val mangas = data.mapJSON { jsonToManga(it) }
return if (pageOffset != 0) mangas.drop(pageOffset) else mangas return if (pageOffset != 0) mangas.drop(pageOffset) else mangas // TODO
} }
override suspend fun getMangaInfo(id: Long): ScrobblerMangaInfo { override suspend fun getMangaInfo(id: Long): ScrobblerMangaInfo {
val request = Request.Builder() val url = BASE_API_URL.toHttpUrl().newBuilder()
.get() .addPathSegment("manga")
.url("${BASE_API_URL}/manga/$id") .addPathSegment(id.toString())
.addQueryParameter("fields", "synopsis")
.build()
val request = Request.Builder().url(url)
val response = okHttp.newCall(request.build()).await().parseJson() val response = okHttp.newCall(request.build()).await().parseJson()
return ScrobblerMangaInfo(response) return ScrobblerMangaInfo(response)
} }
@ -112,12 +113,14 @@ class MALRepository(
.addPathSegment("manga") .addPathSegment("manga")
.addPathSegment(scrobblerMangaId.toString()) .addPathSegment(scrobblerMangaId.toString())
.addPathSegment("my_list_status") .addPathSegment("my_list_status")
.addQueryParameter("fields", "synopsis")
.build() .build()
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
.put(body.build()) .put(body.build())
.build() .build()
val response = okHttp.newCall(request).await().parseJson() val response = okHttp.newCall(request).await().parseJson()
saveRate(response, mangaId)
} }
override suspend fun updateRate(rateId: Int, mangaId: Long, chapter: MangaChapter) { override suspend fun updateRate(rateId: Int, mangaId: Long, chapter: MangaChapter) {
@ -134,6 +137,7 @@ class MALRepository(
.put(body.build()) .put(body.build())
.build() .build()
val response = okHttp.newCall(request).await().parseJson() val response = okHttp.newCall(request).await().parseJson()
saveRate(response, mangaId)
} }
override suspend fun updateRate(rateId: Int, mangaId: Long, rating: Float, status: String?, comment: String?) { override suspend fun updateRate(rateId: Int, mangaId: Long, rating: Float, status: String?, comment: String?) {
@ -150,6 +154,21 @@ class MALRepository(
.put(body.build()) .put(body.build())
.build() .build()
val response = okHttp.newCall(request).await().parseJson() val response = okHttp.newCall(request).await().parseJson()
saveRate(response, mangaId)
}
private suspend fun saveRate(json: JSONObject, mangaId: Long) {
val entity = ScrobblingEntity(
scrobbler = ScrobblerService.MAL.id,
id = mangaId.toInt(),
mangaId = mangaId,
targetId = 2, // TODO
status = json.getString("status"),
chapter = json.getInt("num_chapters_read"),
comment = json.getString("comments"),
rating = json.getDouble("score").toFloat() / 10f,
)
db.scrobblingDao.upsert(entity)
} }
override fun logout() { override fun logout() {
@ -169,10 +188,10 @@ class MALRepository(
name = node.getString("title"), name = node.getString("title"),
altName = null, altName = null,
cover = node.getJSONObject("main_picture").getString("large"), cover = node.getJSONObject("main_picture").getString("large"),
url = "" url = "" // TODO
) )
} }
return ScrobblerManga( return ScrobblerManga( // TODO
id = 1, id = 1,
name = "", name = "",
altName = null, altName = null,
@ -185,7 +204,7 @@ class MALRepository(
id = json.getLong("id"), id = json.getLong("id"),
name = json.getString("title"), name = json.getString("title"),
cover = json.getJSONObject("main_picture").getString("large"), cover = json.getJSONObject("main_picture").getString("large"),
url = "", url = "", // TODO
descriptionHtml = json.getString("synopsis"), descriptionHtml = json.getString("synopsis"),
) )

@ -33,7 +33,15 @@ class MALScrobbler @Inject constructor(
status: ScrobblingStatus?, status: ScrobblingStatus?,
comment: String?, comment: String?,
) { ) {
TODO() val entity = db.scrobblingDao.find(scrobblerService.id, mangaId)
requireNotNull(entity) { "Scrobbling info for manga $mangaId not found" }
repository.updateRate(
rateId = entity.id,
mangaId = 2, // TODO
rating = rating * RATING_MAX,
status = statuses[status],
comment = comment,
)
} }
} }

Loading…
Cancel
Save