整理Route

This commit is contained in:
Raymond Yang 2023-06-21 13:44:23 +08:00
parent a361978101
commit 448a504723
7 changed files with 128 additions and 65 deletions

View File

@ -10,9 +10,10 @@ fun main(args: Array<String>): Unit =
@Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused.
fun Application.module() {
configureSecurity()
configureSerialization()
configureRouting()
configureModules()
configureCharacter()
configureRankTable()
configureUser()
}
fun md5encode(password: String): String {

View File

@ -0,0 +1,40 @@
package com.ray650128.plugins
import io.ktor.serialization.gson.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.response.*
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.routing.*
fun Application.configureCharacter() {
routing {
route("/api") {
route("/v1") {
get("/characters") {
call.respond(mapOf("hello" to "world"))
}
route("/character") {
get("/{id}") {
call.respond(mapOf("hello" to "world"))
}
authenticate {
post {
}
put {
}
delete("/{id}") {
}
}
}
}
}
}
}

View File

@ -0,0 +1,45 @@
package com.ray650128.plugins
import io.ktor.server.auth.*
import io.ktor.server.auth.jwt.*
import com.ray650128.JwtConfig
import io.ktor.http.*
import io.ktor.serialization.gson.*
import io.ktor.server.application.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.cors.routing.*
fun Application.configureModules() {
authentication {
jwt {
realm = JwtConfig.jwtRealm
verifier(JwtConfig.verifier)
validate { credential ->
if (credential.payload.audience.contains(JwtConfig.jwtAudience)) {
JWTPrincipal(credential.payload)
} else null
}
}
}
install(ContentNegotiation) {
gson {
}
}
install(CORS) {
allowHeader(HttpHeaders.AccessControlAllowOrigin)
allowHeader(HttpHeaders.Accept)
allowHeader(HttpHeaders.ContentType)
anyHost()
allowMethod(HttpMethod.Options)
allowMethod(HttpMethod.Get)
allowMethod(HttpMethod.Post)
allowMethod(HttpMethod.Put)
allowMethod(HttpMethod.Delete)
allowHeader(HttpHeaders.Authorization)
allowCredentials = true
allowNonSimpleContentTypes = true
}
}

View File

@ -0,0 +1,38 @@
package com.ray650128.plugins
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
fun Application.configureRankTable() {
routing {
route("/api") {
route("/v1") {
route("/table") {
get("/{authorId}") {
call.respond(mapOf("hello" to "world"))
}
get("/{authorId}/{date}") {
call.respond(mapOf("hello" to "world"))
}
authenticate {
post {
}
put {
}
delete("/{id}") {
}
}
}
}
}
}
}

View File

@ -1,26 +0,0 @@
package com.ray650128.plugins
import io.ktor.server.auth.*
import io.ktor.server.auth.jwt.*
import com.auth0.jwt.JWT
import com.auth0.jwt.algorithms.Algorithm
import com.ray650128.JwtConfig
import io.ktor.server.sessions.*
import io.ktor.server.response.*
import io.ktor.server.application.*
import io.ktor.server.routing.*
fun Application.configureSecurity() {
authentication {
jwt {
realm = JwtConfig.jwtRealm
verifier(JwtConfig.verifier)
validate { credential ->
if (credential.payload.audience.contains(JwtConfig.jwtAudience)) {
JWTPrincipal(credential.payload)
} else null
}
}
}
}

View File

@ -1,19 +0,0 @@
package com.ray650128.plugins
import io.ktor.serialization.gson.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.response.*
import io.ktor.server.application.*
import io.ktor.server.routing.*
fun Application.configureSerialization() {
install(ContentNegotiation) {
gson {
}
}
routing {
get("/json/gson") {
call.respond(mapOf("hello" to "world"))
}
}
}

View File

@ -16,23 +16,7 @@ import io.ktor.server.response.*
import io.ktor.server.routing.*
import java.io.File
fun Application.configureRouting() {
install(CORS) {
allowHeader(HttpHeaders.AccessControlAllowOrigin)
allowHeader(HttpHeaders.Accept)
allowHeader(HttpHeaders.ContentType)
anyHost()
allowMethod(HttpMethod.Options)
allowMethod(HttpMethod.Get)
allowMethod(HttpMethod.Post)
allowMethod(HttpMethod.Put)
allowMethod(HttpMethod.Delete)
allowHeader(HttpHeaders.Authorization)
allowCredentials = true
allowNonSimpleContentTypes = true
}
fun Application.configureUser() {
routing {
route("/api") {
route("/v1") {