Fix MangaRock filters (closes #984) (#985)

Fix MangaRock filters (closes #984)
This commit is contained in:
Eugene 2019-03-30 06:38:35 -04:00 committed by Carlos
parent fc3a2bf425
commit e3cdc833b7
2 changed files with 32 additions and 16 deletions

View File

@ -5,12 +5,13 @@ ext {
appName = 'Tachiyomi: Manga Rock' appName = 'Tachiyomi: Manga Rock'
pkgNameSuffix = 'en.mangarock' pkgNameSuffix = 'en.mangarock'
extClass = '.MangaRock' extClass = '.MangaRock'
extVersionCode = 6 extVersionCode = 7
libVersion = '1.0' libVersion = '1.0'
} }
dependencies { 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" apply from: "$rootDir/common.gradle"

View File

@ -1,13 +1,24 @@
package eu.kanade.tachiyomi.extension.en.mangarock 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.GET
import eu.kanade.tachiyomi.network.POST 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 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 org.json.JSONObject
import java.util.* import java.util.ArrayList
import kotlin.experimental.and import kotlin.experimental.and
import kotlin.experimental.xor import kotlin.experimental.xor
@ -59,14 +70,13 @@ class MangaRock : HttpSource() {
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val jsonType = MediaType.parse("application/jsonType; charset=utf-8") val jsonType = MediaType.parse("application/jsonType; charset=utf-8")
val gson = GsonBuilder().create()
// Filter // Filter
if (query.isBlank()) { if (query.isBlank()) {
var status = "" var status = ""
var rank = "" var rank = ""
var orderBy = "" var orderBy = ""
var genres = "" val genres = jsonObject()
filters.forEach { filter -> filters.forEach { filter ->
when (filter) { when (filter) {
is StatusFilter -> { is StatusFilter -> {
@ -83,22 +93,27 @@ class MangaRock : HttpSource() {
orderBy = filter.toUriPart() orderBy = filter.toUriPart()
} }
is GenreList -> { is GenreList -> {
genres = filter.state filter.state
.filter { genre -> genre.state != Filter.TriState.STATE_IGNORE } .filter { it.state != Filter.TriState.STATE_IGNORE }
.map { genre -> .forEach { genres[it.id] = it.state == Filter.TriState.STATE_INCLUDE }
"\"${genre.id}\": ${if (genre.state == Filter.TriState.STATE_INCLUDE) "true" else "false"}"
}
.joinToString(",")
} }
} }
} }
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) return POST("$baseUrl/mrs_filter", headers, body)
} }
// Regular search // 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) return POST("$baseUrl/mrs_search", headers, body)
} }