diff --git a/Sources/pom.xml b/Sources/pom.xml index af54282..a9e4877 100644 --- a/Sources/pom.xml +++ b/Sources/pom.xml @@ -12,8 +12,7 @@ 1.5.0 2.3.4 official - 1.9.10 - 1.4.11 + 1.4.14 2.0.9 UTF-8 true @@ -42,6 +41,16 @@ ktor-server-netty-jvm ${ktor_version} + + io.github.smiley4 + ktor-swagger-ui + 2.7.4 + + + io.ktor + ktor-server-swagger-jvm + ${ktor_version} + org.ktorm ktorm-core @@ -101,7 +110,7 @@ org.jetbrains.kotlin kotlin-test-junit - ${kotlin_version} + ${kotlin.version} test @@ -120,6 +129,11 @@ ktor-server-auth-jvm 2.3.4 + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + com.auth0 java-jwt @@ -130,6 +144,11 @@ ktor-server-auth-jwt-jvm 2.3.4 + + io.swagger.codegen.v3 + swagger-codegen-generators + 1.0.38 + ${project.basedir}/src/main/kotlin @@ -143,7 +162,7 @@ kotlin-maven-plugin org.jetbrains.kotlin - ${kotlin_version} + ${kotlin.version} 1.8 diff --git a/Sources/src/main/kotlin/allin/Application.kt b/Sources/src/main/kotlin/allin/Application.kt index 4f2c22e..6286820 100644 --- a/Sources/src/main/kotlin/allin/Application.kt +++ b/Sources/src/main/kotlin/allin/Application.kt @@ -8,6 +8,9 @@ import allin.utils.TokenManager import allin.utils.TokenManager.Companion.Claims.USERNAME import allin.utils.kronJob import com.typesafe.config.ConfigFactory +import io.github.smiley4.ktorswaggerui.SwaggerUI +import io.github.smiley4.ktorswaggerui.data.SwaggerUiSort +import io.github.smiley4.ktorswaggerui.data.SwaggerUiSyntaxHighlight import io.ktor.serialization.kotlinx.json.* import io.ktor.server.application.* import io.ktor.server.auth.* @@ -17,6 +20,7 @@ import io.ktor.server.engine.* import io.ktor.server.netty.* import io.ktor.server.plugins.contentnegotiation.* import java.time.ZonedDateTime +import kotlin.time.Duration.Companion.minutes import kotlin.time.ExperimentalTime import kotlin.time.minutes @@ -56,6 +60,28 @@ private fun Application.extracted() { } } install(ContentNegotiation) { json() } + install(SwaggerUI){ + swagger { + forwardRoot = false + swaggerUrl = "swagger" + rootHostPath = "http://127.0.0.1:8080/" + authentication = "MySwaggerAuth" + onlineSpecValidator() + displayOperationId = true + showTagFilterInput = true + sort = SwaggerUiSort.HTTP_METHOD + syntaxHighlight = SwaggerUiSyntaxHighlight.MONOKAI + } + info { + title = "Allin API" + version = "latest" + description = "Allin API" + license { + name = "Apache 2.0" + url = "https://www.apache.org/licenses/LICENSE-2.0.html" + } + } + } BasicRouting() UserRouter() diff --git a/Sources/src/main/kotlin/allin/utils/kronJob.kt b/Sources/src/main/kotlin/allin/utils/kronJob.kt index f27710d..cd1d425 100644 --- a/Sources/src/main/kotlin/allin/utils/kronJob.kt +++ b/Sources/src/main/kotlin/allin/utils/kronJob.kt @@ -10,7 +10,7 @@ fun kronJob(duration: Duration, action: () -> Unit) = withContext(Dispatchers.IO) { while (true) { runCatching { action() } - delay(duration.toLongMilliseconds()) + delay(duration.inWholeMilliseconds) } } - } \ No newline at end of file + } diff --git a/Sources/src/main/resources/documentation.yaml b/Sources/src/main/resources/documentation.yaml new file mode 100644 index 0000000..9b05e13 --- /dev/null +++ b/Sources/src/main/resources/documentation.yaml @@ -0,0 +1,10 @@ +swagger: "2.0" +info: + title: Allin API + description: Title + version: 4.0.0 +host: www.Allin.fr +schemes: + - https +paths: "src/main/kotlin/allin" +