diff --git a/README.md b/README.md index 330570e..65f2ee1 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Gradle Groovy DSL ```groovy plugins { id "org.springframework.boot" version "2.7.0" - id "org.springdoc.openapi-gradle-plugin" version "1.4.0" + id "org.springdoc.openapi-gradle-plugin" version "1.5.0" } ``` @@ -35,7 +35,7 @@ Gradle Kotlin DSL ```groovy plugins { id("org.springframework.boot") version "2.7.0" - id("org.springdoc.openapi-gradle-plugin") version "1.4.0" + id("org.springdoc.openapi-gradle-plugin") version "1.5.0" } ``` @@ -133,7 +133,7 @@ The `groupedApiMappings` customization allows you to specify multiple URLs/file 2. Update the version for the plugin to match the current version found in `build.gradle.kts` ``` - id("org.springdoc.openapi-gradle-plugin") version "1.4.0" + id("org.springdoc.openapi-gradle-plugin") version "1.5.0" ``` 3. Add the following to the spring boot apps `settings.gradle` diff --git a/build.gradle.kts b/build.gradle.kts index ca6a6f0..f35ed5c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { } group = "org.springdoc" -version = "1.4.0" +version = "1.5.0" sonarqube { properties { @@ -46,7 +46,6 @@ publishing { dependencies { implementation(kotlin("reflect")) - implementation("khttp:khttp:1.0.0") implementation("com.google.code.gson:gson:2.8.6") implementation("org.awaitility:awaitility-kotlin:4.0.3") implementation("com.github.psxpaul:gradle-execfork-plugin:0.2.0") diff --git a/src/main/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGeneratorTask.kt b/src/main/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGeneratorTask.kt index 19ab113..957ff86 100644 --- a/src/main/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGeneratorTask.kt +++ b/src/main/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGeneratorTask.kt @@ -2,7 +2,6 @@ package org.springdoc.openapi.gradle.plugin import com.google.gson.GsonBuilder import com.google.gson.JsonObject -import khttp.responses.Response import org.awaitility.Durations import org.awaitility.core.ConditionTimeoutException import org.awaitility.kotlin.* @@ -15,6 +14,8 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction import java.net.ConnectException +import java.net.HttpURLConnection +import java.net.URL import java.time.Duration import java.time.temporal.ChronoUnit.SECONDS @@ -63,19 +64,26 @@ open class OpenApiGeneratorTask : DefaultTask() { private fun generateApiDocs(url: String, fileName: String) { try { + val isYaml = url.toLowerCase().matches(Regex(".+[./]yaml(/.+)*")) await ignoreException ConnectException::class withPollInterval Durations.ONE_SECOND atMost Duration.of( waitTimeInSeconds.get().toLong(), SECONDS ) until { - val statusCode = khttp.get(url).statusCode + val connection: HttpURLConnection = URL(url).openConnection() as HttpURLConnection + connection.requestMethod = "GET" + connection.connect() + val statusCode = connection.responseCode logger.trace("apiDocsUrl = {} status code = {}", url, statusCode) statusCode < MAX_HTTP_STATUS_CODE } logger.info("Generating OpenApi Docs..") - val response: Response = khttp.get(url) + val connection: HttpURLConnection = URL(url).openConnection() as HttpURLConnection + connection.requestMethod = "GET" + connection.connect() - val isYaml = url.toLowerCase().matches(Regex(".+[./]yaml(/.+)*")) - val apiDocs = if (isYaml) response.text else prettifyJson(response) + val response = String(connection.inputStream.readBytes(), Charsets.UTF_8) + + val apiDocs = if (isYaml) response else prettifyJson(response) val outputFile = outputDir.file(fileName).get().asFile outputFile.writeText(apiDocs) @@ -85,9 +93,9 @@ open class OpenApiGeneratorTask : DefaultTask() { } } - private fun prettifyJson(response: Response): String { + private fun prettifyJson(response: String): String { val gson = GsonBuilder().setPrettyPrinting().create() - val googleJsonObject = gson.fromJson(response.text, JsonObject::class.java) + val googleJsonObject = gson.fromJson(response, JsonObject::class.java) return gson.toJson(googleJsonObject) } } diff --git a/src/test/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePluginTest.kt b/src/test/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePluginTest.kt index 1d5f5e9..4aae9dd 100644 --- a/src/test/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePluginTest.kt +++ b/src/test/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePluginTest.kt @@ -43,7 +43,7 @@ class OpenApiGradlePluginTest { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springdoc:springdoc-openapi-webmvc-core:1.4.0' + implementation 'org.springdoc:springdoc-openapi-webmvc-core:1.6.12' } """.trimIndent()