add ktlint to project

This commit is contained in:
2024-02-27 14:03:35 +01:00
parent e39c38ced5
commit 5434c59129
8 changed files with 77 additions and 45 deletions

View File

@@ -1,3 +1,4 @@
@Suppress("ktlint:standard:property-naming")
val ktor_version: String by project val ktor_version: String by project
val kotlin_version: String by project val kotlin_version: String by project
val logback_version: String by project val logback_version: String by project
@@ -6,6 +7,7 @@ plugins {
kotlin("jvm") version "1.9.22" kotlin("jvm") version "1.9.22"
id("io.ktor.plugin") version "2.3.8" id("io.ktor.plugin") version "2.3.8"
id("org.jetbrains.kotlin.plugin.serialization") version "1.9.22" id("org.jetbrains.kotlin.plugin.serialization") version "1.9.22"
id("org.jlleitschuh.gradle.ktlint") version "12.1.0"
} }
group = "io.github.flecomte" group = "io.github.flecomte"

View File

@@ -1,9 +1,13 @@
package io.github.flecomte package io.github.flecomte
import io.github.flecomte.plugins.* import io.github.flecomte.plugins.configureHTTP
import io.ktor.server.application.* import io.github.flecomte.plugins.configureRouting
import io.ktor.server.engine.* import io.github.flecomte.plugins.configureSecurity
import io.ktor.server.netty.* import io.github.flecomte.plugins.configureSerialization
import io.github.flecomte.plugins.configureSockets
import io.ktor.server.application.Application
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty
fun main() { fun main() {
embeddedServer(Netty, port = 8080, host = "0.0.0.0", module = Application::module) embeddedServer(Netty, port = 8080, host = "0.0.0.0", module = Application::module)

View File

@@ -1,8 +1,10 @@
package io.github.flecomte.plugins package io.github.flecomte.plugins
import io.ktor.http.* import io.ktor.http.HttpHeaders
import io.ktor.server.application.* import io.ktor.http.HttpMethod
import io.ktor.server.plugins.cors.routing.* import io.ktor.server.application.Application
import io.ktor.server.application.install
import io.ktor.server.plugins.cors.routing.CORS
fun Application.configureHTTP() { fun Application.configureHTTP() {
install(CORS) { install(CORS) {

View File

@@ -1,14 +1,18 @@
package io.github.flecomte.plugins package io.github.flecomte.plugins
import io.ktor.http.* import io.ktor.http.HttpStatusCode
import io.ktor.resources.* import io.ktor.resources.Resource
import io.ktor.server.application.* import io.ktor.server.application.Application
import io.ktor.server.plugins.autohead.* import io.ktor.server.application.call
import io.ktor.server.plugins.statuspages.* import io.ktor.server.application.install
import io.ktor.server.resources.* import io.ktor.server.plugins.autohead.AutoHeadResponse
import io.ktor.server.plugins.statuspages.StatusPages
import io.ktor.server.resources.Resources import io.ktor.server.resources.Resources
import io.ktor.server.response.* import io.ktor.server.resources.get
import io.ktor.server.routing.* import io.ktor.server.response.respond
import io.ktor.server.response.respondText
import io.ktor.server.routing.get
import io.ktor.server.routing.routing
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
fun Application.configureRouting() { fun Application.configureRouting() {

View File

@@ -2,11 +2,19 @@ package io.github.flecomte.plugins
import com.auth0.jwt.JWT import com.auth0.jwt.JWT
import com.auth0.jwt.algorithms.Algorithm import com.auth0.jwt.algorithms.Algorithm
import io.ktor.server.application.* import io.ktor.server.application.Application
import io.ktor.server.auth.* import io.ktor.server.application.call
import io.ktor.server.auth.jwt.* import io.ktor.server.auth.UserIdPrincipal
import io.ktor.server.response.* import io.ktor.server.auth.authenticate
import io.ktor.server.routing.* import io.ktor.server.auth.authentication
import io.ktor.server.auth.basic
import io.ktor.server.auth.form
import io.ktor.server.auth.jwt.JWTPrincipal
import io.ktor.server.auth.jwt.jwt
import io.ktor.server.auth.principal
import io.ktor.server.response.respondText
import io.ktor.server.routing.get
import io.ktor.server.routing.routing
fun Application.configureSecurity() { fun Application.configureSecurity() {
// Please read the jwt property from the config file if you are using EngineMain // Please read the jwt property from the config file if you are using EngineMain
@@ -22,7 +30,7 @@ fun Application.configureSecurity() {
.require(Algorithm.HMAC256(jwtSecret)) .require(Algorithm.HMAC256(jwtSecret))
.withAudience(jwtAudience) .withAudience(jwtAudience)
.withIssuer(jwtDomain) .withIssuer(jwtDomain)
.build() .build(),
) )
validate { credential -> validate { credential ->
if (credential.payload.audience.contains(jwtAudience)) JWTPrincipal(credential.payload) else null if (credential.payload.audience.contains(jwtAudience)) JWTPrincipal(credential.payload) else null
@@ -45,7 +53,7 @@ fun Application.configureSecurity() {
userParamName = "user" userParamName = "user"
passwordParamName = "password" passwordParamName = "password"
challenge { challenge {
/**/ //
} }
} }
} }

View File

@@ -1,10 +1,13 @@
package io.github.flecomte.plugins package io.github.flecomte.plugins
import io.ktor.serialization.kotlinx.json.* import io.ktor.serialization.kotlinx.json.json
import io.ktor.server.application.* import io.ktor.server.application.Application
import io.ktor.server.plugins.contentnegotiation.* import io.ktor.server.application.call
import io.ktor.server.response.* import io.ktor.server.application.install
import io.ktor.server.routing.* import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
import io.ktor.server.response.respond
import io.ktor.server.routing.get
import io.ktor.server.routing.routing
fun Application.configureSerialization() { fun Application.configureSerialization() {
install(ContentNegotiation) { install(ContentNegotiation) {

View File

@@ -1,9 +1,16 @@
package io.github.flecomte.plugins package io.github.flecomte.plugins
import io.ktor.server.application.* import io.ktor.server.application.Application
import io.ktor.server.routing.* import io.ktor.server.application.install
import io.ktor.server.websocket.* import io.ktor.server.routing.routing
import io.ktor.websocket.* import io.ktor.server.websocket.WebSockets
import io.ktor.server.websocket.pingPeriod
import io.ktor.server.websocket.timeout
import io.ktor.server.websocket.webSocket
import io.ktor.websocket.CloseReason
import io.ktor.websocket.Frame
import io.ktor.websocket.close
import io.ktor.websocket.readText
import java.time.Duration import java.time.Duration
fun Application.configureSockets() { fun Application.configureSockets() {

View File

@@ -1,21 +1,23 @@
package io.github.flecomte package io.github.flecomte
import io.github.flecomte.plugins.* import io.github.flecomte.plugins.configureRouting
import io.ktor.client.request.* import io.ktor.client.request.get
import io.ktor.client.statement.* import io.ktor.client.statement.bodyAsText
import io.ktor.http.* import io.ktor.http.HttpStatusCode
import io.ktor.server.testing.* import io.ktor.server.testing.testApplication
import kotlin.test.* import kotlin.test.Test
import kotlin.test.assertEquals
class ApplicationTest { class ApplicationTest {
@Test @Test
fun testRoot() = testApplication { fun testRoot() =
application { testApplication {
configureRouting() application {
configureRouting()
}
client.get("/").apply {
assertEquals(HttpStatusCode.OK, status)
assertEquals("Hello World!", bodyAsText())
}
} }
client.get("/").apply {
assertEquals(HttpStatusCode.OK, status)
assertEquals("Hello World!", bodyAsText())
}
}
} }