69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
| 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
 | |
| }
 | 
