Update dependencies

pull/185/head
Koitharu 3 years ago
parent 875b08b1fc
commit c2b79b55f8
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="KotlinJpsPluginSettings"> <component name="KotlinJpsPluginSettings">
<option name="version" value="1.6.21" /> <option name="version" value="1.8.22" />
</component> </component>
</project> </project>

@ -18,10 +18,10 @@ compileKotlin {
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '1.8'
freeCompilerArgs += [ freeCompilerArgs += [
'-opt-in=kotlin.RequiresOptIn', '-opt-in=kotlin.RequiresOptIn',
'-opt-in=kotlin.contracts.ExperimentalContracts', '-opt-in=kotlin.contracts.ExperimentalContracts',
'-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi', '-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
'-opt-in=org.koitharu.kotatsu.parsers.InternalParsersApi', '-opt-in=org.koitharu.kotatsu.parsers.InternalParsersApi',
] ]
} }
} }
@ -30,9 +30,9 @@ compileTestKotlin {
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '1.8'
freeCompilerArgs += [ freeCompilerArgs += [
'-opt-in=kotlin.RequiresOptIn', '-opt-in=kotlin.RequiresOptIn',
'-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi', '-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
'-opt-in=org.koitharu.kotatsu.parsers.InternalParsersApi', '-opt-in=org.koitharu.kotatsu.parsers.InternalParsersApi',
] ]
} }
} }
@ -54,19 +54,19 @@ afterEvaluate {
} }
dependencies { dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
implementation 'com.squareup.okhttp3:okhttp:4.10.0' implementation 'com.squareup.okhttp3:okhttp:4.11.0'
implementation 'com.squareup.okio:okio:3.2.0' implementation 'com.squareup.okio:okio:3.3.0'
api 'org.jsoup:jsoup:1.15.3' api 'org.jsoup:jsoup:1.16.1'
implementation 'org.json:json:20220320' implementation 'org.json:json:20230618'
implementation 'androidx.collection:collection-ktx:1.2.0' implementation 'androidx.collection:collection-ktx:1.2.0'
ksp project(':kotatsu-parsers-ksp') ksp project(':kotatsu-parsers-ksp')
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.3'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.0' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.3'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.0' testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.3'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4' testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1'
testImplementation 'io.webfolder:quickjs:1.1.0' testImplementation 'io.webfolder:quickjs:1.1.0'
} }

@ -1,7 +1,7 @@
pluginManagement { pluginManagement {
plugins { plugins {
id 'com.google.devtools.ksp' version '1.6.21-1.0.5' id 'com.google.devtools.ksp' version '1.8.22-1.0.11'
id 'org.jetbrains.kotlin.jvm' version '1.6.21' id 'org.jetbrains.kotlin.jvm' version '1.8.22'
} }
repositories { repositories {
gradlePluginPortal() gradlePluginPortal()

@ -65,6 +65,7 @@ internal class BatoToParser(context: MangaLoaderContext) : PagedMangaParser(
SortOrder.POPULARITY -> append("views_a.za") SortOrder.POPULARITY -> append("views_a.za")
SortOrder.NEWEST -> append("create.za") SortOrder.NEWEST -> append("create.za")
SortOrder.ALPHABETICAL -> append("title.az") SortOrder.ALPHABETICAL -> append("title.az")
SortOrder.RATING -> Unit
} }
if (!tags.isNullOrEmpty()) { if (!tags.isNullOrEmpty()) {
append("&genres=") append("&genres=")

@ -8,27 +8,27 @@ import org.koitharu.kotatsu.parsers.util.runCatchingCancellable
class AuthCheckExtension : BeforeAllCallback { class AuthCheckExtension : BeforeAllCallback {
private val loaderContext: MangaLoaderContext = MangaLoaderContextMock private val loaderContext: MangaLoaderContext = MangaLoaderContextMock
override fun beforeAll(context: ExtensionContext) { override fun beforeAll(context: ExtensionContext) {
for (source in MangaSource.values()) { for (source in MangaSource.values()) {
if (source == MangaSource.LOCAL || source == MangaSource.DUMMY) { if (source == MangaSource.LOCAL || source == MangaSource.DUMMY) {
continue continue
} }
val parser = source.newParser(loaderContext) val parser = loaderContext.newParserInstance(source)
if (parser is MangaParserAuthProvider) { if (parser is MangaParserAuthProvider) {
checkAuthorization(source, parser) checkAuthorization(source, parser)
} }
} }
} }
private fun checkAuthorization(source: MangaSource, parser: MangaParserAuthProvider) = runTest { private fun checkAuthorization(source: MangaSource, parser: MangaParserAuthProvider) = runTest {
runCatchingCancellable { runCatchingCancellable {
parser.getUsername() parser.getUsername()
}.onSuccess { username -> }.onSuccess { username ->
println("Signed in to ${source.name} as $username") println("Signed in to ${source.name} as $username")
}.onFailure { error -> }.onFailure { error ->
System.err.println("Auth failed for ${source.name}: ${error.javaClass.name}(${error.message})") System.err.println("Auth failed for ${source.name}: ${error.javaClass.name}(${error.message})")
} }
} }
} }

@ -11,37 +11,37 @@ private const val HEADER_USER_AGENT = "User-Agent"
private const val HEADER_REFERER = "Referer" private const val HEADER_REFERER = "Referer"
internal class CommonHeadersInterceptor( internal class CommonHeadersInterceptor(
private val userAgent: String, private val userAgent: String,
) : Interceptor { ) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response { override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request() val request = chain.request()
val source = request.tag(MangaSource::class.java) val source = request.tag(MangaSource::class.java)
val parser = source?.newParser(MangaLoaderContextMock) val parser = source?.let { MangaLoaderContextMock.newParserInstance(it) }
val sourceHeaders = parser?.headers val sourceHeaders = parser?.headers
val headersBuilder = request.headers.newBuilder() val headersBuilder = request.headers.newBuilder()
if (sourceHeaders != null) { if (sourceHeaders != null) {
headersBuilder.mergeWith(sourceHeaders, replaceExisting = false) headersBuilder.mergeWith(sourceHeaders, replaceExisting = false)
} }
if (headersBuilder[HEADER_USER_AGENT] == null) { if (headersBuilder[HEADER_USER_AGENT] == null) {
headersBuilder[HEADER_USER_AGENT] = userAgent headersBuilder[HEADER_USER_AGENT] = userAgent
} }
if (headersBuilder[HEADER_REFERER] == null && parser != null) { if (headersBuilder[HEADER_REFERER] == null && parser != null) {
headersBuilder[HEADER_REFERER] = "https://${parser.domain}/" headersBuilder[HEADER_REFERER] = "https://${parser.domain}/"
} }
val newRequest = request.newBuilder().headers(headersBuilder.build()).build() val newRequest = request.newBuilder().headers(headersBuilder.build()).build()
return if (parser is Interceptor) { return if (parser is Interceptor) {
parser.intercept(ProxyChain(chain, newRequest)) parser.intercept(ProxyChain(chain, newRequest))
} else { } else {
return chain.proceed(newRequest) return chain.proceed(newRequest)
} }
} }
private class ProxyChain( private class ProxyChain(
private val delegate: Interceptor.Chain, private val delegate: Interceptor.Chain,
private val request: Request, private val request: Request,
) : Interceptor.Chain by delegate { ) : Interceptor.Chain by delegate {
override fun request(): Request = request override fun request(): Request = request
} }
} }

Loading…
Cancel
Save