From d2eb84321582bcad0e4953c146e4d1b77c11a23a Mon Sep 17 00:00:00 2001
From: haruki-takeshi <nguyenson.bkacad@gmail.com>
Date: Mon, 6 Jul 2020 21:24:29 +0700
Subject: [PATCH] Update WPComicsFactory.kt

Add new source: TruyenChon
---
 .../extension/all/wpcomics/WPComicsFactory.kt | 91 +++++++++++++++++++
 1 file changed, 91 insertions(+)

diff --git a/src/all/wpcomics/src/eu/kanade/tachiyomi/extension/all/wpcomics/WPComicsFactory.kt b/src/all/wpcomics/src/eu/kanade/tachiyomi/extension/all/wpcomics/WPComicsFactory.kt
index 2f9cb9ee0..8c8d5d2d8 100644
--- a/src/all/wpcomics/src/eu/kanade/tachiyomi/extension/all/wpcomics/WPComicsFactory.kt
+++ b/src/all/wpcomics/src/eu/kanade/tachiyomi/extension/all/wpcomics/WPComicsFactory.kt
@@ -182,3 +182,94 @@ private class NetTruyen : WPComics("NetTruyen", "http://www.nettruyen.com", "vi"
         "xuyen-khong" to "Xuyên Không"
     )
 }
+
+private class TruyenChon : WPComics("TruyenChon", "http://truyenchon.com", "vi", SimpleDateFormat("dd/MM/yy", Locale.getDefault()), null) {
+    override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().add("Referer", baseUrl).build())
+
+    // search and filters taken from old extension (1.2.5)
+    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
+        var url = HttpUrl.parse("$baseUrl/tim-truyen?")!!.newBuilder()
+        (if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
+            when (filter) {
+                is Genre -> {
+                    url = if (filter.state == 0) url else
+                        HttpUrl.parse(url.toString()
+                            .replace("tim-truyen?",
+                                "tim-truyen/${getGenreList().map { it.first }[filter.state]}?"))!!
+                            .newBuilder()
+                }
+                is Status -> {
+                    url.addQueryParameter("status", if (filter.state == 0) "hajau" else filter.state.toString())
+                    url.addQueryParameter("sort", "0")
+                }
+            }
+        }
+        url.addQueryParameter("keyword", query)
+        return GET(url.toString(), headers)
+    }
+
+    private fun getStatusList() = arrayOf("Tất cả", "Đang tiến hành", "Đã hoàn thành", "Tạm ngừng")
+
+    private class Status(status: Array<String>) : Filter.Select<String>("Status", status)
+    private class Genre(genreList: Array<String>) : Filter.Select<String>("Thể loại", genreList)
+
+    override fun getFilterList() = FilterList(
+        Status(getStatusList()),
+        Genre(getGenreList().map { it.second }.toTypedArray())
+    )
+
+    private fun getGenreList() = arrayOf(
+        "tim-truyen" to "Tất cả",
+        "action" to "Action",
+        "adult" to "Adult",
+        "adventure" to "Adventure",
+        "anime" to "Anime",
+        "chuyen-sinh" to "Chuyển Sinh",
+        "comedy" to "Comedy",
+        "comic" to "Comic",
+        "cooking" to "Cooking",
+        "co-dai" to "Cổ Đại",
+        "doujinshi" to "Doujinshi",
+        "drama" to "Drama",
+        "dam-my" to "Đam Mỹ",
+        "ecchi" to "Ecchi",
+        "fantasy" to "Fantasy",
+        "gender-bender" to "Gender Bender",
+        "harem" to "Harem",
+        "historical" to "Historical",
+        "horror" to "Horror",
+        "josei" to "Josei",
+        "live-action" to "Live action",
+        "manga" to "Manga",
+        "manhua" to "Manhua",
+        "manhwa" to "Manhwa",
+        "martial-arts" to "Martial Arts",
+        "mature" to "Mature",
+        "mecha" to "Mecha",
+        "mystery" to "Mystery",
+        "ngon-tinh" to "Ngôn Tình",
+        "one-shot" to "One shot",
+        "psychological" to "Psychological",
+        "romance" to "Romance",
+        "school-life" to "School Life",
+        "sci-fi" to "Sci-fi",
+        "seinen" to "Seinen",
+        "shoujo" to "Shoujo",
+        "shoujo-ai" to "Shoujo Ai",
+        "shounen" to "Shounen",
+        "shounen-ai" to "Shounen Ai",
+        "slice-of-life" to "Slice of Life",
+        "smut" to "Smut",
+        "soft-yaoi" to "Soft Yaoi",
+        "soft-yuri" to "Soft Yuri",
+        "sports" to "Sports",
+        "supernatural" to "Supernatural",
+        "thieu-nhi" to "Thiếu Nhi",
+        "tragedy" to "Tragedy",
+        "trinh-tham" to "Trinh Thám",
+        "truyen-scan" to "Truyện scan",
+        "truyen-mau" to "Truyện Màu",
+        "webtoon" to "Webtoon",
+        "xuyen-khong" to "Xuyên Không"
+    )
+}