From f612bc1c3f0527974017b78793ef966a7cb88f99 Mon Sep 17 00:00:00 2001 From: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:56:53 +0800 Subject: [PATCH] Clean up some code to follow best practices (#178) * toHttpUrlOrNull()!! -> toHttpUrl() * Jsoup.parse(response.body.string()) -> response.asJsoup() * Some useless HttpUrl.newBuilder() calls * extlib v1.4 GET(HttpUrl) --- .../overrides/grouple/allhentai/src/AllHentai.kt | 7 ++----- .../overrides/grouple/mintmanga/src/MintManga.kt | 4 +--- .../overrides/grouple/readmanga/src/ReadManga.kt | 4 +--- multisrc/overrides/grouple/rumix/src/RuMIX.kt | 4 +--- .../overrides/grouple/selfmanga/src/SelfManga.kt | 4 +--- .../madara/doujinhentai/src/DoujinHentai.kt | 2 +- .../overrides/madara/pojokmanga/src/PojokManga.kt | 8 ++++---- multisrc/overrides/madara/toonily/src/Toonily.kt | 4 ++-- .../cosmicscansid/src/CosmicScansID.kt | 2 +- .../mangathemesia/komikcast/src/KomikCast.kt | 2 +- .../overrides/mangathemesia/ngomik/src/Ngomik.kt | 2 +- multisrc/overrides/zmanga/komikita/src/Komikita.kt | 8 ++++---- .../overrides/zmanga/komikplay/src/KomikPlay.kt | 8 ++++---- .../overrides/zmanga/sektekomik/src/SekteKomik.kt | 8 ++++---- .../tachiyomi/multisrc/bakamanga/BakaManga.kt | 2 +- .../kanade/tachiyomi/multisrc/eromuse/EroMuse.kt | 10 +++++----- .../tachiyomi/multisrc/fansubscat/FansubsCat.kt | 2 +- .../kanade/tachiyomi/multisrc/fmreader/FMReader.kt | 6 +++--- .../eu/kanade/tachiyomi/multisrc/gattsu/Gattsu.kt | 4 ++-- .../tachiyomi/multisrc/gigaviewer/GigaViewer.kt | 9 +++++---- .../kanade/tachiyomi/multisrc/grouple/GroupLe.kt | 4 ++-- .../tachiyomi/multisrc/hentaihand/HentaiHand.kt | 14 +++++++------- .../kanade/tachiyomi/multisrc/libgroup/LibGroup.kt | 4 ++-- .../eu/kanade/tachiyomi/multisrc/madara/Madara.kt | 6 +++--- .../kanade/tachiyomi/multisrc/madtheme/MadTheme.kt | 2 +- .../kanade/tachiyomi/multisrc/mangabox/MangaBox.kt | 8 ++++---- .../kanade/tachiyomi/multisrc/mangahub/MangaHub.kt | 4 ++-- .../tachiyomi/multisrc/mangaworld/MangaWorld.kt | 6 +++--- .../kanade/tachiyomi/multisrc/paprika/Paprika.kt | 6 +++--- .../tachiyomi/multisrc/paprika/PaprikaAlt.kt | 6 +++--- .../kanade/tachiyomi/multisrc/webtoons/Webtoons.kt | 5 +++-- .../multisrc/webtoons/WebtoonsTranslate.kt | 12 ++++++------ .../kanade/tachiyomi/multisrc/wpcomics/WPComics.kt | 4 ++-- .../eu/kanade/tachiyomi/multisrc/zmanga/ZManga.kt | 8 ++++---- .../tachiyomi/extension/all/batoto/BatoTo.kt | 7 +++---- .../tachiyomi/extension/all/hennojin/Hennojin.kt | 2 +- .../tachiyomi/extension/all/imhentai/IMHentai.kt | 10 +++++----- .../tachiyomi/extension/all/luscious/Luscious.kt | 8 ++++---- .../tachiyomi/extension/all/nhentai/NHentai.kt | 10 +++++----- .../tachiyomi/extension/all/ninemanga/NineManga.kt | 6 +++--- .../tachiyomi/extension/all/photos18/Photos18.kt | 2 +- .../kanade/tachiyomi/extension/all/pixiv/Pixiv.kt | 4 ++-- .../tachiyomi/extension/ar/remanga/REManga.kt | 2 +- .../tachiyomi/extension/en/mangarok/MangaRok.kt | 2 +- .../extension/en/comicastle/Comicastle.kt | 4 ++-- .../extension/en/eggporncomics/Eggporncomics.kt | 6 +++--- .../tachiyomi/extension/en/madokami/Madokami.kt | 4 ++-- .../extension/en/mangafreak/Mangafreak.kt | 6 +++--- .../tachiyomi/extension/en/mangahasu/Mangahasu.kt | 6 +++--- .../tachiyomi/extension/en/mangahere/Mangahere.kt | 6 +++--- .../tachiyomi/extension/en/mangajar/MangaJar.kt | 6 +++--- .../extension/en/mangakatana/MangaKatana.kt | 10 +++++----- .../tachiyomi/extension/en/mangamiso/MangaMiso.kt | 4 ++-- .../tachiyomi/extension/en/mangapill/MangaPill.kt | 6 +++--- .../extension/en/mangarawclub/MangaRawClub.kt | 6 +++--- .../tachiyomi/extension/en/mangasect/MangaSect.kt | 2 +- .../tachiyomi/extension/en/multporn/Multporn.kt | 4 ++-- .../en/myhentaigallery/MyHentaiGallery.kt | 2 +- .../extension/en/rainofsnow/RainOfSnow.kt | 10 +++++----- .../tachiyomi/extension/en/tapastic/Tapastic.kt | 10 +++++----- .../tachiyomi/extension/en/vizshonenjump/Viz.kt | 3 +-- .../tachiyomi/extension/en/vyvymanga/VyvyManga.kt | 2 +- .../tachiyomi/extension/en/webcomics/Webcomics.kt | 6 +++--- .../tachiyomi/extension/es/ikuhentai/Ikuhentai.kt | 6 +++--- .../tachiyomi/extension/es/kumanga/Kumanga.kt | 4 ++-- .../extension/es/lectormanga/LectorManga.kt | 10 +++++----- .../extension/es/leercapitulo/LeerCapitulo.kt | 2 +- .../extension/es/manhwasnet/ManhwasNet.kt | 10 +++++----- .../es/olympusscanlation/OlympusScanlation.kt | 2 +- .../tachiyomi/extension/es/tmohentai/TMOHentai.kt | 5 ++--- .../extension/es/tumangaonline/TuMangaOnline.kt | 10 +++++----- .../kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt | 10 +++++----- .../tachiyomi/extension/id/bacakomik/BacaKomik.kt | 6 +++--- .../tachiyomi/extension/id/comicfx/ComicFx.kt | 6 +++--- .../extension/id/doujindesu/DoujinDesu.kt | 6 +++--- .../extension/id/komikindoid/KomikIndoID.kt | 6 +++--- .../kanade/tachiyomi/extension/id/komiku/Komiku.kt | 8 ++++---- .../extension/it/animegdrclub/AnimeGDRClub.kt | 6 +++--- .../extension/it/demoneceleste/DemoneCeleste.kt | 4 ++-- .../extension/ja/nicovideoseiga/NicovideoSeiga.kt | 12 ++++++------ .../tachiyomi/extension/ja/rawdevart/Rawdevart.kt | 6 +++--- .../tachiyomi/extension/ja/senmanga/SenManga.kt | 6 +++--- .../eu/kanade/tachiyomi/extension/ja/twi4/Twi4.kt | 10 +++++----- .../tachiyomi/extension/ko/newtoki/ManaToki.kt | 2 +- .../extension/ko/newtoki/NewTokiWebtoon.kt | 2 +- .../extension/pt/mundohentai/MundoHentai.kt | 4 ++-- .../tachiyomi/extension/pt/opex/OnePieceEx.kt | 7 +++---- .../tachiyomi/extension/ru/mangabook/MangaBook.kt | 6 +++--- .../extension/ru/mangapoisk/MangaPoisk.kt | 6 +++--- .../tachiyomi/extension/ru/remanga/Remanga.kt | 9 ++++----- .../tachiyomi/extension/ru/unicomics/UniComics.kt | 7 ++----- .../extension/ru/mangabook/YagamiProject.kt | 7 ++----- .../tachiyomi/extension/zh/baimangu/Baimangu.kt | 4 ++-- .../extension/zh/jinmantiantang/Jinmantiantang.kt | 9 ++++----- .../tachiyomi/extension/zh/manhuagui/Manhuagui.kt | 12 ++++++------ .../tachiyomi/extension/zh/manhuaren/Manhuaren.kt | 8 ++++---- .../kanade/tachiyomi/extension/zh/wnacg/wnacg.kt | 2 +- 97 files changed, 272 insertions(+), 293 deletions(-) diff --git a/multisrc/overrides/grouple/allhentai/src/AllHentai.kt b/multisrc/overrides/grouple/allhentai/src/AllHentai.kt index 66b285000..fc114929b 100644 --- a/multisrc/overrides/grouple/allhentai/src/AllHentai.kt +++ b/multisrc/overrides/grouple/allhentai/src/AllHentai.kt @@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.multisrc.grouple.GroupLe import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -46,15 +45,13 @@ class AllHentai : GroupLe("AllHentai", "https://z.allhen.online", "ru") { is OrderBy -> { if (filter.state > 0) { val ord = arrayOf("not", "year", "rate", "popularity", "votes", "created", "updated")[filter.state] - val ordUrl = "$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() - return GET(ordUrl.toString(), headers) + return GET("$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}", headers) } } is Tags -> { if (filter.state > 0) { val tagName = getTagsList()[filter.state].url - val tagUrl = "$baseUrl/list/tag/$tagName?offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() - return GET(tagUrl.toString(), headers) + return GET("$baseUrl/list/tag/$tagName?offset=${70 * (page - 1)}", headers) } } else -> {} diff --git a/multisrc/overrides/grouple/mintmanga/src/MintManga.kt b/multisrc/overrides/grouple/mintmanga/src/MintManga.kt index 8765232ff..3d440a165 100644 --- a/multisrc/overrides/grouple/mintmanga/src/MintManga.kt +++ b/multisrc/overrides/grouple/mintmanga/src/MintManga.kt @@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.multisrc.grouple.GroupLe import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -57,8 +56,7 @@ class MintManga : GroupLe("MintManga", "https://mintmanga.com", "ru") { url.addQueryParameter("sortType", arrayOf("RATING", "POPULARITY", "YEAR", "NAME", "DATE_CREATE", "DATE_UPDATE")[filter.state]) } else { val ord = arrayOf("rate", "popularity", "year", "name", "created", "updated", "votes")[filter.state] - val ordUrl = "$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() - return GET(ordUrl.toString(), headers) + return GET("$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}", headers) } } else -> {} diff --git a/multisrc/overrides/grouple/readmanga/src/ReadManga.kt b/multisrc/overrides/grouple/readmanga/src/ReadManga.kt index 0375fb858..d3db49718 100644 --- a/multisrc/overrides/grouple/readmanga/src/ReadManga.kt +++ b/multisrc/overrides/grouple/readmanga/src/ReadManga.kt @@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.multisrc.grouple.GroupLe import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -57,8 +56,7 @@ class ReadManga : GroupLe("ReadManga", "https://readmanga.live", "ru") { url.addQueryParameter("sortType", arrayOf("RATING", "POPULARITY", "YEAR", "NAME", "DATE_CREATE", "DATE_UPDATE")[filter.state]) } else { val ord = arrayOf("rate", "popularity", "year", "name", "created", "updated", "votes")[filter.state] - val ordUrl = "$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() - return GET(ordUrl.toString(), headers) + return GET("$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}", headers) } } else -> {} diff --git a/multisrc/overrides/grouple/rumix/src/RuMIX.kt b/multisrc/overrides/grouple/rumix/src/RuMIX.kt index 6d2efe76d..5f42397bb 100644 --- a/multisrc/overrides/grouple/rumix/src/RuMIX.kt +++ b/multisrc/overrides/grouple/rumix/src/RuMIX.kt @@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.multisrc.grouple.GroupLe import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -31,8 +30,7 @@ class RuMIX : GroupLe("RuMIX", "https://rumix.me", "ru") { url.addQueryParameter("sortType", arrayOf("RATING", "POPULARITY", "YEAR", "NAME", "DATE_CREATE", "DATE_UPDATE")[filter.state]) } else { val ord = arrayOf("rate", "popularity", "year", "name", "created", "updated", "votes")[filter.state] - val ordUrl = "$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() - return GET(ordUrl.toString(), headers) + return GET("$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}", headers) } } else -> return@forEach diff --git a/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt b/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt index a370374aa..c108b5293 100644 --- a/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt +++ b/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt @@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.multisrc.grouple.GroupLe import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -43,8 +42,7 @@ class SelfManga : GroupLe("SelfManga", "https://selfmanga.live", "ru") { url.addQueryParameter("sortType", arrayOf("RATING", "POPULARITY", "YEAR", "NAME", "DATE_CREATE", "DATE_UPDATE")[filter.state]) } else { val ord = arrayOf("rate", "popularity", "year", "name", "created", "updated", "votes")[filter.state] - val ordUrl = "$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() - return GET(ordUrl.toString(), headers) + return GET("$baseUrl/list?sortType=$ord&offset=${70 * (page - 1)}", headers) } } else -> return@forEach diff --git a/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt b/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt index d27a608bf..b28538df5 100644 --- a/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt +++ b/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt @@ -52,7 +52,7 @@ class DoujinHentai : Madara( } } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = "div.c-tabs-item__content > div.c-tabs-item__content, ${popularMangaSelector()}" diff --git a/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt b/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt index 6cde6c452..1d24316ed 100644 --- a/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt +++ b/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import java.text.SimpleDateFormat @@ -23,7 +23,7 @@ class PojokManga : Madara("Pojok Manga", "https://pojokmanga.net", "id", SimpleD override val mangaSubString = "komik" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl/${searchPage(page)}".toHttpUrlOrNull()!!.newBuilder() + var url = "$baseUrl/${searchPage(page)}".toHttpUrl().newBuilder() url.addQueryParameter("s", query) url.addQueryParameter("post_type", "wp-manga") filters.forEach { filter -> @@ -70,13 +70,13 @@ class PojokManga : Madara("Pojok Manga", "https://pojokmanga.net", "id", SimpleD } is ProjectFilter -> { if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl/project/page/$page".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl/project/page/$page".toHttpUrl().newBuilder() } } else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = "div.c-tabs-item__content, div.page-item-detail" diff --git a/multisrc/overrides/madara/toonily/src/Toonily.kt b/multisrc/overrides/madara/toonily/src/Toonily.kt index f8c2bafe0..579002640 100644 --- a/multisrc/overrides/madara/toonily/src/Toonily.kt +++ b/multisrc/overrides/madara/toonily/src/Toonily.kt @@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.extension.en.toonily import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.FilterList -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import java.text.SimpleDateFormat @@ -51,7 +51,7 @@ class Toonily : Madara( val queries = request.url.queryParameterNames .filterNot { it == "s" } - val newUrl = "$baseUrl/${searchPage(page, query)}".toHttpUrlOrNull()!!.newBuilder().apply { + val newUrl = "$baseUrl/${searchPage(page, query)}".toHttpUrl().newBuilder().apply { queries.map { q -> request.url.queryParameterValues(q).map { this.addQueryParameter(q, it) diff --git a/multisrc/overrides/mangathemesia/cosmicscansid/src/CosmicScansID.kt b/multisrc/overrides/mangathemesia/cosmicscansid/src/CosmicScansID.kt index 4df60eb89..371ff2700 100644 --- a/multisrc/overrides/mangathemesia/cosmicscansid/src/CosmicScansID.kt +++ b/multisrc/overrides/mangathemesia/cosmicscansid/src/CosmicScansID.kt @@ -38,7 +38,7 @@ class CosmicScansID : MangaThemesia("CosmicScans.id", "https://cosmicscans.id", else -> { /* Do Nothing */ } } } - return GET(url.toString()) + return GET(url.build()) } override fun searchMangaSelector() = ".bixbox:not(.hothome):has(.hpage) .utao .uta .imgu, .bixbox:not(.hothome) .listupd .bs .bsx" diff --git a/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt b/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt index 27c080a6f..5d5c69f1d 100644 --- a/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt +++ b/multisrc/overrides/mangathemesia/komikcast/src/KomikCast.kt @@ -201,7 +201,7 @@ class KomikCast : MangaThemesia("Komik Cast", "https://komikcast.lol", "id", "/d else -> { /* Do Nothing */ } } } - return GET(url.toString()) + return GET(url.build()) } private class StatusFilter : SelectFilter( diff --git a/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt b/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt index 36d145b67..fe523e1d9 100644 --- a/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt +++ b/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt @@ -55,7 +55,7 @@ class Ngomik : MangaThemesia("Ngomik", "https://ngomik.net", "id", "/manga") { else -> { /* Do Nothing */ } } } - return GET(url.toString()) + return GET(url.build()) } override fun headersBuilder(): Headers.Builder = Headers.Builder() diff --git a/multisrc/overrides/zmanga/komikita/src/Komikita.kt b/multisrc/overrides/zmanga/komikita/src/Komikita.kt index 325ea1134..da9286867 100644 --- a/multisrc/overrides/zmanga/komikita/src/Komikita.kt +++ b/multisrc/overrides/zmanga/komikita/src/Komikita.kt @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import org.jsoup.nodes.Element import java.text.SimpleDateFormat @@ -38,7 +38,7 @@ class Komikita : ZManga( } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrlOrNull()!!.newBuilder() + var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrl().newBuilder() url.addQueryParameter("s", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { @@ -51,13 +51,13 @@ class Komikita : ZManga( is ProjectFilter -> { if (filter.toUriPart() == "project-filter-on") { url = - "$baseUrl$projectPageString/page/$page".toHttpUrlOrNull()!!.newBuilder() + "$baseUrl$projectPageString/page/$page".toHttpUrl().newBuilder() } } else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun getFilterList(): FilterList { diff --git a/multisrc/overrides/zmanga/komikplay/src/KomikPlay.kt b/multisrc/overrides/zmanga/komikplay/src/KomikPlay.kt index 74b6ae541..4f82edfbc 100644 --- a/multisrc/overrides/zmanga/komikplay/src/KomikPlay.kt +++ b/multisrc/overrides/zmanga/komikplay/src/KomikPlay.kt @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import org.jsoup.nodes.Element import java.text.SimpleDateFormat @@ -32,20 +32,20 @@ class KomikPlay : ZManga("KomikPlay", "https://komikplay.com", "id", SimpleDateF } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrlOrNull()!!.newBuilder() + var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrl().newBuilder() url.addQueryParameter("s", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { // if site has project page, default value "hasProjectPage" = false is ProjectFilter -> { if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl$projectPageString/page/$page".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl$projectPageString/page/$page".toHttpUrl().newBuilder() } } else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun getFilterList() = FilterList( diff --git a/multisrc/overrides/zmanga/sektekomik/src/SekteKomik.kt b/multisrc/overrides/zmanga/sektekomik/src/SekteKomik.kt index ad15015ed..c5c19be6d 100644 --- a/multisrc/overrides/zmanga/sektekomik/src/SekteKomik.kt +++ b/multisrc/overrides/zmanga/sektekomik/src/SekteKomik.kt @@ -6,7 +6,7 @@ import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Element @@ -58,20 +58,20 @@ class SekteKomik : ZManga("Sekte Komik", "https://sektekomik.com", "id") { // search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrlOrNull()!!.newBuilder() + var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrl().newBuilder() url.addQueryParameter("s", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { // if site has project page, default value "hasProjectPage" = false is ProjectFilter -> { if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl$projectPageString/${pagePathSegment(page)}".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl$projectPageString/${pagePathSegment(page)}".toHttpUrl().newBuilder() } } else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = "div.flexbox2-item" diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bakamanga/BakaManga.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bakamanga/BakaManga.kt index 2d8a1ee25..c73850ca0 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bakamanga/BakaManga.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bakamanga/BakaManga.kt @@ -42,7 +42,7 @@ abstract class BakaManga( return if (query.isNotEmpty()) { val url = "$baseUrl/page/$page".toHttpUrl().newBuilder() .addQueryParameter("s", query) - GET(url.toString(), headers) + GET(url.build(), headers) } else { val filterList = if (filters.isEmpty()) getFilterList() else filters val genreFilter = filterList.find { it is GenreFilter } as GenreFilter diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/eromuse/EroMuse.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/eromuse/EroMuse.kt index c2d6eaeb2..b40f74752 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/eromuse/EroMuse.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/eromuse/EroMuse.kt @@ -10,7 +10,7 @@ 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.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -59,7 +59,7 @@ open class EroMuse(override val name: String, override val baseUrl: String) : Ht if (url.contains(pageQueryRegex)) { url.replace(pageQueryRegex, "page=$int") } else { - val httpUrl = url.toHttpUrlOrNull()!! + val httpUrl = url.toHttpUrl() val builder = if (httpUrl.pathSegments.last().toIntOrNull() is Int) { httpUrl.newBuilder().removePathSegment(httpUrl.pathSegments.lastIndex) } else { @@ -165,7 +165,7 @@ open class EroMuse(override val name: String, override val baseUrl: String) : Ht protected fun stackRequest(): Request { stackItem = pageStack.removeLast() val url = if (stackItem.pageType == AUTHOR && currentSortingMode.isNotEmpty() && !stackItem.url.contains("sort")) { - stackItem.url.toHttpUrlOrNull()!!.newBuilder().addQueryParameter("sort", currentSortingMode).toString() + stackItem.url.toHttpUrl().newBuilder().addQueryParameter("sort", currentSortingMode).toString() } else { stackItem.url } @@ -208,14 +208,14 @@ open class EroMuse(override val name: String, override val baseUrl: String) : Ht currentSortingMode = filterList.filterIsInstance().first().toQueryValue() if (query.isNotBlank()) { - val url = "$baseUrl/search?q=$query".toHttpUrlOrNull()!!.newBuilder().apply { + val url = "$baseUrl/search?q=$query".toHttpUrl().newBuilder().apply { if (currentSortingMode.isNotEmpty()) addQueryParameter("sort", currentSortingMode) addQueryParameter("page", "1") } pageStack.addLast(StackItem(url.toString(), SEARCH_RESULTS_OR_BASE)) } else { val albumFilter = filterList.filterIsInstance().first().selection() - val url = "$baseUrl/comics/${albumFilter.pathSegments}".toHttpUrlOrNull()!!.newBuilder().apply { + val url = "$baseUrl/comics/${albumFilter.pathSegments}".toHttpUrl().newBuilder().apply { if (currentSortingMode.isNotEmpty()) addQueryParameter("sort", currentSortingMode) if (albumFilter.pageType != AUTHOR) addQueryParameter("page", "1") } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fansubscat/FansubsCat.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fansubscat/FansubsCat.kt index bae45d35d..ca699c26d 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fansubscat/FansubsCat.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fansubscat/FansubsCat.kt @@ -122,7 +122,7 @@ abstract class FansubsCat( if (query.isNotBlank()) { builder.addQueryParameter("query", query) } - return GET(builder.toString(), headers) + return GET(builder.build(), headers) } override fun searchMangaParse(response: Response): MangasPage = parseMangaFromJson(response) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReader.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReader.kt index dfb96dc11..defe0f092 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReader.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReader.kt @@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -65,7 +65,7 @@ abstract class FMReader( GET("$baseUrl/$requestPath?listType=pagination&page=$page&$popularSort&sort_type=DESC", headers) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/$requestPath?".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/$requestPath?".toHttpUrl().newBuilder() .addQueryParameter("name", query) .addQueryParameter("page", page.toString()) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> @@ -101,7 +101,7 @@ abstract class FMReader( else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun latestUpdatesRequest(page: Int): Request = diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gattsu/Gattsu.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gattsu/Gattsu.kt index e64f4cac6..c0af74899 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gattsu/Gattsu.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gattsu/Gattsu.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -58,7 +58,7 @@ abstract class Gattsu( override fun latestUpdatesNextPageSelector(): String = "ul.paginacao li.next > a" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val searchUrl = "$baseUrl/page/$page/".toHttpUrlOrNull()!!.newBuilder() + val searchUrl = "$baseUrl/page/$page/".toHttpUrl().newBuilder() .addQueryParameter("s", query) .addQueryParameter("post_type", "post") .toString() diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gigaviewer/GigaViewer.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gigaviewer/GigaViewer.kt index 6140f5d78..c34d90714 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gigaviewer/GigaViewer.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/gigaviewer/GigaViewer.kt @@ -21,6 +21,7 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Call import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaType @@ -92,10 +93,10 @@ abstract class GigaViewer( override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { if (query.isNotEmpty()) { - val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("q", query) - return GET(url.toString(), headers) + return GET(url.build(), headers) } val collectionSelected = (filters[0] as CollectionFilter).selected @@ -138,7 +139,7 @@ abstract class GigaViewer( val document = response.asJsoup() val readableProductList = document.selectFirst("div.js-readable-product-list")!! val firstListEndpoint = readableProductList.attr("data-first-list-endpoint") - .toHttpUrlOrNull()!! + .toHttpUrl() val latestListEndpoint = readableProductList.attr("data-latest-list-endpoint") .toHttpUrlOrNull() ?: firstListEndpoint val numberSince = latestListEndpoint.queryParameter("number_since")!!.toFloat() @@ -214,7 +215,7 @@ abstract class GigaViewer( return episode.readableProduct.pageStructure.pages .filter { it.type == "main" } .mapIndexed { i, page -> - val imageUrl = page.src.toHttpUrlOrNull()!!.newBuilder() + val imageUrl = page.src.toHttpUrl().newBuilder() .addQueryParameter("width", page.width.toString()) .addQueryParameter("height", page.height.toString()) .toString() diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt index 581adac1e..eefd24e70 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt @@ -15,7 +15,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -101,7 +101,7 @@ abstract class GroupLe( override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val url = - "$baseUrl/search/advancedResults?offset=${50 * (page - 1)}".toHttpUrlOrNull()!! + "$baseUrl/search/advancedResults?offset=${50 * (page - 1)}".toHttpUrl() .newBuilder() if (query.isNotEmpty()) { url.addQueryParameter("q", query) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/hentaihand/HentaiHand.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/hentaihand/HentaiHand.kt index 36232327d..5bfd95193 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/hentaihand/HentaiHand.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/hentaihand/HentaiHand.kt @@ -24,7 +24,7 @@ import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import kotlinx.serialization.json.put -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request @@ -79,7 +79,7 @@ abstract class HentaiHand( } override fun popularMangaRequest(page: Int): Request { - val url = "$baseUrl/api/comics".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/api/comics".toHttpUrl().newBuilder() .addQueryParameter("page", page.toString()) .addQueryParameter("sort", "popularity") .addQueryParameter("order", "desc") @@ -88,7 +88,7 @@ abstract class HentaiHand( url.addQueryParameter("languages[${-index - 1}]", it.toString()) } // if (altLangId != null) url.addQueryParameter("languages", altLangId.toString()) - return GET(url.toString()) + return GET(url.build()) } // Latest @@ -96,7 +96,7 @@ abstract class HentaiHand( override fun latestUpdatesParse(response: Response): MangasPage = popularMangaParse(response) override fun latestUpdatesRequest(page: Int): Request { - val url = "$baseUrl/api/comics".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/api/comics".toHttpUrl().newBuilder() .addQueryParameter("page", page.toString()) .addQueryParameter("sort", "uploaded_at") .addQueryParameter("order", "desc") @@ -104,7 +104,7 @@ abstract class HentaiHand( hhLangId.forEachIndexed { index, it -> url.addQueryParameter("languages[${-index - 1}]", it.toString()) } - return GET(url.toString()) + return GET(url.build()) } // Search @@ -130,7 +130,7 @@ abstract class HentaiHand( } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/api/comics".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/api/comics".toHttpUrl().newBuilder() .addQueryParameter("page", page.toString()) .addQueryParameter("q", query) @@ -162,7 +162,7 @@ abstract class HentaiHand( } } - return GET(url.toString()) + return GET(url.build()) } // Details diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt index a8dfce12c..4d6c18a34 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt @@ -31,7 +31,7 @@ import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient @@ -544,7 +544,7 @@ abstract class LibGroup( val resBody = tokenResponse.body.string() csrfToken = "_token\" content=\"(.*)\"".toRegex().find(resBody)!!.groups[1]!!.value } - val url = "$baseUrl/filterlist?page=$page&chapters[min]=1".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/filterlist?page=$page&chapters[min]=1".toHttpUrl().newBuilder() if (query.isNotEmpty()) { url.addQueryParameter("name", query) } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt index a9a9af74d..87093b16c 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt @@ -27,7 +27,7 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.CacheControl import okhttp3.FormBody -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -209,7 +209,7 @@ abstract class Madara( protected open fun searchPage(page: Int): String = "page/$page/" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/${searchPage(page)}".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/${searchPage(page)}".toHttpUrl().newBuilder() url.addQueryParameter("s", query) url.addQueryParameter("post_type", "wp-manga") filters.forEach { filter -> @@ -257,7 +257,7 @@ abstract class Madara( else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } protected open val authorFilterTitle: String = when (lang) { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt index cf073c76b..53cfec13f 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt @@ -114,7 +114,7 @@ abstract class MadTheme( } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector(): String = ".book-detailed-item" diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBox.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBox.kt index 0c32d2e1f..e4fa52982 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBox.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangabox/MangaBox.kt @@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -80,7 +80,7 @@ abstract class MangaBox( return if (query.isNotBlank() && getAdvancedGenreFilters().isEmpty()) { GET("$baseUrl/$simpleQueryPath${normalizeSearchQuery(query)}?page=$page", headers) } else { - val url = baseUrl.toHttpUrlOrNull()!!.newBuilder() + val url = baseUrl.toHttpUrl().newBuilder() if (getAdvancedGenreFilters().isNotEmpty()) { url.addPathSegment("advanced_search") url.addQueryParameter("page", page.toString()) @@ -113,7 +113,7 @@ abstract class MangaBox( } } } - GET(url.toString(), headers) + GET(url.build(), headers) } } @@ -210,7 +210,7 @@ abstract class MangaBox( url = it.attr("abs:href").substringAfter(baseUrl) // intentionally not using setUrlWithoutDomain name = it.text() scanlator = - it.attr("abs:href").toHttpUrlOrNull()!!.host // show where chapters are actually from + it.attr("abs:href").toHttpUrl().host // show where chapters are actually from } date_upload = parseChapterDate(element.selectDateFromElement().text(), scanlator!!) ?: 0 } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt index 7589f1ef0..b6aa485e4 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt @@ -163,7 +163,7 @@ abstract class MangaHub( // search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/page/$page".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/page/$page".toHttpUrl().newBuilder() url.addQueryParameter("q", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { @@ -178,7 +178,7 @@ abstract class MangaHub( else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangaworld/MangaWorld.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangaworld/MangaWorld.kt index c74f0733d..38dfab79d 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangaworld/MangaWorld.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangaworld/MangaWorld.kt @@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -78,7 +78,7 @@ abstract class MangaWorld( override fun latestUpdatesParse(response: Response): MangasPage = searchMangaParse(response) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/archive?page=$page".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/archive?page=$page".toHttpUrl().newBuilder() url.addQueryParameter("keyword", query) filters.forEach { filter -> @@ -100,7 +100,7 @@ abstract class MangaWorld( else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun mangaDetailsParse(document: Document): SManga { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/Paprika.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/Paprika.kt index 994762fde..cf1ca11c7 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/Paprika.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/Paprika.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -67,7 +67,7 @@ abstract class Paprika( return if (query.isNotBlank()) { GET("$baseUrl/search?q=$query&page=$page") } else { - val url = "$baseUrl/mangas/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/mangas/".toHttpUrl().newBuilder() filters.forEach { filter -> when (filter) { is GenreFilter -> url.addPathSegment(filter.toUriPart()) @@ -76,7 +76,7 @@ abstract class Paprika( } } url.addQueryParameter("page", page.toString()) - GET(url.toString(), headers) + GET(url.build(), headers) } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/PaprikaAlt.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/PaprikaAlt.kt index 29be76e01..b10852172 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/PaprikaAlt.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/paprika/PaprikaAlt.kt @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document @@ -36,7 +36,7 @@ abstract class PaprikaAlt( return if (query.isNotBlank()) { GET("$baseUrl/search?s=$query&post_type=manga&page=$page") } else { - val url = "$baseUrl/genres/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/genres/".toHttpUrl().newBuilder() filters.forEach { filter -> when (filter) { is GenreFilter -> url.addPathSegment(filter.toUriPart()) @@ -45,7 +45,7 @@ abstract class PaprikaAlt( } } url.addQueryParameter("page", page.toString()) - GET(url.toString(), headers) + GET(url.build(), headers) } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/Webtoons.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/Webtoons.kt index 6cc4487ee..fde1cf723 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/Webtoons.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/Webtoons.kt @@ -18,6 +18,7 @@ import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.Headers import okhttp3.HttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Interceptor import okhttp3.OkHttpClient @@ -178,13 +179,13 @@ open class Webtoons( } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/$langCode/search?keyword=$query".toHttpUrlOrNull()?.newBuilder()!! + val url = "$baseUrl/$langCode/search?keyword=$query".toHttpUrl().newBuilder() val uriPart = (filters.find { it is SearchType } as? SearchType)?.toUriPart() ?: "" url.addQueryParameter("searchType", uriPart) if (uriPart != "WEBTOON" && page > 1) url.addQueryParameter("page", page.toString()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = "#content > div.card_wrap.search ul:not(#filterLayer) li a" diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/WebtoonsTranslate.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/WebtoonsTranslate.kt index b070f6bce..fc95b7f1a 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/WebtoonsTranslate.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/webtoons/WebtoonsTranslate.kt @@ -17,7 +17,7 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import kotlinx.serialization.json.long import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document @@ -34,8 +34,8 @@ open class WebtoonsTranslate( // popularMangaRequest already returns manga sorted by latest update override val supportsLatest = false - private val apiBaseUrl = "https://global.apis.naver.com".toHttpUrlOrNull()!! - private val mobileBaseUrl = "https://m.webtoons.com".toHttpUrlOrNull()!! + private val apiBaseUrl = "https://global.apis.naver.com".toHttpUrl() + private val mobileBaseUrl = "https://m.webtoons.com".toHttpUrl() private val thumbnailBaseUrl = "https://mwebtoon-phinf.pstatic.net" private val pageSize = 24 @@ -53,7 +53,7 @@ open class WebtoonsTranslate( .addQueryParameter("size", "$requeztSize") .addQueryParameter("languageCode", translateLangCode) .build() - return GET(url.toString(), headers) + return GET(url, headers) } // Webtoons translations doesn't really have a "popular" sort; just "UPDATE", "TITLE_ASC", @@ -161,7 +161,7 @@ open class WebtoonsTranslate( override fun pageListParse(document: Document): List = throw Exception("Not used") override fun chapterListRequest(manga: SManga): Request { - val mangaUrl = manga.url.toHttpUrlOrNull()!! + val mangaUrl = manga.url.toHttpUrl() val titleNo = mangaUrl.queryParameter("titleNo") val teamVersion = mangaUrl.queryParameter("teamVersion") val chapterListUrl = apiBaseUrl @@ -210,7 +210,7 @@ open class WebtoonsTranslate( } override fun pageListRequest(chapter: SChapter): Request { - return GET(apiBaseUrl.resolve(chapter.url).toString(), headers) + return GET(apiBaseUrl.resolve(chapter.url)!!, headers) } override fun pageListParse(response: Response): List { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpcomics/WPComics.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpcomics/WPComics.kt index e972ec292..8f4a0bebd 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpcomics/WPComics.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpcomics/WPComics.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -78,7 +78,7 @@ abstract class WPComics( return if (filterList.isEmpty()) { GET("$baseUrl/?s=$query&post_type=comics&page=$page") } else { - val url = "$baseUrl/$searchPath".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/$searchPath".toHttpUrl().newBuilder() filterList.forEach { filter -> when (filter) { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zmanga/ZManga.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zmanga/ZManga.kt index 9185cf29a..45120fad6 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zmanga/ZManga.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zmanga/ZManga.kt @@ -7,7 +7,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -58,7 +58,7 @@ abstract class ZManga( // search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrl/advanced-search/${pagePathSegment(page)}".toHttpUrlOrNull()!!.newBuilder() + var url = "$baseUrl/advanced-search/${pagePathSegment(page)}".toHttpUrl().newBuilder() url.addQueryParameter("title", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { @@ -90,13 +90,13 @@ abstract class ZManga( // if site has project page, default value "hasProjectPage" = false is ProjectFilter -> { if (filter.toUriPart() == "project-filter-on") { - url = "$baseUrl$projectPageString/page/$page".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl$projectPageString/page/$page".toHttpUrl().newBuilder() } } else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } open val projectPageString = "/project-list" diff --git a/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt index 37269392b..d4969e621 100644 --- a/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt +++ b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt @@ -27,7 +27,6 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.FormBody import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -160,13 +159,13 @@ open class BatoTo( else -> { /* Do Nothing */ } } } - client.newCall(GET(url.build().toString(), headers)).asObservableSuccess() + client.newCall(GET(url.build(), headers)).asObservableSuccess() .map { response -> queryParse(response) } } else -> { - val url = "$baseUrl/browse".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/browse".toHttpUrl().newBuilder() var min = "" var max = "" filters.forEach { filter -> @@ -232,7 +231,7 @@ open class BatoTo( url.addQueryParameter("chapters", "$min-$max") } - client.newCall(GET(url.build().toString(), headers)).asObservableSuccess() + client.newCall(GET(url.build(), headers)).asObservableSuccess() .map { response -> queryParse(response) } diff --git a/src/all/hennojin/src/eu/kanade/tachiyomi/extension/all/hennojin/Hennojin.kt b/src/all/hennojin/src/eu/kanade/tachiyomi/extension/all/hennojin/Hennojin.kt index 3d4e690e7..c9b293475 100644 --- a/src/all/hennojin/src/eu/kanade/tachiyomi/extension/all/hennojin/Hennojin.kt +++ b/src/all/hennojin/src/eu/kanade/tachiyomi/extension/all/hennojin/Hennojin.kt @@ -109,7 +109,7 @@ class Hennojin(override val lang: String, suffix: String) : ParsedHttpSource() { private inline fun HttpUrl.request( block: HttpUrl.Builder.() -> HttpUrl.Builder, - ) = GET(newBuilder().block().toString(), headers) + ) = GET(newBuilder().block().build(), headers) private inline val Response.date: Long get() = headers["Last-Modified"]?.run(httpDate::parse)?.time ?: 0L diff --git a/src/all/imhentai/src/eu/kanade/tachiyomi/extension/all/imhentai/IMHentai.kt b/src/all/imhentai/src/eu/kanade/tachiyomi/extension/all/imhentai/IMHentai.kt index 339d807e2..7e923c167 100644 --- a/src/all/imhentai/src/eu/kanade/tachiyomi/extension/all/imhentai/IMHentai.kt +++ b/src/all/imhentai/src/eu/kanade/tachiyomi/extension/all/imhentai/IMHentai.kt @@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import kotlinx.serialization.json.Json import kotlinx.serialization.json.jsonObject -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -111,14 +111,14 @@ class IMHentai(override val lang: String, private val imhLang: String) : ParsedH override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { if (filters.any { it is LanguageFilters && it.state.any { it.name == LANGUAGE_SPEECHLESS && it.state } }) { // edge case for language = speechless - val url = "$baseUrl/language/speechless/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/language/speechless/".toHttpUrl().newBuilder() if ((if (filters.isEmpty()) getFilterList() else filters).filterIsInstance()[0].state == 0) { url.addPathSegment("popular") } - return GET(url.toString()) + return GET(url.build()) } else { - val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("key", query) .addQueryParameter("page", page.toString()) .addQueryParameter(getLanguageURIByName(imhLang).uri, toBinary(true)) // main language always enabled @@ -143,7 +143,7 @@ class IMHentai(override val lang: String, private val imhLang: String) : ParsedH else -> {} } } - return GET(url.toString()) + return GET(url.build()) } } diff --git a/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt b/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt index e0db253ad..ec50fb756 100644 --- a/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt +++ b/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt @@ -29,7 +29,7 @@ import kotlinx.serialization.json.long import kotlinx.serialization.json.put import kotlinx.serialization.json.putJsonArray import kotlinx.serialization.json.putJsonObject -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient @@ -206,7 +206,7 @@ abstract class Luscious( private fun buildAlbumListRequest(page: Int, filters: FilterList, query: String = ""): Request { val input = buildAlbumListRequestInput(page, filters, query) - val url = apiBaseUrl.toHttpUrlOrNull()!!.newBuilder() + val url = apiBaseUrl.toHttpUrl().newBuilder() .addQueryParameter("operationName", "AlbumList") .addQueryParameter("query", ALBUM_LIST_REQUEST_GQL) .addQueryParameter("variables", input.toString()) @@ -238,7 +238,7 @@ abstract class Luscious( private fun buildAlbumInfoRequest(id: String): Request { val input = buildAlbumInfoRequestInput(id) - val url = apiBaseUrl.toHttpUrlOrNull()!!.newBuilder() + val url = apiBaseUrl.toHttpUrl().newBuilder() .addQueryParameter("operationName", "AlbumGet") .addQueryParameter("query", albumInfoQuery) .addQueryParameter("variables", input.toString()) @@ -337,7 +337,7 @@ abstract class Luscious( private fun buildAlbumPicturesPageUrl(id: String, page: Int): String { val input = buildAlbumPicturesRequestInput(id, page) - return apiBaseUrl.toHttpUrlOrNull()!!.newBuilder() + return apiBaseUrl.toHttpUrl().newBuilder() .addQueryParameter("operationName", "AlbumListOwnPictures") .addQueryParameter("query", ALBUM_PICTURES_REQUEST_GQL) .addQueryParameter("variables", input.toString()) diff --git a/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt b/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt index e11032add..3359c3826 100644 --- a/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt +++ b/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt @@ -27,7 +27,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.UpdateStrategy import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -146,13 +146,13 @@ open class NHentai( filterList.findInstance()?.state?.toIntOrNull()?.plus(page) ?: page if (favoriteFilter?.state == true) { - val url = "$baseUrl/favorites".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/favorites".toHttpUrl().newBuilder() .addQueryParameter("q", "$fixedQuery $advQuery") .addQueryParameter("page", offsetPage.toString()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } else { - val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("q", "$fixedQuery $nhLangSearch$advQuery") .addQueryParameter("page", offsetPage.toString()) @@ -162,7 +162,7 @@ open class NHentai( } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } } diff --git a/src/all/ninemanga/src/eu/kanade/tachiyomi/extension/all/ninemanga/NineManga.kt b/src/all/ninemanga/src/eu/kanade/tachiyomi/extension/all/ninemanga/NineManga.kt index 92733ec1d..f48d4231f 100644 --- a/src/all/ninemanga/src/eu/kanade/tachiyomi/extension/all/ninemanga/NineManga.kt +++ b/src/all/ninemanga/src/eu/kanade/tachiyomi/extension/all/ninemanga/NineManga.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -137,7 +137,7 @@ open class NineManga( override fun imageUrlParse(document: Document) = document.select("div.pic_box img.manga_pic").first()!!.attr("src").orEmpty() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/".toHttpUrl().newBuilder() url.addQueryParameter("wd", query) url.addQueryParameter("page", page.toString()) @@ -166,7 +166,7 @@ open class NineManga( url.addQueryParameter("type", "high") - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/all/photos18/src/eu/kanade/tachiyomi/extension/all/photos18/Photos18.kt b/src/all/photos18/src/eu/kanade/tachiyomi/extension/all/photos18/Photos18.kt index 4acc42de6..2b94cf136 100644 --- a/src/all/photos18/src/eu/kanade/tachiyomi/extension/all/photos18/Photos18.kt +++ b/src/all/photos18/src/eu/kanade/tachiyomi/extension/all/photos18/Photos18.kt @@ -76,7 +76,7 @@ class Photos18 : HttpSource(), ConfigurableSource { if (filter is QueryFilter) filter.addQueryTo(url) } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaParse(response: Response) = popularMangaParse(response) diff --git a/src/all/pixiv/src/eu/kanade/tachiyomi/extension/all/pixiv/Pixiv.kt b/src/all/pixiv/src/eu/kanade/tachiyomi/extension/all/pixiv/Pixiv.kt index 4e3ba1667..8e2108551 100644 --- a/src/all/pixiv/src/eu/kanade/tachiyomi/extension/all/pixiv/Pixiv.kt +++ b/src/all/pixiv/src/eu/kanade/tachiyomi/extension/all/pixiv/Pixiv.kt @@ -6,6 +6,7 @@ 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.util.asJsoup import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import okhttp3.Headers @@ -13,7 +14,6 @@ import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response -import org.jsoup.Jsoup import rx.Observable import uy.kohesive.injekt.injectLazy @@ -191,7 +191,7 @@ class Pixiv(override val lang: String) : HttpSource() { for (p in countUp(start = 1)) { searchUsers.url.setEncodedQueryParameter("p", p.toString()) - val userIds = Jsoup.parse(searchUsers.execute().body.string()) + val userIds = searchUsers.execute().asJsoup() .select(".user-recommendation-item > a").eachAttr("href") .map { it.substringAfterLast('/') } diff --git a/src/ar/remanga/src/eu/kanade/tachiyomi/extension/ar/remanga/REManga.kt b/src/ar/remanga/src/eu/kanade/tachiyomi/extension/ar/remanga/REManga.kt index 8d873be54..876c68597 100644 --- a/src/ar/remanga/src/eu/kanade/tachiyomi/extension/ar/remanga/REManga.kt +++ b/src/ar/remanga/src/eu/kanade/tachiyomi/extension/ar/remanga/REManga.kt @@ -80,7 +80,7 @@ class REManga : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/en/MangaRok/src/eu/kanade/tachiyomi/extension/en/mangarok/MangaRok.kt b/src/en/MangaRok/src/eu/kanade/tachiyomi/extension/en/mangarok/MangaRok.kt index 9d4e5b3c6..54259c522 100644 --- a/src/en/MangaRok/src/eu/kanade/tachiyomi/extension/en/mangarok/MangaRok.kt +++ b/src/en/MangaRok/src/eu/kanade/tachiyomi/extension/en/mangarok/MangaRok.kt @@ -45,7 +45,7 @@ class MangaRok : ParsedHttpSource() { .addQueryParameter("q", query) .addQueryParameter("page", page.toString()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector(): String = ".is-half > a.box" diff --git a/src/en/comicastle/src/eu/kanade/tachiyomi/extension/en/comicastle/Comicastle.kt b/src/en/comicastle/src/eu/kanade/tachiyomi/extension/en/comicastle/Comicastle.kt index 18c534ee6..275d50e2b 100644 --- a/src/en/comicastle/src/eu/kanade/tachiyomi/extension/en/comicastle/Comicastle.kt +++ b/src/en/comicastle/src/eu/kanade/tachiyomi/extension/en/comicastle/Comicastle.kt @@ -8,7 +8,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request @@ -70,7 +70,7 @@ class Comicastle : ParsedHttpSource() { // Search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/library/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/library/search".toHttpUrl().newBuilder() var rBody: RequestBody? = null (filters.let { if (it.isEmpty()) getFilterList() else filters }) diff --git a/src/en/eggporncomics/src/eu/kanade/tachiyomi/extension/en/eggporncomics/Eggporncomics.kt b/src/en/eggporncomics/src/eu/kanade/tachiyomi/extension/en/eggporncomics/Eggporncomics.kt index 26071cc80..1074f0060 100644 --- a/src/en/eggporncomics/src/eu/kanade/tachiyomi/extension/en/eggporncomics/Eggporncomics.kt +++ b/src/en/eggporncomics/src/eu/kanade/tachiyomi/extension/en/eggporncomics/Eggporncomics.kt @@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -91,7 +91,7 @@ class Eggporncomics : ParsedHttpSource() { return if (query.isNotBlank()) { GET("$baseUrl/search/${query.replace(queryRegex, "-")}?page=$page", headers) } else { - val url = baseUrl.toHttpUrlOrNull()!!.newBuilder() + val url = baseUrl.toHttpUrl().newBuilder() val filterList = if (filters.isEmpty()) getFilterList() else filters val category = filterList.find { it is CategoryFilter } as UriPartFilter val comics = filterList.find { it is ComicsFilter } as UriPartFilter @@ -110,7 +110,7 @@ class Eggporncomics : ParsedHttpSource() { url.addQueryParameter("page", page.toString()) - GET(url.toString(), headers) + GET(url.build(), headers) } } diff --git a/src/en/madokami/src/eu/kanade/tachiyomi/extension/en/madokami/Madokami.kt b/src/en/madokami/src/eu/kanade/tachiyomi/extension/en/madokami/Madokami.kt index 7c807e741..a2a01f50f 100644 --- a/src/en/madokami/src/eu/kanade/tachiyomi/extension/en/madokami/Madokami.kt +++ b/src/en/madokami/src/eu/kanade/tachiyomi/extension/en/madokami/Madokami.kt @@ -16,7 +16,7 @@ import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.jsonPrimitive import okhttp3.Credentials import okhttp3.HttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -87,7 +87,7 @@ class Madokami : ConfigurableSource, ParsedHttpSource() { override fun searchMangaNextPageSelector(): String? = null override fun mangaDetailsRequest(manga: SManga): Request { - val url = (baseUrl + manga.url).toHttpUrlOrNull()!! + val url = (baseUrl + manga.url).toHttpUrl() if (url.pathSize > 5 && url.pathSegments[0] == "Manga" && url.pathSegments[1].length == 1) { val builder = url.newBuilder() for (i in 5 until url.pathSize) { builder.removePathSegment(5) } diff --git a/src/en/mangafreak/src/eu/kanade/tachiyomi/extension/en/mangafreak/Mangafreak.kt b/src/en/mangafreak/src/eu/kanade/tachiyomi/extension/en/mangafreak/Mangafreak.kt index 3c861af58..c6c2286e3 100644 --- a/src/en/mangafreak/src/eu/kanade/tachiyomi/extension/en/mangafreak/Mangafreak.kt +++ b/src/en/mangafreak/src/eu/kanade/tachiyomi/extension/en/mangafreak/Mangafreak.kt @@ -7,7 +7,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -72,7 +72,7 @@ class Mangafreak : ParsedHttpSource() { // Search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = baseUrl.toHttpUrlOrNull()!!.newBuilder() + val url = baseUrl.toHttpUrl().newBuilder() if (query.isNotBlank()) { url.addPathSegments("Find/$query") @@ -97,7 +97,7 @@ class Mangafreak : ParsedHttpSource() { } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaNextPageSelector(): String? = null override fun searchMangaSelector(): String = "div.manga_search_item , div.mangaka_search_item" diff --git a/src/en/mangahasu/src/eu/kanade/tachiyomi/extension/en/mangahasu/Mangahasu.kt b/src/en/mangahasu/src/eu/kanade/tachiyomi/extension/en/mangahasu/Mangahasu.kt index ae5896c55..59cd48ddc 100644 --- a/src/en/mangahasu/src/eu/kanade/tachiyomi/extension/en/mangahasu/Mangahasu.kt +++ b/src/en/mangahasu/src/eu/kanade/tachiyomi/extension/en/mangahasu/Mangahasu.kt @@ -14,7 +14,7 @@ import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -69,7 +69,7 @@ class Mangahasu : ParsedHttpSource() { override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/advanced-search.html".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/advanced-search.html".toHttpUrl().newBuilder() url.addQueryParameter("keyword", query) url.addQueryParameter("page", page.toString()) @@ -107,7 +107,7 @@ class Mangahasu : ParsedHttpSource() { } } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = latestUpdatesSelector() diff --git a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt index 1f5e7c762..33ee8f8fe 100644 --- a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt +++ b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt @@ -13,7 +13,7 @@ import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.Headers import okhttp3.HttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -91,7 +91,7 @@ class Mangahere : ParsedHttpSource() { override fun latestUpdatesNextPageSelector() = "div.pager-list-left a:last-child" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search".toHttpUrl().newBuilder() filters.forEach { filter -> when (filter) { @@ -137,7 +137,7 @@ class Mangahere : ParsedHttpSource() { addEncodedQueryParameter("name", null) } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = ".manga-list-4-list > li" diff --git a/src/en/mangajar/src/eu/kanade/tachiyomi/extension/en/mangajar/MangaJar.kt b/src/en/mangajar/src/eu/kanade/tachiyomi/extension/en/mangajar/MangaJar.kt index da53c4d35..9ef23d505 100644 --- a/src/en/mangajar/src/eu/kanade/tachiyomi/extension/en/mangajar/MangaJar.kt +++ b/src/en/mangajar/src/eu/kanade/tachiyomi/extension/en/mangajar/MangaJar.kt @@ -9,7 +9,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -69,7 +69,7 @@ class MangaJar : ParsedHttpSource() { val genreFilter = filterList.findInstance() val genre = genreFilter?.let { f -> f.values[f.state] } - val url = (if (genre!!.isEmpty()) "$baseUrl/search" else "$baseUrl/genre/$genre").toHttpUrlOrNull()!!.newBuilder() + val url = (if (genre!!.isEmpty()) "$baseUrl/search" else "$baseUrl/genre/$genre").toHttpUrl().newBuilder() url.addQueryParameter("q", query) url.addQueryParameter("page", page.toString()) @@ -85,7 +85,7 @@ class MangaJar : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt b/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt index ba59635c9..81ed11ed5 100644 --- a/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt +++ b/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt @@ -14,7 +14,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request @@ -86,12 +86,12 @@ class MangaKatana : ConfigurableSource, ParsedHttpSource() { if (query.isNotEmpty()) { val type = filterList.find { it is TypeFilter } as TypeFilter - val url = "$baseUrl/page/$page".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/page/$page".toHttpUrl().newBuilder() .addQueryParameter("search", query) .addQueryParameter("search_by", type.toUriPart()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } else { - val url = "$baseUrl/manga/page/$page".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/manga/page/$page".toHttpUrl().newBuilder() .addQueryParameter("filter", "1") for (filter in filterList) { when (filter) { @@ -125,7 +125,7 @@ class MangaKatana : ConfigurableSource, ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } } diff --git a/src/en/mangamiso/src/eu/kanade/tachiyomi/extension/en/mangamiso/MangaMiso.kt b/src/en/mangamiso/src/eu/kanade/tachiyomi/extension/en/mangamiso/MangaMiso.kt index 7d3f6b780..fd410d70b 100644 --- a/src/en/mangamiso/src/eu/kanade/tachiyomi/extension/en/mangamiso/MangaMiso.kt +++ b/src/en/mangamiso/src/eu/kanade/tachiyomi/extension/en/mangamiso/MangaMiso.kt @@ -98,7 +98,7 @@ class MangaMiso : HttpSource() { // If no filters selected, default to "all" if (tagCount == 0) { url.addPathSegment("all") } - GET(url.toString(), headers) + GET(url.build(), headers) } } } @@ -123,7 +123,7 @@ class MangaMiso : HttpSource() { .addQueryParameter("perPage", MANGA_PER_PAGE.toString()) .addQueryParameter("page", page.toString()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun latestUpdatesParse(response: Response): MangasPage { diff --git a/src/en/mangapill/src/eu/kanade/tachiyomi/extension/en/mangapill/MangaPill.kt b/src/en/mangapill/src/eu/kanade/tachiyomi/extension/en/mangapill/MangaPill.kt index c1e8fcda2..4ceb952da 100644 --- a/src/en/mangapill/src/eu/kanade/tachiyomi/extension/en/mangapill/MangaPill.kt +++ b/src/en/mangapill/src/eu/kanade/tachiyomi/extension/en/mangapill/MangaPill.kt @@ -7,7 +7,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -95,7 +95,7 @@ class MangaPill : ParsedHttpSource() { override fun imageUrlParse(document: Document) = "" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("page", page.toString()) .addQueryParameter("q", query) @@ -119,7 +119,7 @@ class MangaPill : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } private class Type : UriPartFilter( diff --git a/src/en/mangarawclub/src/eu/kanade/tachiyomi/extension/en/mangarawclub/MangaRawClub.kt b/src/en/mangarawclub/src/eu/kanade/tachiyomi/extension/en/mangarawclub/MangaRawClub.kt index dc30b0640..6ba91a188 100644 --- a/src/en/mangarawclub/src/eu/kanade/tachiyomi/extension/en/mangarawclub/MangaRawClub.kt +++ b/src/en/mangarawclub/src/eu/kanade/tachiyomi/extension/en/mangarawclub/MangaRawClub.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.FormBody -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -158,7 +158,7 @@ class MangaRawClub : ParsedHttpSource() { } // Filter search - val url = "$baseUrl/browse-comics/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/browse-comics/".toHttpUrl().newBuilder() val requestBody = FormBody.Builder() url.addQueryParameter("results", page.toString()) @@ -176,7 +176,7 @@ class MangaRawClub : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) // return POST("$baseUrl/search", headers, requestBody.build()) // csrfmiddlewaretoken required } diff --git a/src/en/mangasect/src/eu/kanade/tachiyomi/extension/en/mangasect/MangaSect.kt b/src/en/mangasect/src/eu/kanade/tachiyomi/extension/en/mangasect/MangaSect.kt index c58c9be02..4a844be2d 100644 --- a/src/en/mangasect/src/eu/kanade/tachiyomi/extension/en/mangasect/MangaSect.kt +++ b/src/en/mangasect/src/eu/kanade/tachiyomi/extension/en/mangasect/MangaSect.kt @@ -111,7 +111,7 @@ class MangaSect : ParsedHttpSource() { addPathSegment("") } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaParse(response: Response): MangasPage = popularMangaParse(response) diff --git a/src/en/multporn/src/eu/kanade/tachiyomi/extension/en/multporn/Multporn.kt b/src/en/multporn/src/eu/kanade/tachiyomi/extension/en/multporn/Multporn.kt index 57356631f..3e999d0cb 100644 --- a/src/en/multporn/src/eu/kanade/tachiyomi/extension/en/multporn/Multporn.kt +++ b/src/en/multporn/src/eu/kanade/tachiyomi/extension/en/multporn/Multporn.kt @@ -78,7 +78,7 @@ class Multporn : ParsedHttpSource() { } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun latestUpdatesRequest(page: Int) = buildLatestMangaRequest(page - 1) @@ -116,7 +116,7 @@ class Multporn : ParsedHttpSource() { } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } private fun buildTextSearchFilterRequests(page: Int, filters: List): List { diff --git a/src/en/myhentaigallery/src/eu/kanade/tachiyomi/extension/en/myhentaigallery/MyHentaiGallery.kt b/src/en/myhentaigallery/src/eu/kanade/tachiyomi/extension/en/myhentaigallery/MyHentaiGallery.kt index e872e4220..cfef00c31 100644 --- a/src/en/myhentaigallery/src/eu/kanade/tachiyomi/extension/en/myhentaigallery/MyHentaiGallery.kt +++ b/src/en/myhentaigallery/src/eu/kanade/tachiyomi/extension/en/myhentaigallery/MyHentaiGallery.kt @@ -94,7 +94,7 @@ class MyHentaiGallery : ParsedHttpSource() { } url.addPathSegment("$page") - GET(url.toString(), headers) + GET(url.build(), headers) } } diff --git a/src/en/rainofsnow/src/eu/kanade/tachiyomi/extension/en/rainofsnow/RainOfSnow.kt b/src/en/rainofsnow/src/eu/kanade/tachiyomi/extension/en/rainofsnow/RainOfSnow.kt index c33f6fb93..fbf1620e9 100644 --- a/src/en/rainofsnow/src/eu/kanade/tachiyomi/extension/en/rainofsnow/RainOfSnow.kt +++ b/src/en/rainofsnow/src/eu/kanade/tachiyomi/extension/en/rainofsnow/RainOfSnow.kt @@ -8,7 +8,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -53,11 +53,11 @@ open class RainOfSnow() : ParsedHttpSource() { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { if (query.isNotEmpty()) { - val url = "$baseUrl/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/".toHttpUrl().newBuilder() url.addQueryParameter("s", query) - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } - val url = "$baseUrl/comics/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/comics/".toHttpUrl().newBuilder() filters.forEach { filter -> when (filter) { is AlbumTypeSelectFilter -> { @@ -68,7 +68,7 @@ open class RainOfSnow() : ParsedHttpSource() { else -> {} } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/en/tapastic/src/eu/kanade/tachiyomi/extension/en/tapastic/Tapastic.kt b/src/en/tapastic/src/eu/kanade/tachiyomi/extension/en/tapastic/Tapastic.kt index dcf39e856..9103bfd46 100644 --- a/src/en/tapastic/src/eu/kanade/tachiyomi/extension/en/tapastic/Tapastic.kt +++ b/src/en/tapastic/src/eu/kanade/tachiyomi/extension/en/tapastic/Tapastic.kt @@ -25,7 +25,7 @@ import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.Headers import okhttp3.HttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -213,14 +213,14 @@ class Tapastic : ConfigurableSource, ParsedHttpSource() { val url: HttpUrl.Builder // If there is any search text, use text search, ignoring filters if (query.isNotBlank()) { - url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("q", query) .addQueryParameter("t", "COMICS") } else { // Checking mature filter val matureFilter = filterList.find { it is MatureFilter } as MatureFilter if (matureFilter.state) { - url = "$baseUrl/mature".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl/mature".toHttpUrl().newBuilder() // Append only mature uri filters filterList.forEach { if (it is UriFilter && it.isMature) { @@ -228,7 +228,7 @@ class Tapastic : ConfigurableSource, ParsedHttpSource() { } } } else { - url = "$baseUrl/comics".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl/comics".toHttpUrl().newBuilder() // Append only non-mature uri filters filterList.forEach { if (it is UriFilter && !it.isMature) { @@ -244,7 +244,7 @@ class Tapastic : ConfigurableSource, ParsedHttpSource() { } // Append page number url.addQueryParameter("pageNumber", page.toString()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaNextPageSelector() = diff --git a/src/en/vizshonenjump/src/eu/kanade/tachiyomi/extension/en/vizshonenjump/Viz.kt b/src/en/vizshonenjump/src/eu/kanade/tachiyomi/extension/en/vizshonenjump/Viz.kt index 23a5c12f7..b648b5162 100644 --- a/src/en/vizshonenjump/src/eu/kanade/tachiyomi/extension/en/vizshonenjump/Viz.kt +++ b/src/en/vizshonenjump/src/eu/kanade/tachiyomi/extension/en/vizshonenjump/Viz.kt @@ -14,7 +14,6 @@ import kotlinx.serialization.json.Json import okhttp3.CacheControl import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Request @@ -325,7 +324,7 @@ open class Viz( .add("X-Requested-With", "XMLHttpRequest") .build() - val authCheckUrl = "$baseUrl/$MANGA_AUTH_CHECK_URL".toHttpUrlOrNull()!!.newBuilder() + val authCheckUrl = "$baseUrl/$MANGA_AUTH_CHECK_URL".toHttpUrl().newBuilder() .addQueryParameter("device_id", "3") .addQueryParameter("manga_id", mangaId) .toString() diff --git a/src/en/vyvymanga/src/eu/kanade/tachiyomi/extension/en/vyvymanga/VyvyManga.kt b/src/en/vyvymanga/src/eu/kanade/tachiyomi/extension/en/vyvymanga/VyvyManga.kt index 082c96930..c6575c784 100644 --- a/src/en/vyvymanga/src/eu/kanade/tachiyomi/extension/en/vyvymanga/VyvyManga.kt +++ b/src/en/vyvymanga/src/eu/kanade/tachiyomi/extension/en/vyvymanga/VyvyManga.kt @@ -45,7 +45,7 @@ class VyvyManga : ParsedHttpSource() { .addQueryParameter("q", query) .addQueryParameter("page", page.toString()) - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector(): String = ".comic-item" diff --git a/src/en/webcomics/src/eu/kanade/tachiyomi/extension/en/webcomics/Webcomics.kt b/src/en/webcomics/src/eu/kanade/tachiyomi/extension/en/webcomics/Webcomics.kt index 82f7558bd..ba1869eeb 100644 --- a/src/en/webcomics/src/eu/kanade/tachiyomi/extension/en/webcomics/Webcomics.kt +++ b/src/en/webcomics/src/eu/kanade/tachiyomi/extension/en/webcomics/Webcomics.kt @@ -9,7 +9,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document @@ -81,7 +81,7 @@ class Webcomics : ParsedHttpSource() { override fun searchMangaSelector() = ".wiki-book-list > .row" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/wiki.html?search=$query&page=$page".toHttpUrlOrNull()?.newBuilder() + val url = "$baseUrl/wiki.html?search=$query&page=$page".toHttpUrl().newBuilder() (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is GenreFilter -> { @@ -91,7 +91,7 @@ class Webcomics : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaParse(response: Response): MangasPage { diff --git a/src/es/ikuhentai/src/eu/kanade/tachiyomi/extension/es/ikuhentai/Ikuhentai.kt b/src/es/ikuhentai/src/eu/kanade/tachiyomi/extension/es/ikuhentai/Ikuhentai.kt index 4c8eb6a39..021217ead 100755 --- a/src/es/ikuhentai/src/eu/kanade/tachiyomi/extension/es/ikuhentai/Ikuhentai.kt +++ b/src/es/ikuhentai/src/eu/kanade/tachiyomi/extension/es/ikuhentai/Ikuhentai.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -53,7 +53,7 @@ class Ikuhentai : ParsedHttpSource() { } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/page/$page".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/page/$page".toHttpUrl().newBuilder() url.addQueryParameter("post_type", "wp-manga") val pattern = "\\s+".toRegex() val q = query.replace(pattern, "+") @@ -104,7 +104,7 @@ class Ikuhentai : ParsedHttpSource() { } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } // max 200 results diff --git a/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt b/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt index 33bad5f1e..e04aade26 100755 --- a/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt +++ b/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt @@ -19,7 +19,7 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.FormBody import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -210,7 +210,7 @@ class Kumanga : HttpSource() { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { getKumangaToken() - val url = "$baseUrl/backend/ajax/searchengine.php?page=$page&perPage=10&keywords=$query&retrieveCategories=true&retrieveAuthors=false&contentType=manga&token=$kumangaToken".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/backend/ajax/searchengine.php?page=$page&perPage=10&keywords=$query&retrieveCategories=true&retrieveAuthors=false&contentType=manga&token=$kumangaToken".toHttpUrl().newBuilder() filters.forEach { filter -> when (filter) { diff --git a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt index 0a1e52cba..3bcc30c7d 100755 --- a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt +++ b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt @@ -22,7 +22,7 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.FormBody import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -66,7 +66,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() { private fun OkHttpClient.Builder.rateLimitImageCDNs(hosts: Array, permits: Int, period: Long): OkHttpClient.Builder { hosts.forEach { host -> - rateLimitHost(host.toHttpUrlOrNull()!!, permits, period) + rateLimitHost(host.toHttpUrl(), permits, period) } return this } @@ -74,7 +74,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() { private var loadWebView = true override val client: OkHttpClient = network.client.newBuilder() .rateLimitHost( - baseUrl.toHttpUrlOrNull()!!, + baseUrl.toHttpUrl(), preferences.getString(WEB_RATELIMIT_PREF, WEB_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(), 60, ) @@ -139,7 +139,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() { override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/library".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/library".toHttpUrl().newBuilder() url.addQueryParameter("title", query) url.addQueryParameter("page", page.toString()) @@ -213,7 +213,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() { } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/es/leercapitulo/src/eu/kanade/tachiyomi/extension/es/leercapitulo/LeerCapitulo.kt b/src/es/leercapitulo/src/eu/kanade/tachiyomi/extension/es/leercapitulo/LeerCapitulo.kt index 69e1b563e..1b7ee856e 100644 --- a/src/es/leercapitulo/src/eu/kanade/tachiyomi/extension/es/leercapitulo/LeerCapitulo.kt +++ b/src/es/leercapitulo/src/eu/kanade/tachiyomi/extension/es/leercapitulo/LeerCapitulo.kt @@ -55,7 +55,7 @@ class LeerCapitulo : ParsedHttpSource() { val url = "$baseUrl/search-autocomplete".toHttpUrl().newBuilder() .addQueryParameter("term", query) - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaParse(response: Response): MangasPage { diff --git a/src/es/manhwasnet/src/eu/kanade/tachiyomi/extension/es/manhwasnet/ManhwasNet.kt b/src/es/manhwasnet/src/eu/kanade/tachiyomi/extension/es/manhwasnet/ManhwasNet.kt index 219d22b4c..3276301dd 100644 --- a/src/es/manhwasnet/src/eu/kanade/tachiyomi/extension/es/manhwasnet/ManhwasNet.kt +++ b/src/es/manhwasnet/src/eu/kanade/tachiyomi/extension/es/manhwasnet/ManhwasNet.kt @@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Cookie -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response @@ -68,9 +68,9 @@ class ManhwasNet : ParsedHttpSource() { .set("Referer", "$baseUrl/") override fun popularMangaRequest(page: Int): Request { - val url = "$baseUrl/biblioteca".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/biblioteca".toHttpUrl().newBuilder() url.addQueryParameter("page", page.toString()) - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun popularMangaSelector() = "ul > li > article.anime" @@ -98,7 +98,7 @@ class ManhwasNet : ParsedHttpSource() { } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/biblioteca".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/biblioteca".toHttpUrl().newBuilder() if (query.isNotEmpty()) { url.addQueryParameter("buscar", query) } else { @@ -116,7 +116,7 @@ class ManhwasNet : ParsedHttpSource() { } } url.addQueryParameter("page", page.toString()) - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt index 45b8cf5b5..9c1b01ec6 100644 --- a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt +++ b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt @@ -114,7 +114,7 @@ class OlympusScanlation : HttpSource() { } url.addQueryParameter("type", "comic") url.addQueryParameter("page", page.toString()) - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaParse(response: Response): MangasPage { diff --git a/src/es/tmohentai/src/eu/kanade/tachiyomi/extension/es/tmohentai/TMOHentai.kt b/src/es/tmohentai/src/eu/kanade/tachiyomi/extension/es/tmohentai/TMOHentai.kt index ab1cb9b2b..d8436fbf4 100755 --- a/src/es/tmohentai/src/eu/kanade/tachiyomi/extension/es/tmohentai/TMOHentai.kt +++ b/src/es/tmohentai/src/eu/kanade/tachiyomi/extension/es/tmohentai/TMOHentai.kt @@ -16,7 +16,6 @@ import eu.kanade.tachiyomi.source.model.UpdateStrategy import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -134,7 +133,7 @@ class TMOHentai : ConfigurableSource, ParsedHttpSource() { override fun imageUrlParse(document: Document): String = document.select("div#content-images img.content-image").attr("abs:data-original") override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/section/all?view=list".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/section/all?view=list".toHttpUrl().newBuilder() url.addQueryParameter("search[searchText]", query) url.addQueryParameter("page", page.toString()) @@ -165,7 +164,7 @@ class TMOHentai : ConfigurableSource, ParsedHttpSource() { } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt b/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt index b85d50d8d..6f3b99af6 100644 --- a/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt +++ b/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt @@ -22,7 +22,7 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.FormBody import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -61,7 +61,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() { private fun OkHttpClient.Builder.rateLimitImageCDNs(hosts: Array, permits: Int, period: Long): OkHttpClient.Builder { hosts.forEach { host -> - rateLimitHost(host.toHttpUrlOrNull()!!, permits, period) + rateLimitHost(host.toHttpUrl(), permits, period) } return this } @@ -104,7 +104,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() { chain.proceed(request) } .rateLimitHost( - baseUrl.toHttpUrlOrNull()!!, + baseUrl.toHttpUrl(), preferences.getString(WEB_RATELIMIT_PREF, WEB_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(), 60, ) @@ -141,7 +141,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() { override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/library".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/library".toHttpUrl().newBuilder() url.addQueryParameter("title", query) if (getSFWModePref()) { SFW_MODE_PREF_EXCLUDE_GENDERS.forEach { gender -> @@ -201,7 +201,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() { else -> {} } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() diff --git a/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt b/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt index 6d3a77c2f..6ec528d5d 100644 --- a/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt +++ b/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt @@ -9,7 +9,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.UpdateStrategy import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import org.jsoup.nodes.Document import org.jsoup.nodes.Element @@ -91,15 +91,15 @@ open class VCPVMP(override val name: String, override val baseUrl: String) : Par protected open val genreSuffix = "" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = baseUrl.toHttpUrlOrNull()!!.newBuilder() + var url = baseUrl.toHttpUrl().newBuilder() if (query.isNotBlank()) { - url = "$baseUrl/$urlSuffix".toHttpUrlOrNull()!!.newBuilder() + url = "$baseUrl/$urlSuffix".toHttpUrl().newBuilder() url.addPathSegments("page") url.addPathSegments(page.toString()) url.addQueryParameter("s", query) - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } filters.forEach { filter -> @@ -117,7 +117,7 @@ open class VCPVMP(override val name: String, override val baseUrl: String) : Par } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/id/bacakomik/src/eu/kanade/tachiyomi/extension/id/bacakomik/BacaKomik.kt b/src/id/bacakomik/src/eu/kanade/tachiyomi/extension/id/bacakomik/BacaKomik.kt index 28c11d6da..46ca239d9 100644 --- a/src/id/bacakomik/src/eu/kanade/tachiyomi/extension/id/bacakomik/BacaKomik.kt +++ b/src/id/bacakomik/src/eu/kanade/tachiyomi/extension/id/bacakomik/BacaKomik.kt @@ -8,7 +8,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -64,7 +64,7 @@ class BacaKomik : ParsedHttpSource() { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val builtUrl = if (page == 1) "$baseUrl/daftar-komik/" else "$baseUrl/daftar-komik/page/$page/?order=" - val url = builtUrl.toHttpUrlOrNull()!!.newBuilder() + val url = builtUrl.toHttpUrl().newBuilder() url.addQueryParameter("title", query) url.addQueryParameter("page", page.toString()) filters.forEach { filter -> @@ -97,7 +97,7 @@ class BacaKomik : ParsedHttpSource() { else -> {} } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun mangaDetailsParse(document: Document): SManga { val infoElement = document.select("div.infoanime").first()!! diff --git a/src/id/comicfx/src/eu/kanade/tachiyomi/extension/id/comicfx/ComicFx.kt b/src/id/comicfx/src/eu/kanade/tachiyomi/extension/id/comicfx/ComicFx.kt index 279aeea01..be9d60ffb 100644 --- a/src/id/comicfx/src/eu/kanade/tachiyomi/extension/id/comicfx/ComicFx.kt +++ b/src/id/comicfx/src/eu/kanade/tachiyomi/extension/id/comicfx/ComicFx.kt @@ -15,7 +15,7 @@ import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document @@ -97,7 +97,7 @@ class ComicFx : ParsedHttpSource() { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val filterList = if (filters.isEmpty()) getFilterList() else filters - val url = "$baseUrl/filterList".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/filterList".toHttpUrl().newBuilder() for (filter in filterList) { when (filter) { @@ -123,7 +123,7 @@ class ComicFx : ParsedHttpSource() { url.addQueryParameter("page", page.toString()) // Unimplemented parameters: "alpha" (For filtering by alphabet) and "tag" (idk) - return GET(url.toString()) + return GET(url.build()) } override fun searchMangaSelector() = popularMangaSelector() diff --git a/src/id/doujindesu/src/eu/kanade/tachiyomi/extension/id/doujindesu/DoujinDesu.kt b/src/id/doujindesu/src/eu/kanade/tachiyomi/extension/id/doujindesu/DoujinDesu.kt index 936d162ce..bc3615a96 100644 --- a/src/id/doujindesu/src/eu/kanade/tachiyomi/extension/id/doujindesu/DoujinDesu.kt +++ b/src/id/doujindesu/src/eu/kanade/tachiyomi/extension/id/doujindesu/DoujinDesu.kt @@ -19,7 +19,7 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.FormBody import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -321,7 +321,7 @@ class DoujinDesu : ParsedHttpSource(), ConfigurableSource { // Search & FIlter override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/manga/page/$page/".toHttpUrlOrNull()?.newBuilder()!! + val url = "$baseUrl/manga/page/$page/".toHttpUrl().newBuilder() .addQueryParameter("title", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { @@ -349,7 +349,7 @@ class DoujinDesu : ParsedHttpSource(), ConfigurableSource { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaFromElement(element: Element): SManga = diff --git a/src/id/komikindoid/src/eu/kanade/tachiyomi/extension/id/komikindoid/KomikIndoID.kt b/src/id/komikindoid/src/eu/kanade/tachiyomi/extension/id/komikindoid/KomikIndoID.kt index 422f8d7dd..34da0e6c6 100644 --- a/src/id/komikindoid/src/eu/kanade/tachiyomi/extension/id/komikindoid/KomikIndoID.kt +++ b/src/id/komikindoid/src/eu/kanade/tachiyomi/extension/id/komikindoid/KomikIndoID.kt @@ -7,7 +7,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -55,7 +55,7 @@ class KomikIndoID : ParsedHttpSource() { } override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/daftar-manga/page/$page/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/daftar-manga/page/$page/".toHttpUrl().newBuilder() .addQueryParameter("title", query) filters.forEach { filter -> when (filter) { @@ -120,7 +120,7 @@ class KomikIndoID : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun mangaDetailsParse(document: Document): SManga { val infoElement = document.select("div.infoanime").first()!! diff --git a/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt b/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt index 713763d27..170bf4398 100644 --- a/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt +++ b/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt @@ -7,7 +7,7 @@ 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.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document @@ -81,7 +81,7 @@ class Komiku : ParsedHttpSource() { override fun searchMangaSelector() = popularMangaSelector() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var url = "$baseUrlData/page/$page/?post_type=manga".toHttpUrlOrNull()?.newBuilder()!!.addQueryParameter("s", query) + var url = "$baseUrlData/page/$page/?post_type=manga".toHttpUrl().newBuilder().addQueryParameter("s", query) (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is CategoryNames -> { @@ -107,13 +107,13 @@ class Komiku : ParsedHttpSource() { is ProjectList -> { val project = filter.values[filter.state] if (project.key == "project-filter-on") { - url = ("$baseUrl/pustaka" + if (page > 1) "/page/$page/" else "" + "?tipe=projek").toHttpUrlOrNull()!!.newBuilder() + url = ("$baseUrl/pustaka" + if (page > 1) "/page/$page/" else "" + "?tipe=projek").toHttpUrl().newBuilder() } } else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) diff --git a/src/it/animegdrclub/src/eu/kanade/tachiyomi/extension/it/animegdrclub/AnimeGDRClub.kt b/src/it/animegdrclub/src/eu/kanade/tachiyomi/extension/it/animegdrclub/AnimeGDRClub.kt index 825e5d96a..fefe2f5f5 100644 --- a/src/it/animegdrclub/src/eu/kanade/tachiyomi/extension/it/animegdrclub/AnimeGDRClub.kt +++ b/src/it/animegdrclub/src/eu/kanade/tachiyomi/extension/it/animegdrclub/AnimeGDRClub.kt @@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -29,7 +29,7 @@ class AnimeGDRClub : ParsedHttpSource() { override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/serie.php", headers) override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/", headers) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/".toHttpUrl().newBuilder() if (query.isNotEmpty()) { url.addEncodedPathSegment("serie.php") @@ -118,7 +118,7 @@ class AnimeGDRClub : ParsedHttpSource() { override fun latestUpdatesFromElement(element: Element): SManga { val manga = SManga.create() - manga.setUrlWithoutDomain("http://www.agcscanlation.it/progetto.php?nome=${element.attr("href").toHttpUrlOrNull()!!.queryParameter("nome")}") + manga.setUrlWithoutDomain("http://www.agcscanlation.it/progetto.php?nome=${element.attr("href").toHttpUrl().queryParameter("nome")}") manga.title = element.selectFirst(".titolo")!!.text() manga.thumbnail_url = "$baseUrl/${element.selectFirst("img")!!.attr("src")}" diff --git a/src/it/demoneceleste/src/eu/kanade/tachiyomi/extension/it/demoneceleste/DemoneCeleste.kt b/src/it/demoneceleste/src/eu/kanade/tachiyomi/extension/it/demoneceleste/DemoneCeleste.kt index 53ac642d0..f8656df7a 100644 --- a/src/it/demoneceleste/src/eu/kanade/tachiyomi/extension/it/demoneceleste/DemoneCeleste.kt +++ b/src/it/demoneceleste/src/eu/kanade/tachiyomi/extension/it/demoneceleste/DemoneCeleste.kt @@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.FormBody import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -36,7 +36,7 @@ class DemoneCeleste : ParsedHttpSource() { override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga", headers) override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/", headers) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search?sez=serie".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search?sez=serie".toHttpUrl().newBuilder() if (query.isNotEmpty()) { url.addQueryParameter("key", query) diff --git a/src/ja/nicovideoseiga/src/eu/kanade/tachiyomi/extension/ja/nicovideoseiga/NicovideoSeiga.kt b/src/ja/nicovideoseiga/src/eu/kanade/tachiyomi/extension/ja/nicovideoseiga/NicovideoSeiga.kt index 0c7f363f7..085565809 100644 --- a/src/ja/nicovideoseiga/src/eu/kanade/tachiyomi/extension/ja/nicovideoseiga/NicovideoSeiga.kt +++ b/src/ja/nicovideoseiga/src/eu/kanade/tachiyomi/extension/ja/nicovideoseiga/NicovideoSeiga.kt @@ -8,13 +8,13 @@ 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.util.asJsoup import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import okhttp3.ResponseBody.Companion.toResponseBody -import org.jsoup.Jsoup import uy.kohesive.injekt.injectLazy import kotlin.experimental.xor @@ -31,7 +31,7 @@ class NicovideoSeiga : HttpSource() { override fun latestUpdatesParse(response: Response): MangasPage { val currentPage = response.request.url.queryParameter("page")!!.toInt() - val doc = Jsoup.parse(response.body.string()) + val doc = response.asJsoup() val mangaCount = doc.select("#main_title > h2 > span").text().trim().dropLast(1).toInt() val mangaPerPage = 20 val mangaList = doc.select("#comic_list > ul > li") @@ -81,7 +81,7 @@ class NicovideoSeiga : HttpSource() { override fun searchMangaParse(response: Response): MangasPage { val currentPage = response.request.url.queryParameter("page")!!.toInt() - val doc = Jsoup.parse(response.body.string()) + val doc = response.asJsoup() val mangaCount = doc.select("#mg_wrapper > div > div.header > div.header__result-summary").text().trim() .split(":")[1].toInt() @@ -118,7 +118,7 @@ class NicovideoSeiga : HttpSource() { GET("$baseUrl/manga/search/?q=$query&page=$page&sort=score") override fun mangaDetailsParse(response: Response): SManga = SManga.create().apply { - val doc = Jsoup.parse(response.body.string()) + val doc = response.asJsoup() // The description is a mix of synopsis and news announcements // This is just how mangakas use this site description = @@ -144,7 +144,7 @@ class NicovideoSeiga : HttpSource() { } override fun chapterListParse(response: Response): List { - val doc = Jsoup.parse(response.body.string()) + val doc = response.asJsoup() val chapters = ArrayList() val chapterList = doc.select("#episode_list > ul > li") val mangaId = response.request.url.toUrl().toString().substringAfterLast('/').substringBefore('?') @@ -184,7 +184,7 @@ class NicovideoSeiga : HttpSource() { } override fun pageListParse(response: Response): List { - val doc = Jsoup.parse(response.body.string()) + val doc = response.asJsoup() val pages = ArrayList() // Nicovideo will refuse to serve any pages if the user has not logged in if (!doc.select("#login_manga").isEmpty()) { diff --git a/src/ja/rawdevart/src/eu/kanade/tachiyomi/extension/ja/rawdevart/Rawdevart.kt b/src/ja/rawdevart/src/eu/kanade/tachiyomi/extension/ja/rawdevart/Rawdevart.kt index 212ce243a..16da13309 100644 --- a/src/ja/rawdevart/src/eu/kanade/tachiyomi/extension/ja/rawdevart/Rawdevart.kt +++ b/src/ja/rawdevart/src/eu/kanade/tachiyomi/extension/ja/rawdevart/Rawdevart.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -57,7 +57,7 @@ class Rawdevart : ParsedHttpSource() { override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/".toHttpUrl().newBuilder() url.addQueryParameter("page", page.toString()) url.addQueryParameter("title", query) filters.forEach { filter -> @@ -150,7 +150,7 @@ class Rawdevart : ParsedHttpSource() { } } - return GET(url.build().toString(), headers) + return GET(url.build(), headers) } override fun searchMangaSelector() = latestUpdatesSelector() diff --git a/src/ja/senmanga/src/eu/kanade/tachiyomi/extension/ja/senmanga/SenManga.kt b/src/ja/senmanga/src/eu/kanade/tachiyomi/extension/ja/senmanga/SenManga.kt index fccaccc39..55617b2ed 100644 --- a/src/ja/senmanga/src/eu/kanade/tachiyomi/extension/ja/senmanga/SenManga.kt +++ b/src/ja/senmanga/src/eu/kanade/tachiyomi/extension/ja/senmanga/SenManga.kt @@ -9,7 +9,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import org.jsoup.nodes.Document import org.jsoup.nodes.Element @@ -65,7 +65,7 @@ class SenManga : ParsedHttpSource() { override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("s", query) .addQueryParameter("page", page.toString()) @@ -82,7 +82,7 @@ class SenManga : ParsedHttpSource() { else -> {} } } - return GET(url.toString(), headers) + return GET(url.build(), headers) } override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() diff --git a/src/ja/twi4/src/eu/kanade/tachiyomi/extension/ja/twi4/Twi4.kt b/src/ja/twi4/src/eu/kanade/tachiyomi/extension/ja/twi4/Twi4.kt index 214e7cff6..f6b1788ce 100644 --- a/src/ja/twi4/src/eu/kanade/tachiyomi/extension/ja/twi4/Twi4.kt +++ b/src/ja/twi4/src/eu/kanade/tachiyomi/extension/ja/twi4/Twi4.kt @@ -9,6 +9,7 @@ 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.util.asJsoup import kotlinx.serialization.json.Json import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject @@ -16,7 +17,6 @@ import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers import okhttp3.Request import okhttp3.Response -import org.jsoup.Jsoup import rx.Observable import uy.kohesive.injekt.injectLazy @@ -45,7 +45,7 @@ class Twi4 : HttpSource() { // As the full catalog is consists of less than 50 manga, it is not worth implementing // We'll just list all manga in the catalog instead override fun popularMangaParse(response: Response): MangasPage { - val doc = Jsoup.parse(response.body.string()) + val doc = response.asJsoup() val ret = mutableListOf() // Manga that are recently updated don't show up on the full catalog // So we'll need to parse the recent updates section as well @@ -89,7 +89,7 @@ class Twi4 : HttpSource() { GET(getUrlDomain() + manga.url, getChromeHeaders()) override fun mangaDetailsParse(response: Response): SManga { - val document = Jsoup.parse(response.body.string()) + val document = response.asJsoup() return SManga.create().apply { // We need to get the title and thumbnail again. // This is only needed if you search by slug, as we have no information about the them. @@ -137,7 +137,7 @@ class Twi4 : HttpSource() { // They have a