diff --git a/.gitignore b/.gitignore index b6e9185..4409550 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +.kotlin out/* *.iml target diff --git a/CHANGELOG.md b/CHANGELOG.md index f0f2940..b6fa5d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## 0.18.0 +* Versions: + * `Kotlin`: `2.1.0` + * `Serialization`: `1.7.3` + * `Coroutines`: `1.9.0` + * `Ktor`: `3.0.2` + * `MicroUtils`: `0.23.2` + * `Klock`: `5.4.0` + ## 0.17.2 * Versions: diff --git a/build.gradle b/build.gradle index ec8d212..dba7e6d 100644 --- a/build.gradle +++ b/build.gradle @@ -25,13 +25,14 @@ apply from: "github_release.gradle" repositories { mavenLocal() mavenCentral() + maven { url "https://nexus.inmo.dev/repository/maven-releases/" } } kotlin { jvm { compilations.main { kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } } } @@ -78,6 +79,6 @@ kotlin { } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e38e259..a87289b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,15 +1,15 @@ [versions] -kt = "1.8.22" -kt-serialization = "1.5.1" -kt-coroutines = "1.7.3" +kt = "2.1.0" +kt-serialization = "1.7.3" +kt-coroutines = "1.9.0" -klock = "4.0.3" -ktor = "2.3.4" +klock = "5.4.0" +ktor = "3.0.2" -microutils = "0.19.9" +microutils = "0.23.2" -gh-release = "2.4.1" +gh-release = "2.5.2" [libraries] @@ -17,7 +17,7 @@ kt-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kt" kt-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kt-serialization" } kt-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kt-coroutines" } -klock = { module = "com.soywiz.korlibs.klock:klock", version.ref = "klock" } +klock = { module = "com.soywiz.korge:korlibs-time", version.ref = "klock" } ktor-client = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cdd7878..804a071 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip diff --git a/publish.gradle b/publish.gradle index b0d96bd..810360b 100644 --- a/publish.gradle +++ b/publish.gradle @@ -1,7 +1,7 @@ apply plugin: 'maven-publish' task javadocsJar(type: Jar) { - classifier = 'javadoc' + archiveClassifier = 'javadoc' } publishing { @@ -50,18 +50,14 @@ publishing { } } - if (project.hasProperty('GITEA_TOKEN') || System.getenv('GITEA_TOKEN') != null) { + if ((project.hasProperty('INMONEXUS_USER') || System.getenv('INMONEXUS_USER') != null) && (project.hasProperty('INMONEXUS_PASSWORD') || System.getenv('INMONEXUS_PASSWORD') != null)) { maven { - name = "Gitea" - url = uri("https://git.inmo.dev/api/packages/InsanusMokrassar/maven") + name = "InmoNexus" + url = uri("https://nexus.inmo.dev/repository/maven-releases/") - credentials(HttpHeaderCredentials) { - name = "Authorization" - value = project.hasProperty('GITEA_TOKEN') ? project.property('GITEA_TOKEN') : System.getenv('GITEA_TOKEN') - } - - authentication { - header(HttpHeaderAuthentication) + credentials { + username = project.hasProperty('INMONEXUS_USER') ? project.property('INMONEXUS_USER') : System.getenv('INMONEXUS_USER') + password = project.hasProperty('INMONEXUS_PASSWORD') ? project.property('INMONEXUS_PASSWORD') : System.getenv('INMONEXUS_PASSWORD') } } @@ -96,4 +92,27 @@ if (project.hasProperty("signing.gnupg.keyName")) { dependsOn(it) } } + + // Workaround to make android sign operations depend on signing tasks + project.getTasks().withType(AbstractPublishToMaven.class).configureEach { + def signingTasks = project.getTasks().withType(Sign.class) + mustRunAfter(signingTasks) + } + // Workaround to make test tasks use sign + project.getTasks().withType(Sign.class).configureEach { signTask -> + def withoutSign = (signTask.name.startsWith("sign") ? signTask.name.minus("sign") : signTask.name) + def pubName = withoutSign.endsWith("Publication") ? withoutSign.substring(0, withoutSign.length() - "Publication".length()) : withoutSign + // These tasks only exist for native targets, hence findByName() to avoid trying to find them for other targets + + // Task ':linkDebugTest' uses this output of task ':signPublication' without declaring an explicit or implicit dependency + def debugTestTask = tasks.findByName("linkDebugTest$pubName") + if (debugTestTask != null) { + signTask.mustRunAfter(debugTestTask) + } + // Task ':compileTestKotlin' uses this output of task ':signPublication' without declaring an explicit or implicit dependency + def testTask = tasks.findByName("compileTestKotlin$pubName") + if (testTask != null) { + signTask.mustRunAfter(testTask) + } + } } diff --git a/publish.kpsb b/publish.kpsb index dd1ee2f..256ca27 100644 --- a/publish.kpsb +++ b/publish.kpsb @@ -1 +1 @@ -{"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://github.com/InsanusMokrassar/SauceNaoAPI/blob/master/LICENSE"}],"mavenConfig":{"name":"SauceNao API","description":"SauceNao API library","url":"https://insanusmokrassar.github.io/${project.name}","vcsUrl":"https://github.com/insanusmokrassar/${project.name}.git","developers":[{"id":"InsanusMokrassar","name":"Ovsyannikov Alexey","eMail":"ovsyannikov.alexey95@gmail.com"}],"repositories":[{"name":"GithubPackages","url":"https://maven.pkg.github.com/InsanusMokrassar/SauceNaoAPI"},{"name":"Gitea","url":"https://git.inmo.dev/api/packages/InsanusMokrassar/maven","credsType":{"type":"dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository.CredentialsType.HttpHeaderCredentials","headerName":"Authorization","headerValueProperty":"GITEA_TOKEN"}},{"name":"sonatype","url":"https://oss.sonatype.org/service/local/staging/deploy/maven2/"}],"gpgSigning":{"type":"dev.inmo.kmppscriptbuilder.core.models.GpgSigning.Optional"}}} \ No newline at end of file +{"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://github.com/InsanusMokrassar/SauceNaoAPI/blob/master/LICENSE"}],"mavenConfig":{"name":"SauceNao API","description":"SauceNao API library","url":"https://insanusmokrassar.github.io/${project.name}","vcsUrl":"https://github.com/insanusmokrassar/${project.name}.git","developers":[{"id":"InsanusMokrassar","name":"Ovsyannikov Alexey","eMail":"ovsyannikov.alexey95@gmail.com"}],"repositories":[{"name":"GithubPackages","url":"https://maven.pkg.github.com/InsanusMokrassar/SauceNaoAPI"},{"name":"InmoNexus","url":"https://nexus.inmo.dev/repository/maven-releases/"},{"name":"sonatype","url":"https://oss.sonatype.org/service/local/staging/deploy/maven2/"}],"gpgSigning":{"type":"dev.inmo.kmppscriptbuilder.core.models.GpgSigning.Optional"}}} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 3ef5da6..82bcc88 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1 @@ rootProject.name = 'saucenaoapi' - -enableFeaturePreview("VERSION_CATALOGS") diff --git a/src/commonMain/kotlin/dev/inmo/saucenaoapi/utils/RequestQuotaManager.kt b/src/commonMain/kotlin/dev/inmo/saucenaoapi/utils/RequestQuotaManager.kt index c75f313..3c1c220 100644 --- a/src/commonMain/kotlin/dev/inmo/saucenaoapi/utils/RequestQuotaManager.kt +++ b/src/commonMain/kotlin/dev/inmo/saucenaoapi/utils/RequestQuotaManager.kt @@ -7,6 +7,7 @@ import dev.inmo.saucenaoapi.exceptions.TooManyRequestsException import dev.inmo.saucenaoapi.exceptions.TooManyRequestsLongException import dev.inmo.saucenaoapi.models.Header import dev.inmo.saucenaoapi.models.LimitsState +import korlibs.time.millisecondsLong import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.MutableStateFlow