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"
+