From e3cdc833b72250bcbc1e6a5bfb9ecc0e07ce842a Mon Sep 17 00:00:00 2001 From: Eugene Date: Sat, 30 Mar 2019 06:38:35 -0400 Subject: [PATCH] Fix MangaRock filters (closes #984) (#985) Fix MangaRock filters (closes #984) --- src/en/mangarock/build.gradle | 5 ++- .../extension/en/mangarock/MangaRock.kt | 43 +++++++++++++------ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/en/mangarock/build.gradle b/src/en/mangarock/build.gradle index be5735081..06c49cbed 100644 --- a/src/en/mangarock/build.gradle +++ b/src/en/mangarock/build.gradle @@ -5,12 +5,13 @@ ext { appName = 'Tachiyomi: Manga Rock' pkgNameSuffix = 'en.mangarock' extClass = '.MangaRock' - extVersionCode = 6 + extVersionCode = 7 libVersion = '1.0' } dependencies { - compileOnly 'com.google.code.gson:gson:2.8.2' + compileOnly 'com.google.code.gson:gson:2.8.5' + compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0' } apply from: "$rootDir/common.gradle" diff --git a/src/en/mangarock/src/eu/kanade/tachiyomi/extension/en/mangarock/MangaRock.kt b/src/en/mangarock/src/eu/kanade/tachiyomi/extension/en/mangarock/MangaRock.kt index 8b4a59b50..90549f2fb 100644 --- a/src/en/mangarock/src/eu/kanade/tachiyomi/extension/en/mangarock/MangaRock.kt +++ b/src/en/mangarock/src/eu/kanade/tachiyomi/extension/en/mangarock/MangaRock.kt @@ -1,13 +1,24 @@ package eu.kanade.tachiyomi.extension.en.mangarock -import com.google.gson.GsonBuilder +import com.github.salomonbrys.kotson.jsonObject +import com.github.salomonbrys.kotson.set import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.source.model.* +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.MangasPage +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.HttpSource -import okhttp3.* +import okhttp3.MediaType +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.RequestBody +import okhttp3.Response +import okhttp3.ResponseBody import org.json.JSONObject -import java.util.* +import java.util.ArrayList import kotlin.experimental.and import kotlin.experimental.xor @@ -59,14 +70,13 @@ class MangaRock : HttpSource() { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val jsonType = MediaType.parse("application/jsonType; charset=utf-8") - val gson = GsonBuilder().create() // Filter if (query.isBlank()) { var status = "" var rank = "" var orderBy = "" - var genres = "" + val genres = jsonObject() filters.forEach { filter -> when (filter) { is StatusFilter -> { @@ -83,22 +93,27 @@ class MangaRock : HttpSource() { orderBy = filter.toUriPart() } is GenreList -> { - genres = filter.state - .filter { genre -> genre.state != Filter.TriState.STATE_IGNORE } - .map { genre -> - "\"${genre.id}\": ${if (genre.state == Filter.TriState.STATE_INCLUDE) "true" else "false"}" - } - .joinToString(",") + filter.state + .filter { it.state != Filter.TriState.STATE_IGNORE } + .forEach { genres[it.id] = it.state == Filter.TriState.STATE_INCLUDE } } } } - val body = RequestBody.create(jsonType, gson.toJson(mapOf("status" to status, "genres" to genres, "rank" to rank, "order" to orderBy))) + val body = RequestBody.create(jsonType, jsonObject( + "status" to status, + "genres" to genres, + "rank" to rank, + "order" to orderBy + ).toString()) return POST("$baseUrl/mrs_filter", headers, body) } // Regular search - val body = RequestBody.create(jsonType, gson.toJson(mapOf("type" to "series", "keywords" to query))) + val body = RequestBody.create(jsonType, jsonObject( + "type" to "series", + "keywords" to query + ).toString()) return POST("$baseUrl/mrs_search", headers, body) }