package eu.kanade.tachiyomi.extension.id.ngomik import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request class Ngomik : MangaThemesia("Ngomik", "https://ngomik.net", "id", "/manga") { private val userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val url = baseUrl.toHttpUrl().newBuilder() .addPathSegment(mangaUrlDirectory.substring(1)) .addQueryParameter("page", page.toString()) if (query.isNullOrBlank().not()) { url.addQueryParameter("title", query) } filters.forEach { filter -> when (filter) { is AuthorFilter -> { url.addQueryParameter("author", filter.state) } is YearFilter -> { url.addQueryParameter("yearx", filter.state) } is StatusFilter -> { url.addQueryParameter("status", filter.selectedValue()) } is TypeFilter -> { url.addQueryParameter("type", filter.selectedValue()) } is OrderByFilter -> { url.addQueryParameter("order", filter.selectedValue()) } is GenreListFilter -> { filter.state .filter { it.state != Filter.TriState.STATE_IGNORE } .forEach { val value = if (it.state == Filter.TriState.STATE_EXCLUDE) "-${it.value}" else it.value url.addQueryParameter("genre[]", value) } } // if site has project page, default value "hasProjectPage" = false is ProjectFilter -> { if (filter.selectedValue() == "project-filter-on") { url.setPathSegment(0, projectPageString.substring(1)) } } else -> { /* Do Nothing */ } } } return GET(url.toString()) } override fun headersBuilder(): Headers.Builder = Headers.Builder() .add("User-Agent", userAgent) .add("Referer", baseUrl) override val projectPageString = "/pj" override val hasProjectPage = true }